From 4540ca1568fa422a6505e1f2d0274684b43b0832 Mon Sep 17 00:00:00 2001 From: coloursofnoise Date: Sat, 5 Aug 2023 16:49:17 -0700 Subject: [PATCH] Ensure os.stat returns consistent result in mocked unit tests --- mons/commands/main.py | 2 +- tests/conftest.py | 9 +++++++++ tests/integration/test_main_install.py | 1 - 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mons/commands/main.py b/mons/commands/main.py index 0068bff..faf6c53 100644 --- a/mons/commands/main.py +++ b/mons/commands/main.py @@ -357,7 +357,7 @@ def determine_configuration(srcdir: fs.Directory): # Artifact still has to be shared between all projects newest_artifact, _ = max( ( - (output, os.stat(fs.joindir(srcdir, proj, "bin", output))) + (output, os.stat(fs.joindir(srcdir, proj, "bin", output)).st_mtime_ns) for proj in artifacts.keys() for output in common_outputs ), diff --git a/tests/conftest.py b/tests/conftest.py index 7ffbd83..1b618ea 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -162,11 +162,14 @@ def mock_filesystem(request, tmp_path): yield root return + paths = list() + def create_fs(root, mockup): if isinstance(mockup, dict): for dir, contents in mockup.items(): path = os.path.join(root, dir) os.mkdir(path) + paths.append(path) create_fs(path, contents) elif isinstance(mockup, (list, tuple)): for node in mockup: @@ -179,6 +182,12 @@ def create_fs(root, mockup): else: with open(path, "x"): pass + paths.append(path) create_fs(root, mockup) + + # set consistent last modified/accessed times for created paths + for i, path in enumerate(paths): + os.utime(path, (i, i)) + yield os.walk(root) if walk else root diff --git a/tests/integration/test_main_install.py b/tests/integration/test_main_install.py index 8319f5f..6d813fa 100644 --- a/tests/integration/test_main_install.py +++ b/tests/integration/test_main_install.py @@ -85,7 +85,6 @@ def test_determine_configuration_no_common(caplog, mock_filesystem): ) def test_determine_configuration_most_recent(caplog, mock_filesystem): with caplog.at_level(logging.DEBUG, main.__name__): - # result may be inconsistent because files are created so close together. assert main.determine_configuration(mock_filesystem) == "RELEASE/net452" assert "Most recent" in caplog.text