@@ -149,12 +149,12 @@ def test_randomize(self):
149
149
self .assertTrue (ns .randomize )
150
150
151
151
with os_helper .EnvironmentVarGuard () as env :
152
- env ['SOURCE_DATE_EPOCH' ] = '1 '
152
+ env ['SOURCE_DATE_EPOCH' ] = '1697839080 '
153
153
154
154
ns = self .parse_args (['--randomize' ])
155
155
regrtest = main .Regrtest (ns )
156
156
self .assertFalse (regrtest .randomize )
157
- self .assertIsNone (regrtest .random_seed )
157
+ self .assertEqual (regrtest .random_seed , '1697839080' )
158
158
159
159
def test_randseed (self ):
160
160
ns = self .parse_args (['--randseed' , '12345' ])
@@ -388,7 +388,13 @@ def check_ci_mode(self, args, use_resources, rerun=True):
388
388
389
389
# Check Regrtest attributes which are more reliable than Namespace
390
390
# which has an unclear API
391
- regrtest = main .Regrtest (ns )
391
+ with os_helper .EnvironmentVarGuard () as env :
392
+ # Ignore SOURCE_DATE_EPOCH env var if it's set
393
+ if 'SOURCE_DATE_EPOCH' in env :
394
+ del env ['SOURCE_DATE_EPOCH' ]
395
+
396
+ regrtest = main .Regrtest (ns )
397
+
392
398
self .assertEqual (regrtest .num_workers , - 1 )
393
399
self .assertEqual (regrtest .want_rerun , rerun )
394
400
self .assertTrue (regrtest .randomize )
@@ -661,21 +667,26 @@ def list_regex(line_format, tests):
661
667
state = f'{ state } then { new_state } '
662
668
self .check_line (output , f'Result: { state } ' , full = True )
663
669
664
- def parse_random_seed (self , output ):
665
- match = self .regex_search (r'Using random seed ([0-9]+)' , output )
666
- randseed = int (match .group (1 ))
667
- self .assertTrue (0 <= randseed , randseed )
668
- return randseed
670
+ def parse_random_seed (self , output : str ) -> str :
671
+ match = self .regex_search (r'Using random seed: (.*)' , output )
672
+ return match .group (1 )
669
673
670
674
def run_command (self , args , input = None , exitcode = 0 , ** kw ):
671
675
if not input :
672
676
input = ''
673
677
if 'stderr' not in kw :
674
678
kw ['stderr' ] = subprocess .STDOUT
679
+
680
+ env = kw .pop ('env' , None )
681
+ if env is None :
682
+ env = dict (os .environ )
683
+ env .pop ('SOURCE_DATE_EPOCH' , None )
684
+
675
685
proc = subprocess .run (args ,
676
686
text = True ,
677
687
input = input ,
678
688
stdout = subprocess .PIPE ,
689
+ env = env ,
679
690
** kw )
680
691
if proc .returncode != exitcode :
681
692
msg = ("Command %s failed with exit code %s, but exit code %s expected!\n "
@@ -751,7 +762,9 @@ def setUp(self):
751
762
self .regrtest_args .append ('-n' )
752
763
753
764
def check_output (self , output ):
754
- self .parse_random_seed (output )
765
+ randseed = self .parse_random_seed (output )
766
+ self .assertTrue (randseed .isdigit (), randseed )
767
+
755
768
self .check_executed_tests (output , self .tests ,
756
769
randomize = True , stats = len (self .tests ))
757
770
@@ -942,7 +955,7 @@ def test_random(self):
942
955
test_random = int (match .group (1 ))
943
956
944
957
# try to reproduce with the random seed
945
- output = self .run_tests ('-r' , '--randseed=%s' % randseed , test ,
958
+ output = self .run_tests ('-r' , f '--randseed={ randseed } ' , test ,
946
959
exitcode = EXITCODE_NO_TESTS_RAN )
947
960
randseed2 = self .parse_random_seed (output )
948
961
self .assertEqual (randseed2 , randseed )
@@ -953,7 +966,33 @@ def test_random(self):
953
966
954
967
# check that random.seed is used by default
955
968
output = self .run_tests (test , exitcode = EXITCODE_NO_TESTS_RAN )
956
- self .assertIsInstance (self .parse_random_seed (output ), int )
969
+ randseed = self .parse_random_seed (output )
970
+ self .assertTrue (randseed .isdigit (), randseed )
971
+
972
+ # check SOURCE_DATE_EPOCH (integer)
973
+ timestamp = '1697839080'
974
+ env = dict (os .environ , SOURCE_DATE_EPOCH = timestamp )
975
+ output = self .run_tests ('-r' , test , exitcode = EXITCODE_NO_TESTS_RAN ,
976
+ env = env )
977
+ randseed = self .parse_random_seed (output )
978
+ self .assertEqual (randseed , timestamp )
979
+ self .check_line (output , 'TESTRANDOM: 520' )
980
+
981
+ # check SOURCE_DATE_EPOCH (string)
982
+ env = dict (os .environ , SOURCE_DATE_EPOCH = 'XYZ' )
983
+ output = self .run_tests ('-r' , test , exitcode = EXITCODE_NO_TESTS_RAN ,
984
+ env = env )
985
+ randseed = self .parse_random_seed (output )
986
+ self .assertEqual (randseed , 'XYZ' )
987
+ self .check_line (output , 'TESTRANDOM: 22' )
988
+
989
+ # check SOURCE_DATE_EPOCH (empty string)
990
+ env = dict (os .environ , SOURCE_DATE_EPOCH = '' )
991
+ output = self .run_tests ('-r' , test , exitcode = EXITCODE_NO_TESTS_RAN ,
992
+ env = env )
993
+ randseed = self .parse_random_seed (output )
994
+ self .assertEqual (randseed , '' )
995
+ self .check_line (output , 'TESTRANDOM: 984' )
957
996
958
997
def test_fromfile (self ):
959
998
# test --fromfile
0 commit comments