@@ -15,19 +15,28 @@ def setup
1515 end
1616
1717 def test_aggregation
18+ reserve ( @queue , "a" )
1819 @reporter . record ( result ( 'a' , failure : "Something went wrong" ) )
20+ reserve ( @queue , "b" )
1921 @reporter . record ( result ( 'b' , unexpected_error : true ) )
22+ reserve ( @queue , "h" )
2023 @reporter . record ( result ( 'h' , failure : "Something went wrong" , requeued : true ) )
2124
2225 second_queue = worker ( 2 )
2326 second_reporter = BuildStatusRecorder . new ( build : second_queue . build )
2427 second_reporter . start
2528
29+ reserve ( second_queue , "c" )
2630 second_reporter . record ( result ( 'c' , failure : "Something went wrong" ) )
31+ reserve ( second_queue , "d" )
2732 second_reporter . record ( result ( 'd' , unexpected_error : true ) )
33+ reserve ( second_queue , "e" )
2834 second_reporter . record ( result ( 'e' , skipped : true ) )
35+ reserve ( second_queue , "f" )
2936 second_reporter . record ( result ( 'f' , unexpected_error : true ) )
37+ reserve ( second_queue , "g" )
3038 second_reporter . record ( result ( 'g' , requeued : true ) )
39+ reserve ( second_queue , "h" )
3140 second_reporter . record ( result ( 'h' , skipped : true , requeued : true ) )
3241
3342 assert_equal 9 , summary . assertions
@@ -40,19 +49,39 @@ def test_aggregation
4049 end
4150
4251 def test_retrying_test
43- @reporter . record ( result ( 'a' , failure : "Something went wrong" ) )
44- assert_equal 1 , summary . error_reports . size
52+ yielded = false
53+
54+ test = nil
55+
56+ @queue . poll do |_test |
57+ test = _test
58+ assert_equal "a" , test . method_name
59+ @reporter . record ( result ( test . method_name , failure : "Something went wrong" ) )
60+
61+ assert_equal 1 , summary . error_reports . size
62+
63+ yielded = true
64+ break
65+ end
66+
67+ assert yielded , "@queue.poll didn't yield"
4568
4669 second_queue = worker ( 2 )
4770 second_reporter = BuildStatusRecorder . new ( build : second_queue . build )
4871 second_reporter . start
4972
50- second_reporter . record ( result ( 'a' ) )
73+ # pretend we reserved the same test again
74+ reserve ( second_queue , "a" )
75+ second_reporter . record ( result ( "a" ) )
5176 assert_equal 0 , summary . error_reports . size
5277 end
5378
5479 private
5580
81+ def reserve ( queue , method_name )
82+ queue . instance_variable_set ( :@reserved_test , Minitest ::Queue ::SingleExample . new ( "Minitest::Test" , method_name ) . id )
83+ end
84+
5685 def worker ( id )
5786 CI ::Queue ::Redis . new (
5887 @redis_url ,
@@ -61,7 +90,9 @@ def worker(id)
6190 worker_id : id . to_s ,
6291 timeout : 0.2 ,
6392 ) ,
64- ) . populate ( [ ] )
93+ ) . populate ( [
94+ Minitest ::Queue ::SingleExample . new ( "Minitest::Test" , "a" )
95+ ] )
6596 end
6697
6798 def summary
0 commit comments