From fbd53732b3701fe969964014c372780e9223350a Mon Sep 17 00:00:00 2001 From: Vsevolod Fedorov Date: Tue, 17 Jan 2023 12:46:19 +0300 Subject: [PATCH] Tests: Add tests for duplicate views Change-Id: I7284e15ec224021c4dfa72e8a70632f3ce8d8d3e --- .../allow_duplicates001.conf | 0 .../allow_duplicates001.xml | 0 .../allow_duplicates001.yaml | 0 .../allow_job_group001.conf | 0 .../allow_job_group001.xml | 0 .../allow_job_group001.yaml | 0 .../allow_macros001.conf | 0 .../allow_macros001.xml | 0 .../allow_macros001.yaml | 0 .../allow_projects001.conf | 0 .../allow_projects001.xml | 0 .../allow_projects001.yaml | 0 .../allow_templates001.conf | 0 .../allow_templates001.xml | 0 .../allow_templates001.yaml | 0 .../duplicates001.xml | 0 .../duplicates001.yaml | 0 .../duplicates002.xml | 0 .../duplicates002.yaml | 0 .../exception_duplicates001.yaml | 0 .../exception_duplicates002.yaml | 0 .../exception_job_group001.yaml | 0 .../exception_macros001.yaml | 0 .../exception_projects001.yaml | 0 .../exception_projects002.yaml | 0 .../exception_projects003.yaml | 0 .../exception_templates001.yaml | 0 ...t_duplicates.py => test_job_duplicates.py} | 2 +- tests/duplicates/test_view_duplicates.py | 27 +++++++++++++++++++ .../duplicate_views_in_project.xml | 16 +++++++++++ .../duplicate_views_in_project.yaml | 12 +++++++++ .../exception_duplicate_view.yaml | 7 +++++ .../exception_duplicate_view_template.yaml | 12 +++++++++ .../exception_duplicate_views_in_project.yaml | 9 +++++++ 34 files changed, 84 insertions(+), 1 deletion(-) rename tests/duplicates/{fixtures => job_fixtures}/allow_duplicates001.conf (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_duplicates001.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_duplicates001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_job_group001.conf (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_job_group001.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_job_group001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_macros001.conf (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_macros001.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_macros001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_projects001.conf (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_projects001.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_projects001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_templates001.conf (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_templates001.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/allow_templates001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/duplicates001.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/duplicates001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/duplicates002.xml (100%) rename tests/duplicates/{fixtures => job_fixtures}/duplicates002.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_duplicates001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_duplicates002.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_job_group001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_macros001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_projects001.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_projects002.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_projects003.yaml (100%) rename tests/duplicates/{fixtures => job_fixtures}/exception_templates001.yaml (100%) rename tests/duplicates/{test_duplicates.py => test_job_duplicates.py} (95%) create mode 100644 tests/duplicates/test_view_duplicates.py create mode 100644 tests/duplicates/view_fixtures/duplicate_views_in_project.xml create mode 100644 tests/duplicates/view_fixtures/duplicate_views_in_project.yaml create mode 100644 tests/duplicates/view_fixtures/exception_duplicate_view.yaml create mode 100644 tests/duplicates/view_fixtures/exception_duplicate_view_template.yaml create mode 100644 tests/duplicates/view_fixtures/exception_duplicate_views_in_project.yaml diff --git a/tests/duplicates/fixtures/allow_duplicates001.conf b/tests/duplicates/job_fixtures/allow_duplicates001.conf similarity index 100% rename from tests/duplicates/fixtures/allow_duplicates001.conf rename to tests/duplicates/job_fixtures/allow_duplicates001.conf diff --git a/tests/duplicates/fixtures/allow_duplicates001.xml b/tests/duplicates/job_fixtures/allow_duplicates001.xml similarity index 100% rename from tests/duplicates/fixtures/allow_duplicates001.xml rename to tests/duplicates/job_fixtures/allow_duplicates001.xml diff --git a/tests/duplicates/fixtures/allow_duplicates001.yaml b/tests/duplicates/job_fixtures/allow_duplicates001.yaml similarity index 100% rename from tests/duplicates/fixtures/allow_duplicates001.yaml rename to tests/duplicates/job_fixtures/allow_duplicates001.yaml diff --git a/tests/duplicates/fixtures/allow_job_group001.conf b/tests/duplicates/job_fixtures/allow_job_group001.conf similarity index 100% rename from tests/duplicates/fixtures/allow_job_group001.conf rename to tests/duplicates/job_fixtures/allow_job_group001.conf diff --git a/tests/duplicates/fixtures/allow_job_group001.xml b/tests/duplicates/job_fixtures/allow_job_group001.xml similarity index 100% rename from tests/duplicates/fixtures/allow_job_group001.xml rename to tests/duplicates/job_fixtures/allow_job_group001.xml diff --git a/tests/duplicates/fixtures/allow_job_group001.yaml b/tests/duplicates/job_fixtures/allow_job_group001.yaml similarity index 100% rename from tests/duplicates/fixtures/allow_job_group001.yaml rename to tests/duplicates/job_fixtures/allow_job_group001.yaml diff --git a/tests/duplicates/fixtures/allow_macros001.conf b/tests/duplicates/job_fixtures/allow_macros001.conf similarity index 100% rename from tests/duplicates/fixtures/allow_macros001.conf rename to tests/duplicates/job_fixtures/allow_macros001.conf diff --git a/tests/duplicates/fixtures/allow_macros001.xml b/tests/duplicates/job_fixtures/allow_macros001.xml similarity index 100% rename from tests/duplicates/fixtures/allow_macros001.xml rename to tests/duplicates/job_fixtures/allow_macros001.xml diff --git a/tests/duplicates/fixtures/allow_macros001.yaml b/tests/duplicates/job_fixtures/allow_macros001.yaml similarity index 100% rename from tests/duplicates/fixtures/allow_macros001.yaml rename to tests/duplicates/job_fixtures/allow_macros001.yaml diff --git a/tests/duplicates/fixtures/allow_projects001.conf b/tests/duplicates/job_fixtures/allow_projects001.conf similarity index 100% rename from tests/duplicates/fixtures/allow_projects001.conf rename to tests/duplicates/job_fixtures/allow_projects001.conf diff --git a/tests/duplicates/fixtures/allow_projects001.xml b/tests/duplicates/job_fixtures/allow_projects001.xml similarity index 100% rename from tests/duplicates/fixtures/allow_projects001.xml rename to tests/duplicates/job_fixtures/allow_projects001.xml diff --git a/tests/duplicates/fixtures/allow_projects001.yaml b/tests/duplicates/job_fixtures/allow_projects001.yaml similarity index 100% rename from tests/duplicates/fixtures/allow_projects001.yaml rename to tests/duplicates/job_fixtures/allow_projects001.yaml diff --git a/tests/duplicates/fixtures/allow_templates001.conf b/tests/duplicates/job_fixtures/allow_templates001.conf similarity index 100% rename from tests/duplicates/fixtures/allow_templates001.conf rename to tests/duplicates/job_fixtures/allow_templates001.conf diff --git a/tests/duplicates/fixtures/allow_templates001.xml b/tests/duplicates/job_fixtures/allow_templates001.xml similarity index 100% rename from tests/duplicates/fixtures/allow_templates001.xml rename to tests/duplicates/job_fixtures/allow_templates001.xml diff --git a/tests/duplicates/fixtures/allow_templates001.yaml b/tests/duplicates/job_fixtures/allow_templates001.yaml similarity index 100% rename from tests/duplicates/fixtures/allow_templates001.yaml rename to tests/duplicates/job_fixtures/allow_templates001.yaml diff --git a/tests/duplicates/fixtures/duplicates001.xml b/tests/duplicates/job_fixtures/duplicates001.xml similarity index 100% rename from tests/duplicates/fixtures/duplicates001.xml rename to tests/duplicates/job_fixtures/duplicates001.xml diff --git a/tests/duplicates/fixtures/duplicates001.yaml b/tests/duplicates/job_fixtures/duplicates001.yaml similarity index 100% rename from tests/duplicates/fixtures/duplicates001.yaml rename to tests/duplicates/job_fixtures/duplicates001.yaml diff --git a/tests/duplicates/fixtures/duplicates002.xml b/tests/duplicates/job_fixtures/duplicates002.xml similarity index 100% rename from tests/duplicates/fixtures/duplicates002.xml rename to tests/duplicates/job_fixtures/duplicates002.xml diff --git a/tests/duplicates/fixtures/duplicates002.yaml b/tests/duplicates/job_fixtures/duplicates002.yaml similarity index 100% rename from tests/duplicates/fixtures/duplicates002.yaml rename to tests/duplicates/job_fixtures/duplicates002.yaml diff --git a/tests/duplicates/fixtures/exception_duplicates001.yaml b/tests/duplicates/job_fixtures/exception_duplicates001.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_duplicates001.yaml rename to tests/duplicates/job_fixtures/exception_duplicates001.yaml diff --git a/tests/duplicates/fixtures/exception_duplicates002.yaml b/tests/duplicates/job_fixtures/exception_duplicates002.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_duplicates002.yaml rename to tests/duplicates/job_fixtures/exception_duplicates002.yaml diff --git a/tests/duplicates/fixtures/exception_job_group001.yaml b/tests/duplicates/job_fixtures/exception_job_group001.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_job_group001.yaml rename to tests/duplicates/job_fixtures/exception_job_group001.yaml diff --git a/tests/duplicates/fixtures/exception_macros001.yaml b/tests/duplicates/job_fixtures/exception_macros001.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_macros001.yaml rename to tests/duplicates/job_fixtures/exception_macros001.yaml diff --git a/tests/duplicates/fixtures/exception_projects001.yaml b/tests/duplicates/job_fixtures/exception_projects001.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_projects001.yaml rename to tests/duplicates/job_fixtures/exception_projects001.yaml diff --git a/tests/duplicates/fixtures/exception_projects002.yaml b/tests/duplicates/job_fixtures/exception_projects002.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_projects002.yaml rename to tests/duplicates/job_fixtures/exception_projects002.yaml diff --git a/tests/duplicates/fixtures/exception_projects003.yaml b/tests/duplicates/job_fixtures/exception_projects003.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_projects003.yaml rename to tests/duplicates/job_fixtures/exception_projects003.yaml diff --git a/tests/duplicates/fixtures/exception_templates001.yaml b/tests/duplicates/job_fixtures/exception_templates001.yaml similarity index 100% rename from tests/duplicates/fixtures/exception_templates001.yaml rename to tests/duplicates/job_fixtures/exception_templates001.yaml diff --git a/tests/duplicates/test_duplicates.py b/tests/duplicates/test_job_duplicates.py similarity index 95% rename from tests/duplicates/test_duplicates.py rename to tests/duplicates/test_job_duplicates.py index 79b883efe..db2e03b97 100644 --- a/tests/duplicates/test_duplicates.py +++ b/tests/duplicates/test_job_duplicates.py @@ -22,7 +22,7 @@ from jenkins_jobs.errors import JenkinsJobsException from tests.enum_scenarios import scenario_list -fixtures_dir = Path(__file__).parent / "fixtures" +fixtures_dir = Path(__file__).parent / "job_fixtures" @pytest.fixture( diff --git a/tests/duplicates/test_view_duplicates.py b/tests/duplicates/test_view_duplicates.py new file mode 100644 index 000000000..280f464ad --- /dev/null +++ b/tests/duplicates/test_view_duplicates.py @@ -0,0 +1,27 @@ +from operator import attrgetter +from pathlib import Path + +import pytest + +from jenkins_jobs.errors import JenkinsJobsException +from tests.enum_scenarios import scenario_list + + +fixtures_dir = Path(__file__).parent / "view_fixtures" + + +@pytest.fixture( + params=scenario_list(fixtures_dir), + ids=attrgetter("name"), +) +def scenario(request): + return request.param + + +def test_yaml_snippet(scenario, check_view): + if scenario.in_path.name.startswith("exception_"): + with pytest.raises(JenkinsJobsException) as excinfo: + check_view() + assert str(excinfo.value).startswith("Duplicate ") + else: + check_view() diff --git a/tests/duplicates/view_fixtures/duplicate_views_in_project.xml b/tests/duplicates/view_fixtures/duplicate_views_in_project.xml new file mode 100644 index 000000000..bdf114f67 --- /dev/null +++ b/tests/duplicates/view_fixtures/duplicate_views_in_project.xml @@ -0,0 +1,16 @@ + + + sample-template-1.1 + Views for version 1.1<!-- Managed by Jenkins Job Builder --> + false + false + + + + + sample-template-2.0 + Views for version 2.0<!-- Managed by Jenkins Job Builder --> + false + false + + diff --git a/tests/duplicates/view_fixtures/duplicate_views_in_project.yaml b/tests/duplicates/view_fixtures/duplicate_views_in_project.yaml new file mode 100644 index 000000000..02c582c90 --- /dev/null +++ b/tests/duplicates/view_fixtures/duplicate_views_in_project.yaml @@ -0,0 +1,12 @@ +- view-template: + name: sample-template-{version} + view-type: all + description: 'Views for version {version}' + +- project: + name: sample-project + version: 1.1 + views: + - sample-template-{version} + - sample-template-{version}: + version: 2.0 diff --git a/tests/duplicates/view_fixtures/exception_duplicate_view.yaml b/tests/duplicates/view_fixtures/exception_duplicate_view.yaml new file mode 100644 index 000000000..b74804eb9 --- /dev/null +++ b/tests/duplicates/view_fixtures/exception_duplicate_view.yaml @@ -0,0 +1,7 @@ +- view: + name: duplicate-view + view-type: all + +- view: + name: duplicate-view + view-type: all diff --git a/tests/duplicates/view_fixtures/exception_duplicate_view_template.yaml b/tests/duplicates/view_fixtures/exception_duplicate_view_template.yaml new file mode 100644 index 000000000..d3a8c6280 --- /dev/null +++ b/tests/duplicates/view_fixtures/exception_duplicate_view_template.yaml @@ -0,0 +1,12 @@ +- view-template: + name: duplicate-view-template + view-type: all + +- view-template: + name: duplicate-view-template + view-type: all + +- project: + name: sample-project + views: + - duplicate-view-template diff --git a/tests/duplicates/view_fixtures/exception_duplicate_views_in_project.yaml b/tests/duplicates/view_fixtures/exception_duplicate_views_in_project.yaml new file mode 100644 index 000000000..f51c737d0 --- /dev/null +++ b/tests/duplicates/view_fixtures/exception_duplicate_views_in_project.yaml @@ -0,0 +1,9 @@ +- view-template: + name: sample-template + view-type: all + +- project: + name: sample-project + views: + - sample-template + - sample-template