99import yaml
1010from fmu .datamodels .fmu_results .global_configuration import GlobalConfiguration
1111from fmu .settings import find_nearest_fmu_directory
12+ from fmu .settings ._init import REQUIRED_FMU_PROJECT_SUBDIRS , is_fmu_project
1213from pydantic import ValidationError
1314from typer .testing import CliRunner
1415
1516from fmu_settings_cli .__main__ import app
16- from fmu_settings_cli .init .cli import REQUIRED_FMU_PROJECT_SUBDIRS , is_fmu_project
17+ from fmu_settings_cli .init .cli import _find_global_config_source
1718
1819runner = CliRunner ()
1920
2021
2122@pytest .mark .parametrize (
2223 "dirs, expected" ,
2324 [
24- (["foo" ], (False , REQUIRED_FMU_PROJECT_SUBDIRS )),
25- (["foo/ert" ], (False , REQUIRED_FMU_PROJECT_SUBDIRS )),
26- (["ertt" ], (False , REQUIRED_FMU_PROJECT_SUBDIRS )),
25+ (["foo" ], (False , list ( REQUIRED_FMU_PROJECT_SUBDIRS ) )),
26+ (["foo/ert" ], (False , list ( REQUIRED_FMU_PROJECT_SUBDIRS ) )),
27+ (["ertt" ], (False , list ( REQUIRED_FMU_PROJECT_SUBDIRS ) )),
2728 (REQUIRED_FMU_PROJECT_SUBDIRS , (True , [])),
2829 ],
2930)
@@ -48,8 +49,11 @@ def test_init_creates_user_fmu_if_exist(in_tmp_path: Path) -> None:
4849
4950 assert result .exit_code == 1
5051 stderr = " " .join (result .stderr .split ())
51- assert "does not appear to be an FMU project" in stderr
52- assert "ert" in stderr
52+ missing_dirs = ", " .join (
53+ f"'{ dir_name } '" for dir_name in REQUIRED_FMU_PROJECT_SUBDIRS
54+ )
55+ assert "Failed initializing .fmu directory." in stderr
56+ assert f"Did not find: { missing_dirs } ." in stderr
5357 assert (home / ".fmu" ).exists ()
5458
5559
@@ -58,8 +62,11 @@ def test_init_checks_if_fmu_dir_fails(in_tmp_path: Path) -> None:
5862 result = runner .invoke (app , ["init" ])
5963 assert result .exit_code == 1
6064 stderr = " " .join (result .stderr .split ())
61- assert "does not appear to be an FMU project" in stderr
62- assert "ert" in stderr
65+ missing_dirs = ", " .join (
66+ f"'{ dir_name } '" for dir_name in REQUIRED_FMU_PROJECT_SUBDIRS
67+ )
68+ assert "Failed initializing .fmu directory." in stderr
69+ assert f"Did not find: { missing_dirs } ." in stderr
6370
6471
6572def test_init_checks_if_fmu_dir_passes (in_tmp_path : Path ) -> None :
@@ -148,10 +155,12 @@ def test_init_adds_global_variables_with_masterdata(
148155 assert result .exit_code == 0
149156 stdout = " " .join (result .stdout .split ())
150157 assert "Success: Successfully imported access, masterdata, model from" in stdout
151- assert "fmuconfig/output/global_variables.yml" in stdout
152158 assert "Success: All done!" in stdout
153159 assert "Info: Project stratigraphy was not imported by 'fmu init'." in stdout
154160 assert "Open 'fmu settings' to import stratigraphy from RMS" in stdout
161+ assert _find_global_config_source (tmp_path ) == (
162+ fmuconfig_out / "global_variables.yml"
163+ )
155164
156165 fmu_dir = find_nearest_fmu_directory ()
157166 fmu_dir_cfg = fmu_dir .config .load ()
@@ -180,35 +189,8 @@ def test_init_adds_input_global_config_with_masterdata(
180189 assert result .exit_code == 0
181190 stdout = " " .join (result .stdout .split ())
182191 assert "Success: Successfully imported access, masterdata, model from" in stdout
183- assert "fmuconfig/input/global_master_config.yml" in stdout
184192 assert "Success: All done!" in stdout
185-
186-
187- def test_init_skips_adding_global_variables_with_masterdata (
188- in_fmu_project : Path ,
189- generate_strict_valid_globalconfiguration : Callable [[], GlobalConfiguration ],
190- ) -> None :
191- """Tests that 'fmu init' skips adding masterdata with skip flag."""
192- tmp_path = in_fmu_project
193-
194- valid_global_cfg = generate_strict_valid_globalconfiguration ()
195-
196- fmuconfig_out = tmp_path / "fmuconfig/output"
197- fmuconfig_out .mkdir (parents = True , exist_ok = True )
198-
199- (fmuconfig_out / "global_variables.yml" ).write_text (
200- yaml .dump (valid_global_cfg .model_dump (mode = "json" , by_alias = True ))
201- )
202-
203- result = runner .invoke (app , ["init" , "--skip-config-import" ])
204- assert result .exit_code == 0
205- assert "Success: All done!" in result .stdout
206-
207- fmu_dir = find_nearest_fmu_directory ()
208- fmu_dir_cfg = fmu_dir .config .load ()
209- assert fmu_dir_cfg .masterdata is None
210- assert fmu_dir_cfg .access is None
211- assert fmu_dir_cfg .model is None
193+ assert _find_global_config_source (tmp_path ) == global_config_path
212194
213195
214196def test_init_raises_when_import_drogon_masterdata (
@@ -235,26 +217,6 @@ def test_init_raises_when_import_drogon_masterdata(
235217 assert "placeholder values or Drogon data" in stderr
236218 assert "Success: All done!" in result .stdout
237219
238-
239- def test_init_skips_raising_when_import_drogon_masterdata_with_skip (
240- in_fmu_project : Path , global_variables_with_masterdata : dict [str , Any ]
241- ) -> None :
242- """Tests that 'fmu init' skips raising on Drogon masterdata with skip flag."""
243- tmp_path = in_fmu_project
244-
245- fmuconfig_out = tmp_path / "fmuconfig/output"
246- fmuconfig_out .mkdir (parents = True , exist_ok = True )
247-
248- (fmuconfig_out / "global_variables.yml" ).write_text (
249- yaml .dump (global_variables_with_masterdata )
250- )
251-
252- result = runner .invoke (app , ["init" , "--skip-config-import" ])
253- assert result .exit_code == 0
254- # _not_ in
255- assert "Reason: Invalid name in 'model': Drogon" not in result .stderr
256- assert "Success: All done!" in result .stdout
257-
258220 fmu_dir = find_nearest_fmu_directory ()
259221 fmu_dir_cfg = fmu_dir .config .load ()
260222 assert fmu_dir_cfg .masterdata is None
@@ -267,7 +229,7 @@ def test_init_fmu_dir_exists_error(in_fmu_project: Path) -> None:
267229 fmu_dir = in_fmu_project / ".fmu"
268230 fmu_dir .mkdir ()
269231
270- result = runner .invoke (app , ["init" , "--skip-config-import" ])
232+ result = runner .invoke (app , ["init" ])
271233 assert result .exit_code == 1
272234 assert "Error: Unable to create .fmu directory" in result .stderr
273235 assert ".fmu already exists" in result .stderr
@@ -280,7 +242,7 @@ def test_init_fmu_dir_no_permissions_error(in_fmu_project: Path) -> None:
280242 with patch (
281243 "fmu_settings_cli.init.cli.init_fmu_directory" , side_effect = PermissionError
282244 ):
283- result = runner .invoke (app , ["init" , "--skip-config-import" ])
245+ result = runner .invoke (app , ["init" ])
284246 assert result .exit_code == 1
285247 assert "Error: Unable to create .fmu directory" in result .stderr
286248 assert "lacking permissions to create" in result .stderr
@@ -296,7 +258,7 @@ def test_init_fmu_dir_validation_error(in_fmu_project: Path) -> None:
296258 "fmu_settings_cli.init.cli.init_fmu_directory" ,
297259 side_effect = ValidationError ("Foo" , []),
298260 ):
299- result = runner .invoke (app , ["init" , "--skip-config-import" ])
261+ result = runner .invoke (app , ["init" ])
300262 assert result .exit_code == 1
301263
302264 assert "Error: Unable to create .fmu directory" in result .stderr
@@ -309,7 +271,7 @@ def test_init_fmu_dir_some_error(in_fmu_project: Path) -> None:
309271 "fmu_settings_cli.init.cli.init_fmu_directory" ,
310272 side_effect = ValueError ("Foo" ),
311273 ):
312- result = runner .invoke (app , ["init" , "--skip-config-import" ])
274+ result = runner .invoke (app , ["init" ])
313275 assert result .exit_code == 1
314276
315277 assert "Error: Unable to create .fmu directory" in result .stderr
0 commit comments