MCPcopy Index your code
hub / github.com/python/cpython / test_random

Method test_random

Lib/test/test_regrtest.py:1094–1145  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 10

run_testsMethod · 0.95
create_testMethod · 0.80
parse_random_seedMethod · 0.80
regex_searchMethod · 0.80
assertTrueMethod · 0.80
isdigitMethod · 0.80
check_lineMethod · 0.80
dedentMethod · 0.45
groupMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected