Commit 78746577 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

Merge branch 'mypy-tests' into 'main'

Misc mypy fixes for test code

See merge request to-be-continuous/tools/gitlab-butler!53
parents 46c737d6 0b8eb6eb
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@ include:
    inputs:
      image: "registry.hub.docker.com/library/python:3.12"
      mypy-enabled: true
      mypy-files: gitlab_butler
      ruff-enabled: true
      package-enabled: true
      release-enabled: true
+190 −203

File changed.

Preview size limit exceeded, changes collapsed.

+1 −6
Original line number Diff line number Diff line
@@ -65,10 +65,5 @@ python_version = "3.12"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true

[[tool.mypy.overrides]]
# loosen rules for tests
module = "tests.*"
warn_return_any = false
disallow_untyped_defs = false
files = "gitlab_butler/**/*.py,tests/**/*.py"
+10 −10
Original line number Diff line number Diff line
@@ -20,17 +20,17 @@ class TestBasic:
                per_page=100
            ),
            'path/to/group',
            '',
            [],
            dry_run=False,
            verbose=False,
            continue_on_error=False,
            skip_subgroups=False,
            delay_between_api_call=None,
            pipeline_deletion_limit=None,
            delay_between_api_call=0,
            pipeline_deletion_limit=0,
            default_cfg=ButlerCfg(),
        )

    def test_handle_error(self):
    def test_handle_error(self) -> None:
        butler = self.create_butler()

        # should raise error when continue_on_error = false
@@ -57,7 +57,7 @@ class TestBasic:
        print(butler.errors)
        assert all([a.args == b.args for a, b in zip(butler.errors, [ValueError('should be raised'), ValueError('should be stored')])])

    def test_handle_warn(self):
    def test_handle_warn(self) -> None:
        butler = self.create_butler()

        # initial list should be empty
@@ -70,7 +70,7 @@ class TestBasic:
        assert len(butler.warnings) == 1
        assert all([a.args == b.args for a, b in zip(butler.warnings, [ValueError('should be stored')])])

    def test_rel_path(self):
    def test_rel_path(self) -> None:
        butler = self.create_butler()

        butler.group_path = 'path/to/group'
@@ -82,7 +82,7 @@ class TestBasic:
        with pytest.raises(AssertionError):
            butler.rel_path('/your/project/is/in/another/group/project')

    def test_is_excluded(self):
    def test_is_excluded(self) -> None:
        butler = self.create_butler()

        butler.group_path = 'path/to/group'
@@ -104,7 +104,7 @@ class TestBasic:
        assert butler.is_excluded('path/to/group/subgroup/project') is False

    @responses.activate
    def test_load_cfg(self):
    def test_load_cfg(self) -> None:
        butler = self.create_butler()

        responses.add(responses.GET, 'http://gitlab.test/api/v4/projects/42', status=200,
@@ -124,12 +124,12 @@ class TestBasic:
        cfg = butler.load_cfg(project)
        assert not cfg.enabled

    def test_to_url(self):
    def test_to_url(self) -> None:
        assert to_url('') == ''
        assert to_url('http://gitlab.test') == 'http://gitlab.test'
        assert to_url('http://gitlab.test/api/v4') == 'http://gitlab.test'

    def test_merge_request_iid_from_ref(self):
    def test_merge_request_iid_from_ref(self) -> None:
        butler = self.create_butler()
        butler.continue_on_error = True

+10 −10
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ from gitlab_butler.main import generate_cfg, generate_parser

class TestButlerCfg:

    def validate_cfg(self, cfg):
    def validate_cfg(self, cfg: ButlerCfg) -> ButlerCfg:
        """
        Validate configuration
        :param cfg:
@@ -39,25 +39,25 @@ class TestButlerCfg:
        # to allow chaining
        return cfg

    def test_default_cfg(self):
    def test_default_cfg(self) -> None:
            cfg = ButlerCfg()
            self.validate_cfg(cfg)

    def test_cfg_with_values(self):
    def test_cfg_with_values(self) -> None:
            cfg = ButlerCfg()
            cfg.pipelines.delete_older_than = 10
            cfg.pipelines.keep.per_tag.any_tag = 10
            cfg.pipelines.keep.per_merge_request.any_mr = 10
            self.validate_cfg(cfg)

    def test_build_cfg_from_default_args(self):
    def test_build_cfg_from_default_args(self) -> None:
        cfg = self.validate_cfg(generate_cfg(generate_parser().parse_args([])))

    def test_build_cfg_from_args_keep_pipelines_per_mr(self):
    def test_build_cfg_from_args_keep_pipelines_per_mr(self) -> None:
        cfg = self.validate_cfg(generate_cfg(generate_parser().parse_args(['--pipelines-keep-per-mr', '5'])))
        assert cfg.pipelines.keep.per_merge_request.any_mr == 5

    def test_basic_args(self):
    def test_basic_args(self) -> None:
        # --api-url
        assert generate_parser().parse_args([]).api_url == os.getenv("GITLAB_API", "https://gitlab.com/api/v4")
        assert generate_parser().parse_args(['--api-url', 'https://my-gitlab.com/api/v4']).api_url == 'https://my-gitlab.com/api/v4'
@@ -71,11 +71,11 @@ class TestButlerCfg:
        assert generate_parser().parse_args(['--group-path', 'group/sub-group/']).group_path == 'group/sub-group/'

        # --exclude
        assert generate_parser().parse_args([]).exclude == (os.getenv("EXCLUDE").split(",") if os.getenv("EXCLUDE") else [])
        assert generate_parser().parse_args([]).exclude == (x.split(" ") if (x := os.getenv("EXCLUDE")) else [])
        assert generate_parser().parse_args(['--exclude', 'group1']).exclude == ['group1']
        assert generate_parser().parse_args(['--exclude', 'group1', '--exclude', 'group2', '--exclude', 'group3']).exclude == ['group1','group2','group3']

    def test_toggle_args(self):
    def test_toggle_args(self) -> None:
        # dry-run
        assert generate_parser().parse_args([]).dry_run is False
        assert generate_parser().parse_args(['--dry-run']).dry_run is True
@@ -108,7 +108,7 @@ class TestButlerCfg:
        assert generate_parser().parse_args([]).pipelines_delete_older_than == 30
        assert generate_parser().parse_args(['--pipelines-delete-older-than', '90']).pipelines_delete_older_than == 90

    def test_branch_limits(self):
    def test_branch_limits(self) -> None:
        # no args, default value
        args = generate_parser().parse_args([])
        assert args.pipelines_keep_per_branch == []
@@ -137,7 +137,7 @@ class TestButlerCfg:
        assert cfg.pipelines.keep.per_branch.any_branch == 1
        assert cfg.pipelines.keep.per_branch.by_name == {'develop': 10, 'main': 20, 'other': 5}

    def test_tag_limits(self):
    def test_tag_limits(self) -> None:
        # no args
        args = generate_parser().parse_args([])
        assert args.pipelines_keep_per_tag == []
Loading