This is an automated email from the ASF dual-hosted git repository. akitouni pushed a commit to branch abderrahim/alias-mapping-fix in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 48749bcb1efc302dc929f26479086db5c01c127d Author: Abderrahim Kitouni <[email protected]> AuthorDate: Mon May 13 12:20:06 2024 +0100 tests/frontend/mirror.py: Test non-identity alias mapping --- tests/frontend/mirror.py | 82 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 13 deletions(-) diff --git a/tests/frontend/mirror.py b/tests/frontend/mirror.py index e524de5a7..e2b20b6f3 100644 --- a/tests/frontend/mirror.py +++ b/tests/frontend/mirror.py @@ -895,9 +895,27 @@ def test_source_mirror_plugin(cli, tmpdir): @pytest.mark.parametrize("unaliased_sources", [True, False]) @pytest.mark.parametrize("disallow_subproject_uris", [True, False]) @pytest.mark.parametrize("fetch_source", ["aliases", "mirrors"]) [email protected]("alias_override", [["foo"], ["foo", "bar"], "global", "invalid"]) [email protected]( + "alias_mapping,alias_override", + [ + ("identity", ["foo"]), + ("identity", ["foo", "bar"]), + ("identity", "global"), + ("project-prefix", ["foo"]), + ("project-prefix", ["foo", "bar"]), + ("invalid", ["foo"]), + ("invalid", ["foo", "bar"]), + ], +) def test_mirror_subproject_aliases( - cli, tmpdir, subproject_mirrors, unaliased_sources, disallow_subproject_uris, fetch_source, alias_override + cli, + tmpdir, + subproject_mirrors, + unaliased_sources, + disallow_subproject_uris, + fetch_source, + alias_override, + alias_mapping, ): output_file = os.path.join(str(tmpdir), "output.txt") project_dir = tmpdir @@ -941,7 +959,52 @@ def test_mirror_subproject_aliases( # copy the source plugin to the subproject shutil.copytree(project_dir / "sources", subproject_dir / "sources") - project = generate_project(MirrorConfig.SUCCESS_MIRRORS, fetch_source == "aliases") + if alias_mapping == "identity": + map_alias = lambda x: x + elif alias_mapping == "project-prefix": + map_alias = lambda x: subproject["name"] + "/" + x + else: + map_alias = lambda x: "invalid-" + x + + if alias_mapping != "invalid": + map_alias_valid = map_alias + else: + map_alias_valid = lambda x: x + + project = { + "name": "test", + "min-version": "2.0", + "element-path": "elements", + "aliases": { + map_alias_valid("foo"): "FOO/", + map_alias_valid("bar"): "RAB/" if fetch_source == "aliases" else "BAR/", + }, + "plugins": [{"origin": "local", "path": "sources", "sources": ["fetch_source"]}], + # Copy of SUCCESS_MIRROR_LIST from above + "mirrors": [ + { + "name": "middle-earth", + "aliases": { + map_alias_valid("foo"): ["OOF/"], + map_alias_valid("bar"): ["RAB/"], + }, + }, + { + "name": "arrakis", + "aliases": { + map_alias_valid("foo"): ["FOO/"], + map_alias_valid("bar"): ["RBA/"], + }, + }, + { + "name": "oz", + "aliases": { + map_alias_valid("foo"): ["ooF/"], + map_alias_valid("bar"): ["raB/"], + }, + }, + ], + } if disallow_subproject_uris: project["junctions"] = {"disallow-subproject-uris": "true"} @@ -960,16 +1023,9 @@ def test_mirror_subproject_aliases( } if alias_override == "global": - junction["config"] = {"map-aliases": "identity"} - elif alias_override == "invalid": - junction["config"] = { - "aliases": { - "foo": "invalid-foo", - "bar": "invalid-bar", - } - } + junction["config"] = {"map-aliases": alias_mapping} else: - junction["config"] = {"aliases": {alias: alias for alias in alias_override}} + junction["config"] = {"aliases": {alias: map_alias(alias) for alias in alias_override}} _yaml.roundtrip_dump(junction, str(element_dir / junction_name)) @@ -977,7 +1033,7 @@ def test_mirror_subproject_aliases( cli.configure(userconfig) result = cli.run(project=project_dir, args=["source", "fetch", "{}:{}".format(junction_name, element_name)]) - if alias_override == "invalid": + if alias_mapping == "invalid": # Mapped alias does not exist in the parent project result.assert_main_error(ErrorDomain.SOURCE, "invalid-source-alias") elif disallow_subproject_uris and unaliased_sources:
