@@ -114,6 +114,52 @@ def test_run_errors_on_stale_entry_when_skip_stale_tests_disabled
114114 end
115115 end
116116
117+ def test_run_sets_timestamps_on_load_error_result
118+ loader = CI ::Queue ::FileLoader . new
119+ resolver = CI ::Queue ::ClassResolver
120+ error = StandardError . new ( 'boom' )
121+ example = LazySingleExample . new ( 'MissingClass' , 'test_missing' , '/tmp/missing.rb' , loader : loader , resolver : resolver , load_error : error )
122+
123+ result = example . run
124+
125+ assert result . error?
126+ assert_kind_of Integer , result . start_timestamp
127+ assert_kind_of Integer , result . finish_timestamp
128+ assert result . finish_timestamp >= result . start_timestamp
129+ end
130+
131+ def test_run_sets_timestamps_on_stale_skip_result
132+ Dir . mktmpdir do |dir |
133+ class_name = "StaleTimestamp#{ Process . pid } #{ rand ( 1000 ) } "
134+ file_path = File . join ( dir , "stale_timestamp_test.rb" )
135+ File . write (
136+ file_path ,
137+ "class #{ class_name } < Minitest::Test\n " \
138+ " def test_exists\n " \
139+ " assert true\n " \
140+ " end\n " \
141+ "end\n "
142+ )
143+
144+ loader = CI ::Queue ::FileLoader . new
145+ resolver = CI ::Queue ::ClassResolver
146+ example = LazySingleExample . new ( class_name , 'test_no_longer_exists' , file_path , loader : loader , resolver : resolver )
147+
148+ old_queue = Minitest . queue
149+ Minitest . queue = Struct . new ( :config ) . new ( CI ::Queue ::Configuration . new ( skip_stale_tests : true ) )
150+
151+ result = example . run
152+
153+ assert result . skipped?
154+ assert_kind_of Integer , result . start_timestamp
155+ assert_kind_of Integer , result . finish_timestamp
156+ assert result . finish_timestamp >= result . start_timestamp
157+ ensure
158+ Minitest . queue = old_queue
159+ Object . send ( :remove_const , class_name ) if Object . const_defined? ( class_name )
160+ end
161+ end
162+
117163 def test_marshal_round_trip
118164 Dir . mktmpdir do |dir |
119165 class_name = "LazyMarshal#{ Process . pid } #{ rand ( 1000 ) } "
0 commit comments