From 6b499281ffd1c0e5a2ea0579756038ffd0e98fe8 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 1 Oct 2023 02:56:33 +0200 Subject: [PATCH] gh-110164: regrtest disables random if SOURCE_DATE_EPOCH If the SOURCE_DATE_EPOCH environment variable is defined, regrtest now disables randomization of tests. --- Lib/test/libregrtest/main.py | 9 +++++++-- Lib/test/test_regrtest.py | 8 ++++++++ .../2023-10-01-02-58-00.gh-issue-110164.z7TMCq.rst | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2023-10-01-02-58-00.gh-issue-110164.z7TMCq.rst diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index 19bf2358456036..0a7e1e6084cf01 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -106,8 +106,6 @@ def __init__(self, ns: Namespace, _add_python_opts: bool = False): self.fail_env_changed: bool = ns.fail_env_changed self.fail_rerun: bool = ns.fail_rerun self.forever: bool = ns.forever - self.randomize: bool = ns.randomize - self.random_seed: int | None = ns.random_seed self.output_on_failure: bool = ns.verbose3 self.timeout: float | None = ns.timeout if ns.huntrleaks: @@ -129,6 +127,13 @@ def __init__(self, ns: Namespace, _add_python_opts: bool = False): self.coverage_dir: StrPath | None = ns.coverdir self.tmp_dir: StrPath | None = ns.tempdir + # Randomize + self.randomize: bool = ns.randomize + self.random_seed: int | None = ns.random_seed + if 'SOURCE_DATE_EPOCH' in os.environ: + self.randomize = False + self.random_seed = None + # tests self.first_runtests: RunTests | None = None diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py index 0e052e28ec2609..38071341006092 100644 --- a/Lib/test/test_regrtest.py +++ b/Lib/test/test_regrtest.py @@ -148,6 +148,14 @@ def test_randomize(self): ns = self.parse_args([opt]) self.assertTrue(ns.randomize) + with os_helper.EnvironmentVarGuard() as env: + env['SOURCE_DATE_EPOCH'] = '1' + + ns = self.parse_args(['--randomize']) + regrtest = main.Regrtest(ns) + self.assertFalse(regrtest.randomize) + self.assertIsNone(regrtest.random_seed) + def test_randseed(self): ns = self.parse_args(['--randseed', '12345']) self.assertEqual(ns.random_seed, 12345) diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-10-01-02-58-00.gh-issue-110164.z7TMCq.rst b/Misc/NEWS.d/next/Core and Builtins/2023-10-01-02-58-00.gh-issue-110164.z7TMCq.rst new file mode 100644 index 00000000000000..086d70f30e204f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2023-10-01-02-58-00.gh-issue-110164.z7TMCq.rst @@ -0,0 +1,2 @@ +regrtest: If the ``SOURCE_DATE_EPOCH`` environment variable is defined, +regrtest now disables tests randomization. Patch by Victor Stinner.