Loading .gitlab-ci.yml +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ include: inputs: image: "registry.hub.docker.com/library/python:3.12" ruff-enabled: true pytest-enabled: true package-enabled: true release-enabled: true sbom-disabled: true Loading tests/helper.py 0 → 100644 +44 −0 Original line number Diff line number Diff line from tbc_check import checker def make_var_fixture(name: str, description: str, default: str, type: checker.TbcVarType): input_name = name.lower().replace("_","-") input_type = None if type == checker.TbcVarType.boolean: input_type = "boolean" elif type == checker.TbcVarType.text: input_type = "string" return { "tbc_var": checker.TbcVar( name=name, description=description, type=type, default=default ), "var_prefix": "", "tpl_spec": { "spec": { "inputs" : { input_name: { "description": description, "type": input_type, "default": default } } } }, "tpl_body": { "variables": { name: f"$[[ inputs.{input_name} ]]" } }, "root_kicker": None, "doc_vars": [checker.DocVar( var_name=name, input_name=input_name, description=description, default_cell=f"`{default}`", lock=False )] } tests/test_check_job.py 0 → 100644 +35 −0 Original line number Diff line number Diff line import pytest from tbc_check import checker def test_check_job_good_jobs(capfd: pytest.CaptureFixture[str]): tpl_body = { "workflow": None, "variables": None, "stages": None, ".hidden": None, "prefix-job1": {}, "prefix-job2": {}, } res = checker._check_job("prefix-job1", tpl_body, "prefix") out, err = capfd.readouterr() assert out == ("") def test_check_job_bad_jobs(capfd: pytest.CaptureFixture[str]): tpl_body = { "workflow": None, "variables": None, "stages": None, ".hidden": None, "bad-prefix-job1": {}, "bad-prefix-job2": {}, } res = checker._check_job("bad-prefix-job1", tpl_body, "prefix") out, err = capfd.readouterr() assert out == ( " \x1b[0;31m✕ job <bad-prefix-job1>: doesn't start with prefix (prefix)\x1b[0m\n" ) tests/test_check_var.py 0 → 100644 +73 −0 Original line number Diff line number Diff line import helper import pytest from tbc_check import checker KICKER_VAR_STRING = helper.make_var_fixture( name="A_STRING", description="string var", type=checker.TbcVarType.text, default="some_value", ) KICKER_VAR_STRING_W_EMPTY_DEFAULT = helper.make_var_fixture( name="A_STRING", description="string var", type=checker.TbcVarType.text, default="" ) KICKER_VAR_IMAGE = helper.make_var_fixture( name="TEST_IMAGE", description="test image", type=checker.TbcVarType.text, default="registry.hub.docker.com/library/test:latest", ) KICKER_VAR_IMAGE_W_NO_REGISTRY = helper.make_var_fixture( name="TEST_IMAGE", description="test image", type=checker.TbcVarType.text, default="test:latest", ) KICKER_VAR_IMAGE_W_UNCOMMON_HOST = helper.make_var_fixture( name="TEST_IMAGE", description="test image", type=checker.TbcVarType.text, default="registry.acme.tbc/test:latest", ) def test_check_var_a_string(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_STRING) out, err = capfd.readouterr() assert out == (" \x1b[0;32m✓\x1b[0m <A_STRING/a-string>: OK\n") def test_check_var_a_string_w_empty_default(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_STRING_W_EMPTY_DEFAULT) out, err = capfd.readouterr() assert out == ( " \x1b[0;31m✕ <A_STRING>: empty default shall be omitted in Kicker\x1b[0m\n" ) def test_check_var_image_registry_good(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_IMAGE) out, err = capfd.readouterr() assert out == (" \x1b[0;32m✓\x1b[0m <TEST_IMAGE/test-image>: OK\n") def test_check_var_image_registry_bad(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_IMAGE_W_NO_REGISTRY) out, err = capfd.readouterr() assert out == ( " \x1b[0;31m✕ <TEST_IMAGE>: container images must explicitly specify the registry\x1b[0m\n" ) # def test_check_var_image_registry_uncommon(capfd: pytest.CaptureFixture[str]): # res = checker._check_var(**KICKER_VAR_IMAGE_W_UNCOMMON_HOST) # out, err = capfd.readouterr() # assert out == ( # " \x1b[0;33m⚠ <TEST_IMAGE/test-image> uses a less common registry host 'registry.acme.tbc'\x1b[0m\n" # " \x1b[0;32m✓\x1b[0m <TEST_IMAGE/test-image>: OK\n" # ) Loading
.gitlab-ci.yml +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ include: inputs: image: "registry.hub.docker.com/library/python:3.12" ruff-enabled: true pytest-enabled: true package-enabled: true release-enabled: true sbom-disabled: true Loading
tests/helper.py 0 → 100644 +44 −0 Original line number Diff line number Diff line from tbc_check import checker def make_var_fixture(name: str, description: str, default: str, type: checker.TbcVarType): input_name = name.lower().replace("_","-") input_type = None if type == checker.TbcVarType.boolean: input_type = "boolean" elif type == checker.TbcVarType.text: input_type = "string" return { "tbc_var": checker.TbcVar( name=name, description=description, type=type, default=default ), "var_prefix": "", "tpl_spec": { "spec": { "inputs" : { input_name: { "description": description, "type": input_type, "default": default } } } }, "tpl_body": { "variables": { name: f"$[[ inputs.{input_name} ]]" } }, "root_kicker": None, "doc_vars": [checker.DocVar( var_name=name, input_name=input_name, description=description, default_cell=f"`{default}`", lock=False )] }
tests/test_check_job.py 0 → 100644 +35 −0 Original line number Diff line number Diff line import pytest from tbc_check import checker def test_check_job_good_jobs(capfd: pytest.CaptureFixture[str]): tpl_body = { "workflow": None, "variables": None, "stages": None, ".hidden": None, "prefix-job1": {}, "prefix-job2": {}, } res = checker._check_job("prefix-job1", tpl_body, "prefix") out, err = capfd.readouterr() assert out == ("") def test_check_job_bad_jobs(capfd: pytest.CaptureFixture[str]): tpl_body = { "workflow": None, "variables": None, "stages": None, ".hidden": None, "bad-prefix-job1": {}, "bad-prefix-job2": {}, } res = checker._check_job("bad-prefix-job1", tpl_body, "prefix") out, err = capfd.readouterr() assert out == ( " \x1b[0;31m✕ job <bad-prefix-job1>: doesn't start with prefix (prefix)\x1b[0m\n" )
tests/test_check_var.py 0 → 100644 +73 −0 Original line number Diff line number Diff line import helper import pytest from tbc_check import checker KICKER_VAR_STRING = helper.make_var_fixture( name="A_STRING", description="string var", type=checker.TbcVarType.text, default="some_value", ) KICKER_VAR_STRING_W_EMPTY_DEFAULT = helper.make_var_fixture( name="A_STRING", description="string var", type=checker.TbcVarType.text, default="" ) KICKER_VAR_IMAGE = helper.make_var_fixture( name="TEST_IMAGE", description="test image", type=checker.TbcVarType.text, default="registry.hub.docker.com/library/test:latest", ) KICKER_VAR_IMAGE_W_NO_REGISTRY = helper.make_var_fixture( name="TEST_IMAGE", description="test image", type=checker.TbcVarType.text, default="test:latest", ) KICKER_VAR_IMAGE_W_UNCOMMON_HOST = helper.make_var_fixture( name="TEST_IMAGE", description="test image", type=checker.TbcVarType.text, default="registry.acme.tbc/test:latest", ) def test_check_var_a_string(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_STRING) out, err = capfd.readouterr() assert out == (" \x1b[0;32m✓\x1b[0m <A_STRING/a-string>: OK\n") def test_check_var_a_string_w_empty_default(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_STRING_W_EMPTY_DEFAULT) out, err = capfd.readouterr() assert out == ( " \x1b[0;31m✕ <A_STRING>: empty default shall be omitted in Kicker\x1b[0m\n" ) def test_check_var_image_registry_good(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_IMAGE) out, err = capfd.readouterr() assert out == (" \x1b[0;32m✓\x1b[0m <TEST_IMAGE/test-image>: OK\n") def test_check_var_image_registry_bad(capfd: pytest.CaptureFixture[str]): res = checker._check_var(**KICKER_VAR_IMAGE_W_NO_REGISTRY) out, err = capfd.readouterr() assert out == ( " \x1b[0;31m✕ <TEST_IMAGE>: container images must explicitly specify the registry\x1b[0m\n" ) # def test_check_var_image_registry_uncommon(capfd: pytest.CaptureFixture[str]): # res = checker._check_var(**KICKER_VAR_IMAGE_W_UNCOMMON_HOST) # out, err = capfd.readouterr() # assert out == ( # " \x1b[0;33m⚠ <TEST_IMAGE/test-image> uses a less common registry host 'registry.acme.tbc'\x1b[0m\n" # " \x1b[0;32m✓\x1b[0m <TEST_IMAGE/test-image>: OK\n" # )