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:

Reply via email to