Skip to content

Commit 5aa6398

Browse files
authored
Merge pull request #18 from shugo/add_file
Add the file attribute
2 parents fbc047f + 7d9fdab commit 5aa6398

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

lib/test/unit/ui/junitxml/testrunner.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

lib/test/unit/ui/junitxml/xml.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
% @junit_test_suites.each do |test_suite|
44
<testsuite name="<%=h test_suite.name %>" tests="<%=h test_suite.test_cases.size %>" errors="<%=h test_suite.errors.size %>" failures="<%=h test_suite.failures.size %>" skipped="<%=h test_suite.test_cases.count(&:skipped?) %>" time="<%=h test_suite.time %>">
55
% test_suite.test_cases.each do |test_case|
6-
<testcase classname="<%=h test_case.class_name %>" name="<%=h test_case.name %>" time="<%=h test_case.time %>" assertions="<%=h test_case.assertion_count %>">
6+
<testcase classname="<%=h test_case.class_name %>" name="<%=h test_case.name %>" file="<%=h test_case.file%>" time="<%=h test_case.time %>" assertions="<%=h test_case.assertion_count %>">
77
% if test_case.error
88
<error message="<%=h test_case.error.message %>" type="<%=h test_case.error.exception.class.name %>"><%=h test_case.error.long_display %></error>
99
% elsif test_case.failure

test/check.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def check_testcase_skipped(testcase, class_name, assertions, message = nil, out
6363

6464
def check_test_case(testcase, class_name, assertions, out = nil, err = nil)
6565
assert_equal(class_name, testcase.attribute("classname").value)
66+
assert(caller_locations[1].path.end_with?(testcase.attribute("file").value))
6667
assert_equal(assertions.to_s, testcase.attribute("assertions").value)
6768
assert_compare(0, "<", Float(testcase.attribute("time").value))
6869

0 commit comments

Comments
 (0)