(self, run_workers: bool)
| 2119 | stats=TestStats(1, 1, 0)) |
| 2120 | |
| 2121 | def _check_random_seed(self, run_workers: bool): |
| 2122 | # gh-109276: When -r/--randomize is used, random.seed() is called |
| 2123 | # with the same random seed before running each test file. |
| 2124 | code = textwrap.dedent(r''' |
| 2125 | import random |
| 2126 | import unittest |
| 2127 | |
| 2128 | class RandomSeedTest(unittest.TestCase): |
| 2129 | def test_randint(self): |
| 2130 | numbers = [random.randint(0, 1000) for _ in range(10)] |
| 2131 | print(f"Random numbers: {numbers}") |
| 2132 | ''') |
| 2133 | tests = [self.create_test(name=f'test_random{i}', code=code) |
| 2134 | for i in range(1, 3+1)] |
| 2135 | |
| 2136 | random_seed = 856_656_202 |
| 2137 | cmd = ["--randomize", f"--randseed={random_seed}"] |
| 2138 | if run_workers: |
| 2139 | # run as many worker processes than the number of tests |
| 2140 | cmd.append(f'-j{len(tests)}') |
| 2141 | cmd.extend(tests) |
| 2142 | output = self.run_tests(*cmd) |
| 2143 | |
| 2144 | random.seed(random_seed) |
| 2145 | # Make the assumption that nothing consume entropy between libregrest |
| 2146 | # setup_tests() which calls random.seed() and RandomSeedTest calling |
| 2147 | # random.randint(). |
| 2148 | numbers = [random.randint(0, 1000) for _ in range(10)] |
| 2149 | expected = f"Random numbers: {numbers}" |
| 2150 | |
| 2151 | regex = r'^Random numbers: .*$' |
| 2152 | matches = re.findall(regex, output, flags=re.MULTILINE) |
| 2153 | self.assertEqual(matches, [expected] * len(tests)) |
| 2154 | |
| 2155 | def test_random_seed(self): |
| 2156 | self._check_random_seed(run_workers=False) |
no test coverage detected