(self)
| 1092 | stats=0) |
| 1093 | |
| 1094 | def test_random(self): |
| 1095 | # test -r and --randseed command line option |
| 1096 | code = textwrap.dedent(""" |
| 1097 | import random |
| 1098 | print("TESTRANDOM: %s" % random.randint(1, 1000)) |
| 1099 | """) |
| 1100 | test = self.create_test('random', code) |
| 1101 | |
| 1102 | # first run to get the output with the random seed |
| 1103 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN) |
| 1104 | randseed = self.parse_random_seed(output) |
| 1105 | match = self.regex_search(r'TESTRANDOM: ([0-9]+)', output) |
| 1106 | test_random = int(match.group(1)) |
| 1107 | |
| 1108 | # try to reproduce with the random seed |
| 1109 | output = self.run_tests('-r', f'--randseed={randseed}', test, |
| 1110 | exitcode=EXITCODE_NO_TESTS_RAN) |
| 1111 | randseed2 = self.parse_random_seed(output) |
| 1112 | self.assertEqual(randseed2, randseed) |
| 1113 | |
| 1114 | match = self.regex_search(r'TESTRANDOM: ([0-9]+)', output) |
| 1115 | test_random2 = int(match.group(1)) |
| 1116 | self.assertEqual(test_random2, test_random) |
| 1117 | |
| 1118 | # check that random.seed is used by default |
| 1119 | output = self.run_tests(test, exitcode=EXITCODE_NO_TESTS_RAN) |
| 1120 | randseed = self.parse_random_seed(output) |
| 1121 | self.assertTrue(randseed.isdigit(), randseed) |
| 1122 | |
| 1123 | # check SOURCE_DATE_EPOCH (integer) |
| 1124 | timestamp = '1697839080' |
| 1125 | env = dict(os.environ, SOURCE_DATE_EPOCH=timestamp) |
| 1126 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN, |
| 1127 | env=env) |
| 1128 | randseed = self.parse_random_seed(output) |
| 1129 | self.assertEqual(randseed, timestamp) |
| 1130 | self.check_line(output, 'TESTRANDOM: 520') |
| 1131 | |
| 1132 | # check SOURCE_DATE_EPOCH (string) |
| 1133 | env = dict(os.environ, SOURCE_DATE_EPOCH='XYZ') |
| 1134 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN, |
| 1135 | env=env) |
| 1136 | randseed = self.parse_random_seed(output) |
| 1137 | self.assertEqual(randseed, 'XYZ') |
| 1138 | self.check_line(output, 'TESTRANDOM: 22') |
| 1139 | |
| 1140 | # check SOURCE_DATE_EPOCH (empty string): ignore the env var |
| 1141 | env = dict(os.environ, SOURCE_DATE_EPOCH='') |
| 1142 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN, |
| 1143 | env=env) |
| 1144 | randseed = self.parse_random_seed(output) |
| 1145 | self.assertTrue(randseed.isdigit(), randseed) |
| 1146 | |
| 1147 | def test_fromfile(self): |
| 1148 | # test --fromfile |
nothing calls this directly
no test coverage detected