Skip to content

Commit ddc129c

Browse files
committed
testing.results.assert_job_results_allclose: add guardrails against passing single file
instead of folder
1 parent c5c2cc5 commit ddc129c

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

openeo/testing/results.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,10 +396,10 @@ def _as_job_results_download(
396396
_log.info(f"Downloading results from job {job_results.get_job_id()} to {download_dir}")
397397
job_results.download_files(target=download_dir)
398398
job_results = download_dir
399-
if isinstance(job_results, (str, Path)):
400-
return Path(job_results)
399+
if isinstance(job_results, (str, Path)) and (job_results := Path(job_results)).is_dir():
400+
return job_results
401401
else:
402-
raise ValueError(f"Unsupported type: {type(job_results)}")
402+
raise ValueError(f"Expected a directory with job result assets, but got {job_results!r}")
403403

404404

405405
def _compare_job_results(
@@ -425,6 +425,8 @@ def _compare_job_results(
425425

426426
actual_filenames = set(p.name for p in actual_dir.glob("*") if p.is_file())
427427
expected_filenames = set(p.name for p in expected_dir.glob("*") if p.is_file())
428+
if len(actual_filenames) == 0 or len(expected_filenames) == 0:
429+
_log.warning(f"Empty actual/expected listing: {actual_filenames=} {expected_filenames=}")
428430
if actual_filenames != expected_filenames:
429431
all_issues.append(f"File set mismatch: {actual_filenames} != {expected_filenames}")
430432

tests/testing/test_results.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,3 +619,11 @@ def test_assert_job_results_allclose_derived_from_mismatch(self, tmp_path, actua
619619
message="Differing 'derived_from' links.*1 common, 1 only in actual, 2 only in expected.*only in actual.*bla_666.*only in expected.*bla_3"
620620
):
621621
assert_job_results_allclose(actual=actual_dir, expected=expected_dir, tmp_path=tmp_path)
622+
623+
def test_allclose_must_be_folder(self, tmp_path, actual_dir, expected_dir):
624+
expected = expected_dir / "readme.md"
625+
expected.write_text("Hello world")
626+
actual = actual_dir / "readme.md"
627+
actual.write_text("Wello Horld")
628+
with pytest.raises(ValueError, match="Expected a directory"):
629+
assert_job_results_allclose(actual=actual, expected=expected, tmp_path=tmp_path)

0 commit comments

Comments
 (0)