Skip to content

Commit bfbb4bb

Browse files
reformatted tests
1 parent d8b411c commit bfbb4bb

File tree

1 file changed

+64
-21
lines changed

1 file changed

+64
-21
lines changed

src/diffpy/labpdfproc/tests/test_tools.py

Lines changed: 64 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -245,74 +245,118 @@ def test_load_user_metadata_bad(inputs, msg):
245245
actual_args = load_user_metadata(actual_args)
246246

247247

248-
params_user_info = [
249-
# No config file, check username and email are properly loaded and config file in ~ is created and written
248+
params_user_info_without_conf_file = [
250249
(
251250
["new_username", "[email protected]"],
252-
["input_dir", "input_dir/diffpyconfig.json", "diffpyconfig.json", "diffpyconfig.json"],
253251
["new_username", "[email protected]", "new_username", "[email protected]"],
254252
),
255-
# Config file in cwd, check username and email are properly loaded and config file is unchanged
253+
]
254+
255+
256+
@pytest.mark.parametrize("inputs, expected", params_user_info_without_conf_file)
257+
def test_load_user_info_without_conf_file(monkeypatch, inputs, expected, user_filesystem):
258+
os.chdir(user_filesystem)
259+
expected_args_username, expected_args_email, expected_conf_username, expected_conf_email = expected
260+
mock_prompt_user_info = iter(inputs)
261+
monkeypatch.setattr("builtins.input", lambda _: next(mock_prompt_user_info))
262+
monkeypatch.setattr("diffpy.labpdfproc.user_config.CWD_CONFIG_PATH", Path.cwd() / "diffpyconfig.json")
263+
monkeypatch.setattr("diffpy.labpdfproc.user_config.HOME_CONFIG_PATH", user_filesystem / "diffpyconfig.json")
264+
265+
cli_inputs = ["2.5", "data.xy"]
266+
actual_args = get_args(cli_inputs)
267+
actual_args = load_user_info(actual_args)
268+
assert actual_args.username == expected_args_username
269+
assert actual_args.email == expected_args_email
270+
with open(user_filesystem / "diffpyconfig.json", "r") as f:
271+
config_data = json.load(f)
272+
assert config_data == {"username": expected_conf_username, "email": expected_conf_email}
273+
274+
275+
params_user_info_with_conf_file_in_cwd = [
256276
(
257277
["", ""],
258-
["conf_dir", "conf_dir/diffpyconfig.json", "diffpyconfig.json", "conf_dir/diffpyconfig.json"],
259278
["good_username", "[email protected]", "good_username", "[email protected]"],
260279
),
261280
(
262281
["new_username", ""],
263-
["conf_dir", "conf_dir/diffpyconfig.json", "diffpyconfig.json", "conf_dir/diffpyconfig.json"],
264282
["new_username", "[email protected]", "good_username", "[email protected]"],
265283
),
266284
(
267285
268-
["conf_dir", "conf_dir/diffpyconfig.json", "diffpyconfig.json", "conf_dir/diffpyconfig.json"],
269286
["good_username", "[email protected]", "good_username", "[email protected]"],
270287
),
271288
(
272289
["new_username", "[email protected]"],
273-
["conf_dir", "conf_dir/diffpyconfig.json", "diffpyconfig.json", "conf_dir/diffpyconfig.json"],
274290
["new_username", "[email protected]", "good_username", "[email protected]"],
275291
),
276-
# Config file in home dir not in cwd, check username and email are properly loaded and config file is unchanged
292+
]
293+
294+
295+
@pytest.mark.parametrize("inputs, expected", params_user_info_with_conf_file_in_cwd)
296+
def test_load_user_info_with_conf_file_cwd(monkeypatch, inputs, expected, user_filesystem):
297+
# test it works when config file is in current directory
298+
# check username and email are correctly loaded and config file is not modified
299+
expected_args_username, expected_args_email, expected_conf_username, expected_conf_email = expected
300+
301+
os.chdir(user_filesystem / "conf_dir")
302+
mock_prompt_user_info = iter(inputs)
303+
monkeypatch.setattr("builtins.input", lambda _: next(mock_prompt_user_info))
304+
monkeypatch.setattr("diffpy.labpdfproc.user_config.CWD_CONFIG_PATH", Path.cwd() / "diffpyconfig.json")
305+
monkeypatch.setattr("diffpy.labpdfproc.user_config.HOME_CONFIG_PATH", user_filesystem / "diffpyconfig.json")
306+
307+
cli_inputs = ["2.5", "data.xy"]
308+
actual_args = get_args(cli_inputs)
309+
actual_args = load_user_info(actual_args)
310+
assert actual_args.username == expected_args_username
311+
assert actual_args.email == expected_args_email
312+
with open(Path.cwd() / "diffpyconfig.json", "r") as f:
313+
config_data = json.load(f)
314+
assert config_data == {"username": expected_conf_username, "email": expected_conf_email}
315+
316+
317+
test_load_user_info_with_conf_file_not_cwd = [
277318
(
278319
["", ""],
279-
["input_dir", "input_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json"],
280320
["good_username", "[email protected]", "good_username", "[email protected]"],
281321
),
282322
(
283323
["new_username", ""],
284-
["input_dir", "input_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json"],
285324
["new_username", "[email protected]", "good_username", "[email protected]"],
286325
),
287326
(
288327
289-
["input_dir", "input_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json"],
290328
["good_username", "[email protected]", "good_username", "[email protected]"],
291329
),
292330
(
293331
["new_username", "[email protected]"],
294-
["input_dir", "input_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json", "conf_dir/diffpyconfig.json"],
295332
["new_username", "[email protected]", "good_username", "[email protected]"],
296333
),
297334
]
298335

299336

300-
@pytest.mark.parametrize("inputs, paths, expected", params_user_info)
301-
def test_load_user_info(monkeypatch, inputs, paths, expected, user_filesystem):
302-
os.chdir(user_filesystem / paths[0])
337+
@pytest.mark.parametrize("inputs, expected", test_load_user_info_with_conf_file_not_cwd)
338+
def test_load_user_info_with_conf_file_not_cwd(monkeypatch, inputs, expected, user_filesystem):
339+
# test it works when config file is in home directory and not in current directory
340+
# check username and email are correctly loaded and config file is not modified
341+
user_config_data = {"username": "good_username", "email": "[email protected]"}
342+
with open(user_filesystem / "diffpyconfig.json", "w") as f:
343+
json.dump(user_config_data, f)
303344
expected_args_username, expected_args_email, expected_conf_username, expected_conf_email = expected
345+
346+
new_dir = user_filesystem / "new_dir"
347+
new_dir.mkdir(parents=True, exist_ok=True)
348+
os.chdir(new_dir)
304349
mock_prompt_user_info = iter(inputs)
305350
monkeypatch.setattr("builtins.input", lambda _: next(mock_prompt_user_info))
306-
monkeypatch.setattr("diffpy.labpdfproc.user_config.CWD_CONFIG_PATH", user_filesystem / paths[1])
307-
monkeypatch.setattr("diffpy.labpdfproc.user_config.HOME_CONFIG_PATH", user_filesystem / paths[2])
351+
monkeypatch.setattr("diffpy.labpdfproc.user_config.CWD_CONFIG_PATH", Path.cwd() / "diffpyconfig.json")
352+
monkeypatch.setattr("diffpy.labpdfproc.user_config.HOME_CONFIG_PATH", user_filesystem / "diffpyconfig.json")
308353

309354
cli_inputs = ["2.5", "data.xy"]
310355
actual_args = get_args(cli_inputs)
311356
actual_args = load_user_info(actual_args)
312-
313357
assert actual_args.username == expected_args_username
314358
assert actual_args.email == expected_args_email
315-
with open(user_filesystem / paths[3], "r") as f:
359+
with open(user_filesystem / "diffpyconfig.json", "r") as f:
316360
config_data = json.load(f)
317361
assert config_data == {"username": expected_conf_username, "email": expected_conf_email}
318362

@@ -334,7 +378,6 @@ def test_load_user_info_bad(monkeypatch, inputs, msg, user_filesystem):
334378
input_username, input_email = inputs
335379
mock_prompt_user_info = iter([input_username, input_email])
336380
monkeypatch.setattr("builtins.input", lambda _: next(mock_prompt_user_info))
337-
monkeypatch.setattr("diffpy.labpdfproc.user_config.CWD_CONFIG_PATH", Path.cwd() / "diffpyconfig.json")
338381
monkeypatch.setattr("diffpy.labpdfproc.user_config.HOME_CONFIG_PATH", user_filesystem / "diffpyconfig.json")
339382

340383
cli_inputs = ["2.5", "data.xy"]

0 commit comments

Comments
 (0)