@@ -51,6 +51,15 @@ def config_dir(tmpdir):
5151 return test_dir
5252
5353
54+ @pytest .fixture
55+ def env_dir (tmpdir ):
56+ """Pytest fixture used to generate an extra (external) config directory"""
57+ test_dir = tmpdir .mkdir ("fromenv" )
58+ test_dir .join ('fromenv.cfg' ).write ('' )
59+
60+ return test_dir
61+
62+
5463def test_green ():
5564 assert green ('hello' ) == '\x1b [32mhello\x1b [0m'
5665 assert green ('hello' , reset = False ) == '\x1b [32mhello'
@@ -232,8 +241,9 @@ def test_load_settings(config_dir):
232241 assert settings .basename == 'config'
233242
234243
235- def test_load_settings_arg_priority_over_env (monkeypatch , config_dir ):
244+ def test_load_settings_arg_priority_over_env (monkeypatch , config_dir , env_dir ):
236245 monkeypatch .setenv ('SOPEL_CONFIG' , 'fromenv' )
246+ monkeypatch .setenv ('SOPEL_CONFIG_DIR' , env_dir .strpath )
237247
238248 config_dir .join ('fromenv.cfg' ).write (TMP_CONFIG )
239249 config_dir .join ('fromarg.cfg' ).write (TMP_CONFIG )
@@ -248,6 +258,7 @@ def test_load_settings_arg_priority_over_env(monkeypatch, config_dir):
248258 settings = load_settings (options )
249259 assert isinstance (settings , config .Config )
250260 assert settings .basename == 'fromarg'
261+ assert os .path .dirname (settings .filename ) == config_dir .strpath
251262
252263
253264def test_load_settings_default (config_dir ):
@@ -261,18 +272,21 @@ def test_load_settings_default(config_dir):
261272 assert isinstance (settings , config .Config )
262273
263274
264- def test_load_settings_default_env_var (monkeypatch , config_dir ):
265- monkeypatch .setenv ('SOPEL_CONFIG' , 'config' )
275+ def test_load_settings_default_env_var (monkeypatch , config_dir , env_dir ):
276+ monkeypatch .setenv ('SOPEL_CONFIG' , 'fromenv' )
277+ monkeypatch .setenv ('SOPEL_CONFIG_DIR' , env_dir .strpath )
266278
267279 config_dir .join ('config.cfg' ).write (TMP_CONFIG )
280+ env_dir .join ('fromenv.cfg' ).write (TMP_CONFIG )
268281 parser = argparse .ArgumentParser ()
269282 add_common_arguments (parser )
270283
271- options = parser .parse_args (['--config-dir' , config_dir . strpath ])
284+ options = parser .parse_args ([])
272285
273286 settings = load_settings (options )
274287 assert isinstance (settings , config .Config )
275- assert settings .basename == 'config'
288+ assert settings .basename == 'fromenv'
289+ assert os .path .dirname (settings .filename ) == env_dir .strpath
276290
277291
278292def test_load_settings_default_not_found (config_dir ):
0 commit comments