"""Keep unit-test workflow commands out of the real CI job files.""" import os import tempfile import unittest from pathlib import Path from unittest.mock import patch CI_COMMAND_FILES = ('GITHUB_STEP_SUMMARY', 'GITHUB_OUTPUT', 'GITHUB_ENV', 'GITHUB_PATH', 'GITHUB_STATE') class IsolatedCITestCase(unittest.TestCase): def setUp(self): super().setUp() directory = tempfile.TemporaryDirectory(prefix='homelab-test-ci-') self.addCleanup(directory.cleanup) paths = {} for variable in CI_COMMAND_FILES: path = Path(directory.name) / variable path.touch() paths[variable] = str(path) environment = patch.dict(os.environ, paths) environment.start() self.addCleanup(environment.stop)