|
| 1 | +from wfl.calculators.utils import clean_rundir |
| 2 | + |
| 3 | +# def clean_rundir(rundir, keep_files, default_keep_files, calculation_succeeded): |
| 4 | + |
| 5 | +all_files = ["a", "aa", "b", "c", "d"] |
| 6 | +default_keep_files = ["a*", "b"] |
| 7 | +actual_default_keep_files = ["a", "aa", "b"] |
| 8 | + |
| 9 | +def create_files(dir): |
| 10 | + for filename in all_files: |
| 11 | + with open(dir / filename, "w") as fout: |
| 12 | + fout.write("content\n") |
| 13 | + |
| 14 | +def check_dir(dir, files): |
| 15 | + if files is None: |
| 16 | + # even path doesn't exist |
| 17 | + assert not dir.is_dir() |
| 18 | + return |
| 19 | + |
| 20 | + files = set(files) |
| 21 | + |
| 22 | + # all expected files are present |
| 23 | + for file in files: |
| 24 | + assert (dir / file).is_file() |
| 25 | + # all present files are expected |
| 26 | + for file in dir.iterdir(): |
| 27 | + assert file.name in files |
| 28 | + |
| 29 | +def test_clean_rundir(tmp_path): |
| 30 | + # keep True |
| 31 | + # keep all files regardless of success |
| 32 | + for succ, files in [(True, all_files), (False, all_files)]: |
| 33 | + p = tmp_path / f"True_{succ}" |
| 34 | + p.mkdir() |
| 35 | + create_files(p) |
| 36 | + clean_rundir(p, True, default_keep_files, calculation_succeeded=succ) |
| 37 | + check_dir(p, files) |
| 38 | + |
| 39 | + # keep False |
| 40 | + # succeeded means keep nothing, failed means keep default |
| 41 | + for succ, files in [(True, None), (False, actual_default_keep_files)]: |
| 42 | + p = tmp_path / f"False_{succ}" |
| 43 | + p.mkdir() |
| 44 | + create_files(p) |
| 45 | + clean_rundir(p, False, default_keep_files, calculation_succeeded=succ) |
| 46 | + check_dir(p, files) |
| 47 | + |
| 48 | + # keep subset of default |
| 49 | + # succeeded means keep subset, failed means keep default |
| 50 | + for succ, files in [(True, ["a"]), (False, actual_default_keep_files)]: |
| 51 | + p = tmp_path / f"a_{succ}" |
| 52 | + p.mkdir() |
| 53 | + create_files(p) |
| 54 | + clean_rundir(p, ["a"], default_keep_files, calculation_succeeded=succ) |
| 55 | + check_dir(p, files) |
| 56 | + |
| 57 | + # keep different set from default |
| 58 | + # succeeded means keep set, failed means keep union of default and set |
| 59 | + for succ, files in [(True, ["a", "c"]), (False, actual_default_keep_files + ["a", "c"])]: |
| 60 | + p = tmp_path / f"ac_{succ}" |
| 61 | + p.mkdir() |
| 62 | + create_files(p) |
| 63 | + clean_rundir(p, ["a", "c"], default_keep_files, calculation_succeeded=succ) |
| 64 | + check_dir(p, files) |
0 commit comments