@@ -15,6 +15,7 @@ class TestRunner < UI::TestRunner
1515 def initialize ( suite , options = { } )
1616 super
1717 @junit_test_suites = [ ]
18+ @base_dir_re = /\A #{ Regexp . quote ( Dir . pwd ) } \/ /
1819 end
1920
2021 private
@@ -49,7 +50,7 @@ def test_suite_finished(suite)
4950 end
5051
5152 def test_started ( test )
52- test_case = JUnitTestCase . new ( test . class . name , test . description )
53+ test_case = JUnitTestCase . new ( test . class . name , test . description , test_file ( test ) )
5354 @junit_test_suites . last << test_case
5455 unless @options [ :junitxml_disable_output_capture ]
5556 @stdout_org = $stdout
@@ -59,6 +60,12 @@ def test_started(test)
5960 end
6061 end
6162
63+ def test_file ( test )
64+ file = ( test [ :source_location ] ||
65+ test . method ( test . method_name ) . source_location ) . first
66+ file . sub ( @base_dir_re , "" )
67+ end
68+
6269 def test_finished ( test )
6370 @junit_test_suites . last . test_cases . last . time = test . elapsed_time
6471 unless @options [ :junitxml_disable_output_capture ]
@@ -125,14 +132,15 @@ def errors
125132 end
126133
127134 class JUnitTestCase
128- attr_reader :class_name , :name
135+ attr_reader :class_name , :name , :file
129136 attr_reader :failure , :error , :omission , :pending
130137 attr_reader :stdout , :stderr
131138 attr_accessor :assertion_count , :time
132139
133- def initialize ( class_name , name )
140+ def initialize ( class_name , name , file )
134141 @class_name = class_name
135142 @name = name
143+ @file = file
136144 @failure = @error = @omission = @pending = nil
137145 @stdout = StringIO . new
138146 @stderr = StringIO . new
0 commit comments