@@ -245,3 +245,75 @@ def test_multi_parameter_strategy_matrix(self):
245245 self .assertEqual (prod .meta ["sampler" ]["sampler" ], "dynesty" )
246246 elif "emcee" in prod .name :
247247 self .assertEqual (prod .meta ["sampler" ]["sampler" ], "emcee" )
248+
249+
250+ class NameIterateTests (AsimovTestCase ):
251+ """
252+ Tests for the --name and --iterate options of apply_page.
253+ """
254+
255+ def setUp (self ):
256+ super ().setUp ()
257+ # Add the base event and a first analysis so we have an existing name
258+ apply_page (
259+ f"{ self .cwd } /tests/test_data/test_event.yaml" ,
260+ ledger = self .ledger ,
261+ )
262+
263+ def test_name_overrides_blueprint_name (self ):
264+ """--name should replace the name field in the blueprint."""
265+ apply_page (
266+ f"{ self .cwd } /tests/test_data/test_analysis_S000000.yaml" ,
267+ event = "S000000" ,
268+ ledger = self .ledger ,
269+ name = "my-custom-name" ,
270+ )
271+ event = self .ledger .get_event ("S000000" )[0 ]
272+ analysis_names = {prod .name for prod in event .productions }
273+ self .assertIn ("my-custom-name" , analysis_names )
274+ self .assertNotIn ("bilby-IMRPhenomXPHM-QuickTest" , analysis_names )
275+
276+ def test_iterate_increments_name_when_collision (self ):
277+ """--iterate should produce a -2 suffix when the base name is already taken."""
278+ # Apply the analysis once to register the base name
279+ apply_page (
280+ f"{ self .cwd } /tests/test_data/test_analysis_S000000.yaml" ,
281+ event = "S000000" ,
282+ ledger = self .ledger ,
283+ )
284+ # Apply again with --iterate; a -2 suffix should be chosen
285+ apply_page (
286+ f"{ self .cwd } /tests/test_data/test_analysis_S000000.yaml" ,
287+ event = "S000000" ,
288+ ledger = self .ledger ,
289+ iterate = True ,
290+ )
291+ event = self .ledger .get_event ("S000000" )[0 ]
292+ analysis_names = {prod .name for prod in event .productions }
293+ self .assertIn ("bilby-IMRPhenomXPHM-QuickTest" , analysis_names )
294+ self .assertIn ("bilby-IMRPhenomXPHM-QuickTest-2" , analysis_names )
295+
296+ def test_iterate_increments_correctly_for_strategy (self ):
297+ """--iterate with a strategy should give deterministic -2, -3, ... names."""
298+ apply_page (
299+ f"{ self .cwd } /tests/test_data/test_strategy_single.yaml" ,
300+ event = "S000000" ,
301+ ledger = self .ledger ,
302+ )
303+ # Apply the same strategy again with --iterate
304+ apply_page (
305+ f"{ self .cwd } /tests/test_data/test_strategy_single.yaml" ,
306+ event = "S000000" ,
307+ ledger = self .ledger ,
308+ iterate = True ,
309+ )
310+ event = self .ledger .get_event ("S000000" )[0 ]
311+ analysis_names = {prod .name for prod in event .productions }
312+ # First pass
313+ self .assertIn ("bilby-IMRPhenomXPHM" , analysis_names )
314+ self .assertIn ("bilby-SEOBNRv4PHM" , analysis_names )
315+ self .assertIn ("bilby-IMRPhenomD" , analysis_names )
316+ # Second pass - iterated names
317+ self .assertIn ("bilby-IMRPhenomXPHM-2" , analysis_names )
318+ self .assertIn ("bilby-SEOBNRv4PHM-2" , analysis_names )
319+ self .assertIn ("bilby-IMRPhenomD-2" , analysis_names )
0 commit comments