From 71b474fbbc28e8c51626e27e3009bb1e6ef2eb3e Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Fri, 1 Nov 2024 16:20:51 -0400 Subject: [PATCH 01/11] #223 Start fre make create_makefile test --- fre/make/tests/test_create_makefile.py | 60 ++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 fre/make/tests/test_create_makefile.py diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py new file mode 100644 index 00000000..25bd95fb --- /dev/null +++ b/fre/make/tests/test_create_makefile.py @@ -0,0 +1,60 @@ +""" +Test fre make create-makefile +""" +import os +import shutil +from pathlib import Path +from fre.make import createMakefile + +# SET-UP +test_dir = Path("fre/make/tests") +NM_EXAMPLE = Path("null_example") +YAMLFILE = "null_model.yaml" +BM_PLATFORM = ["ncrc5.intel23"] +CONTAINER_PLATFORM = ["hpcme.2023"] +TARGET = ["debug"] + +# Create output location +out = f"{test_dir}/makefile_out" +if Path(out).exists(): + # remove + shutil.rmtree(out) + # create output directory + Path(out).mkdir(parents=True,exist_ok=True) +else: + Path(out).mkdir(parents=True,exist_ok=True) + +# Set output directory as home for fre make output +os.environ["HOME"]=str(Path(out)) + +def test_modelyaml_exists(): + """ + Check the model yaml exists + """ + assert Path(f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}").exists() + +def test_compileyaml_exists(): + """ + Check the compile yaml exists + """ + assert Path(f"{test_dir}/{NM_EXAMPLE}/compile.yaml").exists() + +def test_platformyaml_exists(): + """ + Check the platform yaml exists + """ + assert Path(f"{test_dir}/{NM_EXAMPLE}/platforms.yaml").exists() + +def test_bm_makefile_creation(): + """ + Check the makefile is created when a bare-metal platform is used + """ + yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" + createMakefile.makefile_create(yamlfile_path,BM_PLATFORM,TARGET) + +def test_container_makefile_creation(): + """ + Check the makefile is created when the container platform is used + """ + yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" + createMakefile.makefile_create(yamlfile_path,CONTAINER_PLATFORM,TARGET) From 179ce3f68970f940a93f3a56dac150a049f55eae Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Fri, 1 Nov 2024 16:38:17 -0400 Subject: [PATCH 02/11] #223 Update `test_create_makefile.py` --- fre/make/tests/test_create_makefile.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index 25bd95fb..e3c77a8c 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -13,6 +13,7 @@ BM_PLATFORM = ["ncrc5.intel23"] CONTAINER_PLATFORM = ["hpcme.2023"] TARGET = ["debug"] +EXPERIMENT = "null_model_full" # Create output location out = f"{test_dir}/makefile_out" @@ -49,12 +50,19 @@ def test_bm_makefile_creation(): """ Check the makefile is created when a bare-metal platform is used """ + bm_plat = BM_PLATFORM[0] + targ = TARGET[0] yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" createMakefile.makefile_create(yamlfile_path,BM_PLATFORM,TARGET) + assert Path(f"{out}/fremake_canopy/test/{EXPERIMENT}/{bm_plat}-{targ}/exec/Makefile").exists() + def test_container_makefile_creation(): """ Check the makefile is created when the container platform is used """ + container_plat = CONTAINER_PLATFORM[0] yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" createMakefile.makefile_create(yamlfile_path,CONTAINER_PLATFORM,TARGET) + + assert Path(f"tmp/{container_plat}/Makefile").exists() From 2f1539190f1c1cc28465f6de41e0393546807e27 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 11:20:18 -0500 Subject: [PATCH 03/11] #223 See where the test is being run --- fre/make/tests/test_create_makefile.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index e3c77a8c..edfb6c8f 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -53,10 +53,12 @@ def test_bm_makefile_creation(): bm_plat = BM_PLATFORM[0] targ = TARGET[0] yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" + print(os.getcwd()) + ah createMakefile.makefile_create(yamlfile_path,BM_PLATFORM,TARGET) assert Path(f"{out}/fremake_canopy/test/{EXPERIMENT}/{bm_plat}-{targ}/exec/Makefile").exists() - + def test_container_makefile_creation(): """ Check the makefile is created when the container platform is used From 36fac3b0b0cab6703468cf5be58b2e3d3e9a6045 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 11:28:17 -0500 Subject: [PATCH 04/11] #223 remove print statement --- fre/make/tests/test_create_makefile.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index edfb6c8f..bb66d890 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -53,8 +53,7 @@ def test_bm_makefile_creation(): bm_plat = BM_PLATFORM[0] targ = TARGET[0] yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" - print(os.getcwd()) - ah + createMakefile.makefile_create(yamlfile_path,BM_PLATFORM,TARGET) assert Path(f"{out}/fremake_canopy/test/{EXPERIMENT}/{bm_plat}-{targ}/exec/Makefile").exists() From a75bd250e09bc1e61a8b8bbedcf72920e236ba0d Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 11:45:05 -0500 Subject: [PATCH 05/11] #223 See if combined-yaml relates to issue --- fre/make/tests/test_create_makefile.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index bb66d890..63274366 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -3,6 +3,7 @@ """ import os import shutil +import pytest from pathlib import Path from fre.make import createMakefile @@ -57,7 +58,8 @@ def test_bm_makefile_creation(): createMakefile.makefile_create(yamlfile_path,BM_PLATFORM,TARGET) assert Path(f"{out}/fremake_canopy/test/{EXPERIMENT}/{bm_plat}-{targ}/exec/Makefile").exists() - + +@pytest.mark.skip(reason='Test to see if combined-yaml is issue') def test_container_makefile_creation(): """ Check the makefile is created when the container platform is used From 9fb27cc1504dc99dbb3fa5f114a2b0012d9f45de Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 12:46:44 -0500 Subject: [PATCH 06/11] #223 Remove `os.chdir` - we dont want to change directories in tests - changing directories seemed to be causing issues in `fre make` tool tests --- fre/yamltools/combine_yamls.py | 4 +- fre/yamltools/tests/test_combine_yamls.py | 46 ++++++----------------- 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/fre/yamltools/combine_yamls.py b/fre/yamltools/combine_yamls.py index 4584c115..b2b6540f 100755 --- a/fre/yamltools/combine_yamls.py +++ b/fre/yamltools/combine_yamls.py @@ -90,7 +90,7 @@ def experiment_check(mainyaml_dir,comb,experiment): if expyaml is not None: ey_path=[] for e in expyaml: - if Path(e).exists(): + if Path(os.path.join(mainyaml_dir,e)).exists(): ey=Path(os.path.join(mainyaml_dir,e)) ey_path.append(ey) else: @@ -115,7 +115,7 @@ def experiment_check(mainyaml_dir,comb,experiment): class init_compile_yaml(): def __init__(self,yamlfile,platform,target): """ - Process to combine yamls appllicable to compilation + Process to combine yamls applicable to compilation """ self.yml = yamlfile self.name = yamlfile.split(".")[0] diff --git a/fre/yamltools/tests/test_combine_yamls.py b/fre/yamltools/tests/test_combine_yamls.py index f9e95fa2..129f0b85 100644 --- a/fre/yamltools/tests/test_combine_yamls.py +++ b/fre/yamltools/tests/test_combine_yamls.py @@ -13,13 +13,13 @@ ## SET-UP # Set example yaml paths, input directory, output directory -CWD = Path.cwd() +#CWD = Path.cwd() TEST_DIR = Path("fre/yamltools/tests") -IN_DIR = Path(f"{CWD}/{TEST_DIR}/AM5_example") +IN_DIR = Path(f"{TEST_DIR}/AM5_example") # Create output directories -COMP_OUT_DIR = Path(f"{CWD}/{TEST_DIR}/combine_yamls_out/compile") -PP_OUT_DIR = Path(f"{CWD}/{TEST_DIR}/combine_yamls_out/pp") +COMP_OUT_DIR = Path(f"{TEST_DIR}/combine_yamls_out/compile") +PP_OUT_DIR = Path(f"{TEST_DIR}/combine_yamls_out/pp") # If output directory exists, remove and create again for out in [COMP_OUT_DIR, PP_OUT_DIR]: @@ -63,25 +63,19 @@ def test_merged_compile_yamls(): Check for the creation of the combined-[experiment] yaml Check that the model yaml was merged into the combined yaml """ - # Go into the input directory - os.chdir(IN_DIR) - # Model yaml path - modelyaml = "am5.yaml" + modelyaml = str(Path(f"{IN_DIR}/am5.yaml")) use = "compile" # Merge the yamls cy.consolidate_yamls(modelyaml, COMP_EXPERIMENT, COMP_PLATFORM, COMP_TARGET, use) # Move combined yaml to output location - shutil.move("combined-am5.yaml", COMP_OUT_DIR) + shutil.move(f"{IN_DIR}/combined-am5.yaml", COMP_OUT_DIR) # Check that the combined yaml exists assert Path(f"{COMP_OUT_DIR}/combined-{COMP_EXPERIMENT}.yaml").exists() - # Go back to original directory - os.chdir(CWD) - def test_combined_compileyaml_validation(): """ Validate the combined compile yaml @@ -108,44 +102,35 @@ def test_combined_compileyaml_combinefail(): Check to test if compile yaml is incorrect/does not exist, the combine fails. (compile yaml path misspelled) """ - # Go into the input directory - os.chdir(f"{IN_DIR}/compile_yamls/compile_fail") - # Model yaml path - modelyaml = "am5-wrong_compilefile.yaml" + modelyaml = str(Path(f"{IN_DIR}/compile_yamls/compile_fail/am5-wrong_compilefile.yaml")) use = "compile" # Merge the yamls - should fail since there is no compile yaml specified in the model yaml try: cy.consolidate_yamls(modelyaml, COMP_EXPERIMENT, COMP_PLATFORM, COMP_TARGET, use) # Move combined yaml to output location - shutil.move("combined-am5-wrong_compilefile.yaml", COMP_OUT_DIR) + shutil.move(f"{IN_DIR}/compile_yamls/compile_fail/combined-am5-wrong_compilefile.yaml", COMP_OUT_DIR) except: print("EXPECTED FAILURE") # Move combined yaml to output location - shutil.move("combined-am5-wrong_compilefile.yaml", COMP_OUT_DIR) + shutil.move(f"{IN_DIR}/compile_yamls/compile_fail/combined-am5-wrong_compilefile.yaml", COMP_OUT_DIR) assert True - # Go back to original directory - os.chdir(CWD) - def test_combined_compileyaml_validatefail(): """ Check if the schema is validating correctly Branch should be string """ - # Go into the input directory - os.chdir(f"{IN_DIR}/compile_yamls/compile_fail") - # Model yaml path - modelyaml = "am5-wrong_datatype.yaml" + modelyaml = str(Path(f"{IN_DIR}/compile_yamls/compile_fail/am5-wrong_datatype.yaml")) use = "compile" # Merge the yamls cy.consolidate_yamls(modelyaml, COMP_EXPERIMENT, COMP_PLATFORM, COMP_TARGET, use) # Move combined yaml to output location - shutil.move("combined-am5-wrong_datatype.yaml", COMP_OUT_DIR) + shutil.move(f"{IN_DIR}/compile_yamls/compile_fail/combined-am5-wrong_datatype.yaml", COMP_OUT_DIR) # Validate against schema; should fail wrong_combined = Path(f"{COMP_OUT_DIR}/combined-am5-wrong_datatype.yaml") @@ -166,9 +151,6 @@ def test_combined_compileyaml_validatefail(): except: assert True - # Go back to original directory - os.chdir(CWD) - ############ PP ############ def test_expyaml_exists(): """ @@ -188,9 +170,6 @@ def test_merged_pp_yamls(): Check for the creation of the combined-[experiment] yaml Check that the model yaml was merged into the combined yaml """ - # Go into the input directory - os.chdir(IN_DIR) - # Model yaml path modelyaml = Path(f"{IN_DIR}/am5.yaml") use = "pp" @@ -204,9 +183,6 @@ def test_merged_pp_yamls(): # Check that the combined yaml exists assert Path(f"{PP_OUT_DIR}/combined-{PP_EXPERIMENT}.yaml").exists() - # Go back to original directory - os.chdir(CWD) - def test_combined_ppyaml_validation(): """ Validate the combined compile yaml From b814b99fba1e4be486a2c911f4c5ceb969c195ce Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 13:02:47 -0500 Subject: [PATCH 07/11] #223 Move `os.environ["HOME"]` to be inside test --- fre/make/tests/test_create_makefile.py | 5 ++++- fre/pp/tests/test_configure_script_yaml.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index 63274366..cbb46986 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -27,7 +27,7 @@ Path(out).mkdir(parents=True,exist_ok=True) # Set output directory as home for fre make output -os.environ["HOME"]=str(Path(out)) +#os.environ["HOME"]=str(Path(out)) def test_modelyaml_exists(): """ @@ -51,6 +51,9 @@ def test_bm_makefile_creation(): """ Check the makefile is created when a bare-metal platform is used """ + # Set output directory as home for fre make output + os.environ["HOME"]=str(Path(out)) + bm_plat = BM_PLATFORM[0] targ = TARGET[0] yamlfile_path = f"{test_dir}/{NM_EXAMPLE}/{YAMLFILE}" diff --git a/fre/pp/tests/test_configure_script_yaml.py b/fre/pp/tests/test_configure_script_yaml.py index 1f61efd4..e64cbb7d 100644 --- a/fre/pp/tests/test_configure_script_yaml.py +++ b/fre/pp/tests/test_configure_script_yaml.py @@ -13,7 +13,7 @@ test_yaml = Path(f"AM5_example/am5.yaml") # Set home for ~/cylc-src location in script -os.environ["HOME"]=str(Path(f"{CWD}/{test_dir}/configure_yaml_out")) +#os.environ["HOME"]=str(Path(f"{CWD}/{test_dir}/configure_yaml_out")) def test_combinedyaml_exists(): """ @@ -27,6 +27,9 @@ def test_configure_script(): Creates rose-suite, regrid rose-app, remap rose-app TO-DO: will break this up for better tests """ + # Set home for ~/cylc-src location in script + os.environ["HOME"]=str(Path(f"{CWD}/{test_dir}/configure_yaml_out")) + os.chdir(f"{CWD}/{test_dir}/AM5_example") # Set output directory From 8ba3aff990391306bf4b12943267ed54739799d5 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 13:38:02 -0500 Subject: [PATCH 08/11] #223 Remove `chdir` --- fre/pp/tests/test_configure_script_yaml.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/fre/pp/tests/test_configure_script_yaml.py b/fre/pp/tests/test_configure_script_yaml.py index e64cbb7d..fbd17796 100644 --- a/fre/pp/tests/test_configure_script_yaml.py +++ b/fre/pp/tests/test_configure_script_yaml.py @@ -8,18 +8,14 @@ target = "prod-openmp" # Set example yaml paths, input directory -CWD = Path.cwd() test_dir = Path("fre/pp/tests") test_yaml = Path(f"AM5_example/am5.yaml") -# Set home for ~/cylc-src location in script -#os.environ["HOME"]=str(Path(f"{CWD}/{test_dir}/configure_yaml_out")) - def test_combinedyaml_exists(): """ Make sure combined yaml file exists """ - assert Path(f"{CWD}/{test_dir}/{test_yaml}").exists() + assert Path(f"{test_dir}/{test_yaml}").exists() def test_configure_script(): """ @@ -28,16 +24,14 @@ def test_configure_script(): TO-DO: will break this up for better tests """ # Set home for ~/cylc-src location in script - os.environ["HOME"]=str(Path(f"{CWD}/{test_dir}/configure_yaml_out")) - - os.chdir(f"{CWD}/{test_dir}/AM5_example") + os.environ["HOME"]=str(Path(f"{test_dir}/configure_yaml_out")) # Set output directory out_dir = Path(f"{os.getenv('HOME')}/cylc-src/{experiment}__{platform}__{target}") Path(out_dir).mkdir(parents=True,exist_ok=True) # Define combined yaml - model_yaml = str(Path(f"{CWD}/{test_dir}/{test_yaml}")) + model_yaml = str(Path(f"{test_dir}/{test_yaml}")) # Invoke configure_yaml_script.py csy._yamlInfo(model_yaml,experiment,platform,target) @@ -47,6 +41,3 @@ def test_configure_script(): Path(f"{out_dir}/rose-suite.conf").exists(), Path(f"{out_dir}/app/regrid-xy/rose-app.conf").exists(), Path(f"{out_dir}/app/remap-pp-components/rose-app.conf").exists()]) - - # Go back to original directory - os.chdir(CWD) From 20ee9bfafa0fd19c726f23fb624d879057d5a331 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 13:39:03 -0500 Subject: [PATCH 09/11] #223 Remove pytest skip --- fre/make/tests/test_create_makefile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index cbb46986..920276c1 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -62,7 +62,6 @@ def test_bm_makefile_creation(): assert Path(f"{out}/fremake_canopy/test/{EXPERIMENT}/{bm_plat}-{targ}/exec/Makefile").exists() -@pytest.mark.skip(reason='Test to see if combined-yaml is issue') def test_container_makefile_creation(): """ Check the makefile is created when the container platform is used From f057f2f698398129ac35bbf60fbe3ca8c59f0033 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 13:49:43 -0500 Subject: [PATCH 10/11] #223 Remove unused import --- fre/make/tests/test_create_makefile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/fre/make/tests/test_create_makefile.py b/fre/make/tests/test_create_makefile.py index 920276c1..36188b33 100644 --- a/fre/make/tests/test_create_makefile.py +++ b/fre/make/tests/test_create_makefile.py @@ -3,7 +3,6 @@ """ import os import shutil -import pytest from pathlib import Path from fre.make import createMakefile From 6e3307ba312309d9cba405e404c6549e5b0a7082 Mon Sep 17 00:00:00 2001 From: Dana Singh Date: Mon, 4 Nov 2024 13:58:21 -0500 Subject: [PATCH 11/11] #223 Apply pylint messages --- fre/pp/configure_script_yaml.py | 6 +++--- fre/pp/tests/test_configure_script_yaml.py | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/fre/pp/configure_script_yaml.py b/fre/pp/configure_script_yaml.py index 443d6e00..b782e3de 100644 --- a/fre/pp/configure_script_yaml.py +++ b/fre/pp/configure_script_yaml.py @@ -147,7 +147,7 @@ def set_rose_apps(yamlfile,rose_regrid,rose_remap): value=f'{interp_split[0]}_{interp_split[1]}.{interp_method}') #################### -def _yamlInfo(yamlfile,experiment,platform,target): +def yamlInfo(yamlfile,experiment,platform,target): """ Using a valid pp.yaml, the rose-app and rose-suite configuration files are created in the cylc-src @@ -200,12 +200,12 @@ def _yamlInfo(yamlfile,experiment,platform,target): print(" " + outfile) @click.command() -def yamlInfo(yamlfile,experiment,platform,target): +def _yamlInfo(yamlfile,experiment,platform,target): ''' Wrapper script for calling yamlInfo - allows the decorated version of the function to be separate from the undecorated version ''' - return _yamlInfo(yamlfile,experiment,platform,target) + return yamlInfo(yamlfile,experiment,platform,target) # Use parseyaml function to parse created edits.yaml if __name__ == '__main__': diff --git a/fre/pp/tests/test_configure_script_yaml.py b/fre/pp/tests/test_configure_script_yaml.py index fbd17796..eaf1fc2e 100644 --- a/fre/pp/tests/test_configure_script_yaml.py +++ b/fre/pp/tests/test_configure_script_yaml.py @@ -1,15 +1,18 @@ +""" +Test configure_script_yaml +""" import os from pathlib import Path from fre.pp import configure_script_yaml as csy # Set what would be click options -experiment = "c96L65_am5f7b12r1_amip" -platform = "gfdl.ncrc5-intel22-classic" -target = "prod-openmp" +EXPERIMENT = "c96L65_am5f7b12r1_amip" +PLATFORM = "gfdl.ncrc5-intel22-classic" +TARGET = "prod-openmp" # Set example yaml paths, input directory test_dir = Path("fre/pp/tests") -test_yaml = Path(f"AM5_example/am5.yaml") +test_yaml = Path("AM5_example/am5.yaml") def test_combinedyaml_exists(): """ @@ -27,17 +30,17 @@ def test_configure_script(): os.environ["HOME"]=str(Path(f"{test_dir}/configure_yaml_out")) # Set output directory - out_dir = Path(f"{os.getenv('HOME')}/cylc-src/{experiment}__{platform}__{target}") + out_dir = Path(f"{os.getenv('HOME')}/cylc-src/{EXPERIMENT}__{PLATFORM}__{TARGET}") Path(out_dir).mkdir(parents=True,exist_ok=True) # Define combined yaml model_yaml = str(Path(f"{test_dir}/{test_yaml}")) # Invoke configure_yaml_script.py - csy._yamlInfo(model_yaml,experiment,platform,target) + csy.yamlInfo(model_yaml,EXPERIMENT,PLATFORM,TARGET) # Check for configuration creation and final combined yaml - assert all([Path(f"{out_dir}/{experiment}.yaml").exists(), + assert all([Path(f"{out_dir}/{EXPERIMENT}.yaml").exists(), Path(f"{out_dir}/rose-suite.conf").exists(), Path(f"{out_dir}/app/regrid-xy/rose-app.conf").exists(), Path(f"{out_dir}/app/remap-pp-components/rose-app.conf").exists()])