1+ import copy
12import os
23
34from datetime import datetime , timedelta
1415from commodore .dependency_mgmt import fetch_components , fetch_packages
1516from commodore .gitrepo import GitRepo
1617
17- from test_dependency_mgmt import setup_components_upstream , _setup_packages
18+ from test_dependency_mgmt import setup_aliases_upstream , _setup_packages
1819
1920from commodore .catalog import CompileMeta
2021from commodore .cluster import report_compile_metadata
@@ -81,18 +82,34 @@ def test_compile_meta_creation(
8182 components = ["foo" , "bar" , "baz" , "qux" ]
8283 packages = ["foo" , "bar" ]
8384
84- # setup mock components
85- patch_discover_components . return_value = ( components , {})
86- # setup_components_upstream sets version=None for all components
87- cdeps = setup_components_upstream ( tmp_path , components )
85+ # foo,bar,baz are setup as "standard" upstreams
86+ aliases = { cn : cn for cn in components if cn != "qux" }
87+ # the actual aliases and qux need to be handled separately
88+ aliases2 = { "qux" : "qux" , "quxxer" : "qux" , "barer" : "bar" }
8889
89- # NOTE: We assume that setup_components_upstream creates upstream repos in
90+ # setup_aliases_upstream sets version=None for all components
91+ cdeps = setup_aliases_upstream (tmp_path , aliases .items ())
92+ # create upstream for `qux` with subpath
93+ cdeps .update (
94+ setup_aliases_upstream (tmp_path , [("qux" , "qux" )], sub_path = "component" )
95+ )
96+ # We manually create copies of `qux` and `bar` to prepare the alias upstreams
97+ cdeps ["quxxer" ] = copy .deepcopy (cdeps ["qux" ])
98+ cdeps ["barer" ] = copy .deepcopy (cdeps ["bar" ])
99+
100+ # setup mock components, we want the full aliases dict here
101+ aliases .update (aliases2 )
102+ patch_discover_components .return_value = (components , aliases )
103+
104+ # NOTE: We assume that setup_aliases_upstream creates upstream repos in
90105 # `tmp_path/upstream/<component-name>`
91106 crepos = {cn : git .Repo (tmp_path / "upstream" / cn ) for cn in components }
92107
93108 crepos ["foo" ].version = "master"
94109 crepos ["bar" ].create_tag ("v1.2.3" )
110+ # Setup separate versions for bar and it's alias
95111 cdeps ["bar" ].version = "v1.2.3"
112+ cdeps ["barer" ].version = "master"
96113 cdeps ["baz" ].version = crepos ["baz" ].head .commit .hexsha
97114
98115 patch_read_components .return_value = cdeps
@@ -113,13 +130,6 @@ def test_compile_meta_creation(
113130 fetch_packages (config )
114131 fetch_components (config )
115132
116- config .get_components ()["qux" ]._sub_path = "component"
117-
118- aliases = {cn : cn for cn in components }
119- # create alias to verify instance reporting
120- aliases ["quxxer" ] = "qux"
121- config .register_component_aliases (aliases )
122-
123133 meta = CompileMeta (config )
124134 meta_dict = meta .as_dict ()
125135 assert set (meta_dict .keys ()) == {
@@ -146,7 +156,14 @@ def test_compile_meta_creation(
146156 ) < timedelta (seconds = 1 )
147157
148158 # check instances
149- assert set (meta_dict ["instances" ].keys ()) == {"foo" , "bar" , "baz" , "qux" , "quxxer" }
159+ assert set (meta_dict ["instances" ].keys ()) == {
160+ "foo" ,
161+ "bar" ,
162+ "barer" ,
163+ "baz" ,
164+ "qux" ,
165+ "quxxer" ,
166+ }
150167 for alias , info in meta_dict ["instances" ].items ():
151168 cn = alias [0 :3 ]
152169 assert len ({"url" , "version" , "gitSha" , "component" } - set (info .keys ())) == 0
0 commit comments