From a06aac7cf88f77d2fc4bb9dd7ae9de2155c3236b Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=A9sar=20Sagaert?= Date: Thu, 17 Jul 2025 09:42:25 +0200 Subject: [PATCH] fix: try to stabilize tests on windows (#1980) --- .../self_update/specific_version/test.py | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/testsuite/tests/self_update/specific_version/test.py b/testsuite/tests/self_update/specific_version/test.py index e4741d19..372d6cdc 100644 --- a/testsuite/tests/self_update/specific_version/test.py +++ b/testsuite/tests/self_update/specific_version/test.py @@ -11,6 +11,7 @@ import os v_init = drivers.alr.run_alr("version").out shutil.copy(os.environ["ALR_PATH"], ".") +local_alr = f".{os.sep}{exe_name('alr')}" curl_script = """\ import os @@ -20,19 +21,14 @@ import sys env2 = os.environ.copy() env2["PATH"] = env2["PATH"].split(os.pathsep, 1)[1] token_header = [] -if "GITHUB_TOKEN" in os.environ and any( - a.startswith("https://api.github.com") for a in sys.argv[1:] -): +if "GITHUB_TOKEN" in os.environ: token_header = ["-H", f"Authorization: Bearer {os.environ['GITHUB_TOKEN']}"] subprocess.call(["curl", *token_header, *sys.argv[1:]], env=env2) """ def run_alr(args: list[str], expect_success: bool = True) -> str: - p = run( - [f".{os.sep}{exe_name('alr')}", "-n", *args], - capture_output=True, - ) + p = run([local_alr, "-n", *args], capture_output=True) assert expect_success == ( p.returncode == 0 ), f"""stdout: {p.stdout.decode(errors="replace")} @@ -41,6 +37,7 @@ stderr: {p.stderr.decode(errors="replace")}""" with MockCommand("curl", curl_script, "curl_override"): + initial_mtime = os.path.getmtime(local_alr) out = run_alr(["self-update", "--release=2.1.0"]) if ( @@ -50,16 +47,16 @@ with MockCommand("curl", curl_script, "curl_override"): print("SUCCESS") __import__("sys").exit() - out = None - for i in range(10): + for _ in range(10): + time.sleep(1) # on windows, the self-update process runs detached, # so we run this in a loop until it's done (or failed) - out = run_alr(["--version"]) - if "2.1" in out: + if os.path.getmtime(local_alr) != initial_mtime: + # detect changes by getting the file's modification time + time.sleep(0.25) # ongoing copy? break - time.sleep(1) -assert_substring("2.1", out) +assert_substring("2.1", run_alr(["--version"])) assert drivers.alr.run_alr("version").out == v_init # ensure the main alr is unchanged -- 2.39.5