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 (
@@ -230,26 +212,6 @@ def test_init_raises_when_import_drogon_masterdata(
230212 assert "Reason: Invalid name in 'model': Drogon" in result .stderr
231213 assert "Success: All done!" in result .stdout
232214
233-
234- def test_init_skips_raising_when_import_drogon_masterdata_with_skip (
235- in_fmu_project : Path , global_variables_with_masterdata : dict [str , Any ]
236- ) -> None :
237- """Tests that 'fmu init' skips raising on Drogon masterdata with skip flag."""
238- tmp_path = in_fmu_project
239-
240- fmuconfig_out = tmp_path / "fmuconfig/output"
241- fmuconfig_out .mkdir (parents = True , exist_ok = True )
242-
243- (fmuconfig_out / "global_variables.yml" ).write_text (
244- yaml .dump (global_variables_with_masterdata )
245- )
246-
247- result = runner .invoke (app , ["init" , "--skip-config-import" ])
248- assert result .exit_code == 0
249- # _not_ in
250- assert "Reason: Invalid name in 'model': Drogon" not in result .stderr
251- assert "Success: All done!" in result .stdout
252-
253215 fmu_dir = find_nearest_fmu_directory ()
254216 fmu_dir_cfg = fmu_dir .config .load ()
255217 assert fmu_dir_cfg .masterdata is None
@@ -262,7 +224,7 @@ def test_init_fmu_dir_exists_error(in_fmu_project: Path) -> None:
262224 fmu_dir = in_fmu_project / ".fmu"
263225 fmu_dir .mkdir ()
264226
265- result = runner .invoke (app , ["init" , "--skip-config-import" ])
227+ result = runner .invoke (app , ["init" ])
266228 assert result .exit_code == 1
267229 assert "Error: Unable to create .fmu directory" in result .stderr
268230 assert ".fmu already exists" in result .stderr
@@ -275,7 +237,7 @@ def test_init_fmu_dir_no_permissions_error(in_fmu_project: Path) -> None:
275237 with patch (
276238 "fmu_settings_cli.init.cli.init_fmu_directory" , side_effect = PermissionError
277239 ):
278- result = runner .invoke (app , ["init" , "--skip-config-import" ])
240+ result = runner .invoke (app , ["init" ])
279241 assert result .exit_code == 1
280242 assert "Error: Unable to create .fmu directory" in result .stderr
281243 assert "lacking permissions to create" in result .stderr
@@ -291,7 +253,7 @@ def test_init_fmu_dir_validation_error(in_fmu_project: Path) -> None:
291253 "fmu_settings_cli.init.cli.init_fmu_directory" ,
292254 side_effect = ValidationError ("Foo" , []),
293255 ):
294- result = runner .invoke (app , ["init" , "--skip-config-import" ])
256+ result = runner .invoke (app , ["init" ])
295257 assert result .exit_code == 1
296258
297259 assert "Error: Unable to create .fmu directory" in result .stderr
@@ -304,7 +266,7 @@ def test_init_fmu_dir_some_error(in_fmu_project: Path) -> None:
304266 "fmu_settings_cli.init.cli.init_fmu_directory" ,
305267 side_effect = ValueError ("Foo" ),
306268 ):
307- result = runner .invoke (app , ["init" , "--skip-config-import" ])
269+ result = runner .invoke (app , ["init" ])
308270 assert result .exit_code == 1
309271
310272 assert "Error: Unable to create .fmu directory" in result .stderr
0 commit comments