diff --git a/scripts/build.py b/scripts/build.py index 66960e8..56b3d22 100644 --- a/scripts/build.py +++ b/scripts/build.py @@ -13,30 +13,21 @@ #'heasoft' ) -class Builder: - """Class for managing the docker build commands +class TaskRunner: + """Class for managing logging and system calls""" - It mainly manages the system calls and logging and keeping track - of globals like dryrun etc. - """ - def __init__(self, repository, logger, registry='ghcr.io', dryrun=False): - """Create a new Builder + def __init__(self, logger, dryrun=False): + """Create a new TaskRunner Parameters: ----------- - repository: str - Repository name. e.g. nasa-fornax/fornax-images logger: logging.Logger Logging object - registry: str - Name of the docker registry. Default: ghcr.io dryrun: bool If True, print the commands without running them """ - self.repository = repository self.logger = logger - self.registry = registry self.dryrun = dryrun def out(self, msg, severity=logging.INFO): @@ -81,6 +72,29 @@ def run(self, command, timeout, **runargs): ) return result + +class Builder(TaskRunner): + """Class for managing the docker build commands""" + + def __init__(self, repository, logger, registry='ghcr.io', dryrun=False): + """Create a new Builder + + Parameters: + ----------- + repository: str + Repository name. e.g. nasa-fornax/fornax-images + logger: logging.Logger + Logging object + registry: str + Name of the docker registry. Default: ghcr.io + dryrun: bool + If True, print the commands without running them + + """ + super().__init__(logger, dryrun) + self.repository = repository + self.registry = registry + def check_tag(self, tag): """Check the tag""" if not isinstance(tag, str) or ':' in tag: diff --git a/tests/test_build_code.py b/tests/test_build_code.py index 7f9651d..904941b 100644 --- a/tests/test_build_code.py +++ b/tests/test_build_code.py @@ -10,20 +10,14 @@ sys.path.insert(0, f'{os.path.dirname(__file__)}/../scripts/') -from build import Builder +from build import TaskRunner, Builder - -class TestBuilder(unittest.TestCase): +class TestTaskRunner(unittest.TestCase): def setUp(self): logger = logging.getLogger() - self.repo = 'some-repo' - self.registry = 'my-registry' - self.tag = 'some-tag' - self.image = 'some-image' - - self.builder_run = Builder(self.repo, logger, registry=self.registry, dryrun=False) - self.builder_dry = Builder(self.repo, logger, registry=self.registry, dryrun=True) + self.builder_run = TaskRunner(logger, dryrun=False) + self.builder_dry = TaskRunner(logger, dryrun=True) self.logger = logger def test_run(self): @@ -40,13 +34,26 @@ def test_out(self): self.assertEqual(msg, output.split(':')[-1].strip()) self.logger.handlers.clear() - def test_dryrun(self): out = self.builder_dry.run('ls', timeout=100, capture_output=True) self.assertEqual(out, None) out = self.builder_run.run('ls', timeout=100, capture_output=True) self.assertNotEqual(out, None) + + +class TestBuilder(unittest.TestCase): + + def setUp(self): + logger = logging.getLogger() + self.repo = 'some-repo' + self.registry = 'my-registry' + self.tag = 'some-tag' + self.image = 'some-image' + + self.builder_run = Builder(self.repo, logger, registry=self.registry, dryrun=False) + self.builder_dry = Builder(self.repo, logger, registry=self.registry, dryrun=True) + self.logger = logger def test_get_full_tag(self): full_tag = self.builder_dry.get_full_tag(self.image, self.tag)