(self)
| 1058 | stats=0) |
| 1059 | |
| 1060 | def test_random(self): |
| 1061 | # test -r and --randseed command line option |
| 1062 | code = textwrap.dedent(""" |
| 1063 | import random |
| 1064 | print("TESTRANDOM: %s" % random.randint(1, 1000)) |
| 1065 | """) |
| 1066 | test = self.create_test('random', code) |
| 1067 | |
| 1068 | # first run to get the output with the random seed |
| 1069 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN) |
| 1070 | randseed = self.parse_random_seed(output) |
| 1071 | match = self.regex_search(r'TESTRANDOM: ([0-9]+)', output) |
| 1072 | test_random = int(match.group(1)) |
| 1073 | |
| 1074 | # try to reproduce with the random seed |
| 1075 | output = self.run_tests('-r', f'--randseed={randseed}', test, |
| 1076 | exitcode=EXITCODE_NO_TESTS_RAN) |
| 1077 | randseed2 = self.parse_random_seed(output) |
| 1078 | self.assertEqual(randseed2, randseed) |
| 1079 | |
| 1080 | match = self.regex_search(r'TESTRANDOM: ([0-9]+)', output) |
| 1081 | test_random2 = int(match.group(1)) |
| 1082 | self.assertEqual(test_random2, test_random) |
| 1083 | |
| 1084 | # check that random.seed is used by default |
| 1085 | output = self.run_tests(test, exitcode=EXITCODE_NO_TESTS_RAN) |
| 1086 | randseed = self.parse_random_seed(output) |
| 1087 | self.assertTrue(randseed.isdigit(), randseed) |
| 1088 | |
| 1089 | # check SOURCE_DATE_EPOCH (integer) |
| 1090 | timestamp = '1697839080' |
| 1091 | env = dict(os.environ, SOURCE_DATE_EPOCH=timestamp) |
| 1092 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN, |
| 1093 | env=env) |
| 1094 | randseed = self.parse_random_seed(output) |
| 1095 | self.assertEqual(randseed, timestamp) |
| 1096 | self.check_line(output, 'TESTRANDOM: 520') |
| 1097 | |
| 1098 | # check SOURCE_DATE_EPOCH (string) |
| 1099 | env = dict(os.environ, SOURCE_DATE_EPOCH='XYZ') |
| 1100 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN, |
| 1101 | env=env) |
| 1102 | randseed = self.parse_random_seed(output) |
| 1103 | self.assertEqual(randseed, 'XYZ') |
| 1104 | self.check_line(output, 'TESTRANDOM: 22') |
| 1105 | |
| 1106 | # check SOURCE_DATE_EPOCH (empty string): ignore the env var |
| 1107 | env = dict(os.environ, SOURCE_DATE_EPOCH='') |
| 1108 | output = self.run_tests('-r', test, exitcode=EXITCODE_NO_TESTS_RAN, |
| 1109 | env=env) |
| 1110 | randseed = self.parse_random_seed(output) |
| 1111 | self.assertTrue(randseed.isdigit(), randseed) |
| 1112 | |
| 1113 | def test_fromfile(self): |
| 1114 | # test --fromfile |
nothing calls this directly
no test coverage detected