test-unit-ext 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/NEWS.en CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  = NEWS
4
4
 
5
+ == 0.3.0: 2008-03-10
6
+
7
+ * Changed XML report format.
8
+ * Improved search method to find test result directory.
9
+
5
10
  == 0.2.0: 2008-03-03
6
11
 
7
12
  * Supported XML report.
data/NEWS.ja CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  = NEWS.ja
4
4
 
5
+ == 0.3.0: 2008-03-10
6
+
7
+ * XML出力形式の変更
8
+ * テスト結果を保存するディレクトリの検索処理を改良
9
+
5
10
  == 0.2.0: 2008-03-03
6
11
 
7
12
  * XML出力のサポート。
data/README.en CHANGED
@@ -44,7 +44,7 @@ None
44
44
 
45
45
  === Priority
46
46
 
47
- === Metadata
47
+ === Attributes
48
48
 
49
49
  == Thanks
50
50
 
data/README.ja CHANGED
@@ -44,7 +44,7 @@ Ruby's.
44
44
 
45
45
  === 優先度
46
46
 
47
- === メタデータ
47
+ === 属性
48
48
 
49
49
  == 感謝
50
50
 
data/Rakefile CHANGED
@@ -22,7 +22,7 @@ Test::Unit.run = true
22
22
  manifest = File.join(base_dir, "Manifest.txt")
23
23
  manifest_contents = []
24
24
  base_dir_included_components = %w(NEWS.en NEWS.ja README.en README.ja Rakefile)
25
- excluded_components = %w(.svn .test-result)
25
+ excluded_components = %w(.svn .test-result pkg)
26
26
  excluded_suffixes = %w(.png .ps .pdf .o .so .txt)
27
27
  Find.find(base_dir) do |target|
28
28
  target = truncate_base_dir[target]
@@ -69,7 +69,12 @@ project = Hoe.new('test-unit-ext', version) do |project|
69
69
  project.summary, project.description, = whats_this.split(/\n\n+/, 3)
70
70
  end
71
71
 
72
- project.spec.dependencies.delete_if {|dependency| dependency.name == "hoe"}
72
+ spec = project.spec
73
+ spec.rdoc_options = spec.rdoc_options.collect do |option|
74
+ option == "README.txt" ? "README.en" : option
75
+ end
76
+ spec.extra_rdoc_files += spec.files.grep(/(:?README|NEWS)\.(:?ja|en)\z/)
77
+ spec.dependencies.delete_if {|dependency| dependency.name == "hoe"}
73
78
 
74
79
  rdoc_task = nil
75
80
  if ObjectSpace.each_object(Rake::RDocTask) {|rdoc_task|} != 1
data/html/news.html CHANGED
@@ -9,7 +9,12 @@
9
9
  </head>
10
10
  <body>
11
11
  <h1><a name="label-0" id="label-0">NEWS</a></h1><!-- RDLabel: "NEWS" -->
12
- <h2><a name="label-1" id="label-1">0.2.0: 2008-03-03</a></h2><!-- RDLabel: "0.2.0: 2008-03-03" -->
12
+ <h2><a name="label-1" id="label-1">0.3.0: 2008-03-10</a></h2><!-- RDLabel: "0.3.0: 2008-03-10" -->
13
+ <ul>
14
+ <li>Changed XML report format.</li>
15
+ <li>Improved search method to find test result directory.</li>
16
+ </ul>
17
+ <h2><a name="label-2" id="label-2">0.2.0: 2008-03-03</a></h2><!-- RDLabel: "0.2.0: 2008-03-03" -->
13
18
  <ul>
14
19
  <li>Supported XML report.
15
20
  <ul>
@@ -17,7 +22,7 @@
17
22
  </ul></li>
18
23
  <li>Supported diff output for assert_equal.</li>
19
24
  </ul>
20
- <h2><a name="label-2" id="label-2">0.1.0: 2008-02-21</a></h2><!-- RDLabel: "0.1.0: 2008-02-21" -->
25
+ <h2><a name="label-3" id="label-3">0.1.0: 2008-02-21</a></h2><!-- RDLabel: "0.1.0: 2008-02-21" -->
21
26
  <ul>
22
27
  <li>Initial release.</li>
23
28
  </ul>
data/html/news.html.en CHANGED
@@ -9,7 +9,12 @@
9
9
  </head>
10
10
  <body>
11
11
  <h1><a name="label-0" id="label-0">NEWS</a></h1><!-- RDLabel: "NEWS" -->
12
- <h2><a name="label-1" id="label-1">0.2.0: 2008-03-03</a></h2><!-- RDLabel: "0.2.0: 2008-03-03" -->
12
+ <h2><a name="label-1" id="label-1">0.3.0: 2008-03-10</a></h2><!-- RDLabel: "0.3.0: 2008-03-10" -->
13
+ <ul>
14
+ <li>Changed XML report format.</li>
15
+ <li>Improved search method to find test result directory.</li>
16
+ </ul>
17
+ <h2><a name="label-2" id="label-2">0.2.0: 2008-03-03</a></h2><!-- RDLabel: "0.2.0: 2008-03-03" -->
13
18
  <ul>
14
19
  <li>Supported XML report.
15
20
  <ul>
@@ -17,7 +22,7 @@
17
22
  </ul></li>
18
23
  <li>Supported diff output for assert_equal.</li>
19
24
  </ul>
20
- <h2><a name="label-2" id="label-2">0.1.0: 2008-02-21</a></h2><!-- RDLabel: "0.1.0: 2008-02-21" -->
25
+ <h2><a name="label-3" id="label-3">0.1.0: 2008-02-21</a></h2><!-- RDLabel: "0.1.0: 2008-02-21" -->
21
26
  <ul>
22
27
  <li>Initial release.</li>
23
28
  </ul>
data/html/news.html.ja CHANGED
@@ -9,7 +9,12 @@
9
9
  </head>
10
10
  <body>
11
11
  <h1><a name="label-0" id="label-0">NEWS.ja</a></h1><!-- RDLabel: "NEWS.ja" -->
12
- <h2><a name="label-1" id="label-1">0.2.0: 2008-03-03</a></h2><!-- RDLabel: "0.2.0: 2008-03-03" -->
12
+ <h2><a name="label-1" id="label-1">0.3.0: 2008-03-10</a></h2><!-- RDLabel: "0.3.0: 2008-03-10" -->
13
+ <ul>
14
+ <li>XML出力形式の変更</li>
15
+ <li>テスト結果を保存するディレクトリの検索処理を改良</li>
16
+ </ul>
17
+ <h2><a name="label-2" id="label-2">0.2.0: 2008-03-03</a></h2><!-- RDLabel: "0.2.0: 2008-03-03" -->
13
18
  <ul>
14
19
  <li>XML出力のサポート。
15
20
  <ul>
@@ -17,7 +22,7 @@
17
22
  </ul></li>
18
23
  <li>assert_equal時のdiff出力のサポート。</li>
19
24
  </ul>
20
- <h2><a name="label-2" id="label-2">0.1.0: 2008-02-21</a></h2><!-- RDLabel: "0.1.0: 2008-02-21" -->
25
+ <h2><a name="label-3" id="label-3">0.1.0: 2008-02-21</a></h2><!-- RDLabel: "0.1.0: 2008-02-21" -->
21
26
  <ul>
22
27
  <li>最初のリリース。</li>
23
28
  </ul>
data/html/readme.html CHANGED
@@ -32,7 +32,7 @@
32
32
  <h2><a name="label-7" id="label-7">Usage</a></h2><!-- RDLabel: "Usage" -->
33
33
  <pre>require 'test-unit-ext'</pre>
34
34
  <h3><a name="label-8" id="label-8">Priority</a></h3><!-- RDLabel: "Priority" -->
35
- <h3><a name="label-9" id="label-9">Metadata</a></h3><!-- RDLabel: "Metadata" -->
35
+ <h3><a name="label-9" id="label-9">Attributes</a></h3><!-- RDLabel: "Attributes" -->
36
36
  <h2><a name="label-10" id="label-10">Thanks</a></h2><!-- RDLabel: "Thanks" -->
37
37
  <ul>
38
38
  <li>...</li>
data/html/readme.html.en CHANGED
@@ -32,7 +32,7 @@
32
32
  <h2><a name="label-7" id="label-7">Usage</a></h2><!-- RDLabel: "Usage" -->
33
33
  <pre>require 'test-unit-ext'</pre>
34
34
  <h3><a name="label-8" id="label-8">Priority</a></h3><!-- RDLabel: "Priority" -->
35
- <h3><a name="label-9" id="label-9">Metadata</a></h3><!-- RDLabel: "Metadata" -->
35
+ <h3><a name="label-9" id="label-9">Attributes</a></h3><!-- RDLabel: "Attributes" -->
36
36
  <h2><a name="label-10" id="label-10">Thanks</a></h2><!-- RDLabel: "Thanks" -->
37
37
  <ul>
38
38
  <li>...</li>
data/html/readme.html.ja CHANGED
@@ -32,7 +32,7 @@
32
32
  <h2><a name="label-7" id="label-7">使用法</a></h2><!-- RDLabel: "使用法" -->
33
33
  <pre>require 'test-unit-ext'</pre>
34
34
  <h3><a name="label-8" id="label-8">優先度</a></h3><!-- RDLabel: "優先度" -->
35
- <h3><a name="label-9" id="label-9">メタデータ</a></h3><!-- RDLabel: "メタデータ" -->
35
+ <h3><a name="label-9" id="label-9">属性</a></h3><!-- RDLabel: "属性" -->
36
36
  <h2><a name="label-10" id="label-10">感謝</a></h2><!-- RDLabel: "感謝" -->
37
37
  <ul>
38
38
  <li>...</li>
data/lib/test-unit-ext.rb CHANGED
@@ -8,6 +8,6 @@ require "test-unit-ext/always-show-result"
8
8
  require "test-unit-ext/priority"
9
9
  require "test-unit-ext/backtrace-filter"
10
10
  require "test-unit-ext/long-display-for-emacs"
11
- require "test-unit-ext/metadata"
11
+ require "test-unit-ext/attributes"
12
12
  require "test-unit-ext/xml-report"
13
13
  require "test-unit-ext/assertions"
@@ -0,0 +1,114 @@
1
+ require "test/unit"
2
+
3
+ module Test
4
+ module Unit
5
+ class TestCase
6
+ class << self
7
+ alias_method :method_added_without_attributes, :method_added
8
+ def method_added(name)
9
+ method_added_without_attributes(name)
10
+ if defined?(@current_attributes)
11
+ set_attributes(name, @current_attributes)
12
+ @current_attributes = {}
13
+ end
14
+ end
15
+
16
+ def attribute(name, value, *tests)
17
+ @current_attributes ||= {}
18
+ if tests.empty?
19
+ @current_attributes[name] = value
20
+ else
21
+ tests.each do |test|
22
+ set_attribute(test, {name => value})
23
+ end
24
+ end
25
+ end
26
+
27
+ def bug(value, *tests)
28
+ attribute(:bug, value, *tests)
29
+ end
30
+
31
+ def set_attributes(test_name, attributes)
32
+ return if attributes.empty?
33
+ test_name = normalize_test_name(test_name)
34
+ @attributes ||= {}
35
+ @attributes[test_name] ||= {}
36
+ @attributes[test_name] = @attributes[test_name].merge(attributes)
37
+ end
38
+
39
+ def attributes(test_name)
40
+ test_name = normalize_test_name(test_name)
41
+ @attributes ||= {}
42
+ @attributes[test_name]
43
+ end
44
+ end
45
+
46
+ alias_method :run_without_attributes, :run
47
+ def run(result, &block)
48
+ run_without_attributes(TestResultAttributesSupport.new(result, self),
49
+ &block)
50
+ end
51
+
52
+ def attributes
53
+ self.class.attributes(@method_name) || {}
54
+ end
55
+ end
56
+
57
+ class TestResultAttributesSupport
58
+ def initialize(result, test)
59
+ @result = result
60
+ @test = test
61
+ end
62
+
63
+ def add_failure(failure)
64
+ failure.attributes = @test.attributes
65
+ method_missing(:add_failure, failure)
66
+ end
67
+
68
+ def add_error(error)
69
+ error.attributes = @test.attributes
70
+ method_missing(:add_error, error)
71
+ end
72
+
73
+ def method_missing(name, *args, &block)
74
+ @result.send(name, *args, &block)
75
+ end
76
+ end
77
+
78
+ module AttributesFormatter
79
+ private
80
+ def format_attributes
81
+ return '' if attributes.empty?
82
+ attributes.collect do |key, value|
83
+ " #{key}: #{value}"
84
+ end.join("\n") + "\n"
85
+ end
86
+ end
87
+
88
+ class Failure
89
+ include AttributesFormatter
90
+
91
+ attr_accessor :attributes
92
+
93
+ alias_method :long_display_without_attributes, :long_display
94
+ def long_display
95
+ test_name_re = Regexp.escape(@test_name)
96
+ long_display_without_attributes.sub(/(^#{test_name_re}.*\n)/,
97
+ "\\1#{format_attributes}")
98
+ end
99
+ end
100
+
101
+ class Error
102
+ include AttributesFormatter
103
+
104
+ attr_accessor :attributes
105
+
106
+ alias_method :long_display_without_attributes, :long_display
107
+ def long_display
108
+ test_name_re = Regexp.escape(@test_name)
109
+ long_display_without_attributes.sub(/(^#{test_name_re}:\n)/,
110
+ "\\1#{format_attributes}")
111
+ end
112
+ end
113
+ end
114
+ end
@@ -1,6 +1,7 @@
1
1
  require "test/unit"
2
2
 
3
3
  require "fileutils"
4
+ require "tmpdir"
4
5
 
5
6
  module Test
6
7
  module Unit
@@ -111,18 +112,20 @@ module Test
111
112
 
112
113
  def result_dir
113
114
  components = [".test-result", self.class.name, @method_name.to_s]
114
- dir = File.join(File.dirname($0), *components)
115
- dir = File.expand_path(dir)
116
- begin
117
- FileUtils.mkdir_p(dir)
118
- rescue Errno::EACCES
119
- retry_dir = File.join(File.dirname(__FILE__), "..", *components)
120
- retry_dir = File.expand_path(retry_dir)
121
- raise if retry_dir == dir
122
- dir = retry_dir
123
- retry
124
- end
125
- dir
115
+ parent_directories = [File.dirname($0),
116
+ File.join(File.dirname(__FILE__), ".."),
117
+ Dir.pwd,
118
+ File.join(Dir.tmpdir, Process.uid.to_s)]
119
+ parent_directories.each do |parent_directory|
120
+ dir = File.expand_path(File.join(parent_directory, *components))
121
+ begin
122
+ FileUtils.mkdir_p(dir)
123
+ return dir
124
+ rescue Errno::EACCES
125
+ end
126
+ end
127
+
128
+ raise Errno::EACCES, parent_directories.join(", ")
126
129
  end
127
130
 
128
131
  def passed_file
@@ -1,3 +1,3 @@
1
1
  module TestUnitExt
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -11,37 +11,37 @@ module Test
11
11
  include ERB::Util
12
12
 
13
13
  def to_xml
14
- <<-XML.gsub(/\s*(\n <result>|\n<\/test_log>)/m, "\\1")
15
- <test_log>
14
+ <<-XML.gsub(/\s*(\n <\/test>|\n<\/result>)/m, "\\1")
15
+ <result>
16
16
  <test_case>
17
17
  <name>#{h(@test.class.name)}</name>
18
18
  <description/>
19
19
  </test_case>
20
- <name>#{h(@test.method_name)}</name>
21
- <description/>
22
- #{metadata_xml}
23
- <result>
24
- <status>#{h(status_name)}</status>
25
- <detail>#{h(message)}</detail>
26
- <elapsed>#{h(elapsed_time)}</elapsed>
27
- </result>
20
+ <test>
21
+ <name>#{h(@test.method_name)}</name>
22
+ <description/>
23
+ #{attributes_xml}
24
+ </test>
25
+ <status>#{h(status_name)}</status>
26
+ <detail>#{h(message)}</detail>
27
+ <elapsed>#{h(elapsed_time)}</elapsed>
28
28
  #{backtrace_xml}
29
- </test_log>
29
+ </result>
30
30
  XML
31
31
  end
32
32
 
33
33
  private
34
- def metadata_xml
35
- return "" if @test.metadata.empty?
36
- item = @test.metadata.collect do |key, value|
34
+ def attributes_xml
35
+ return "" if @test.attributes.empty?
36
+ attributes = @test.attributes.collect do |key, value|
37
37
  <<-XML
38
- <item>
39
- <name>#{h(key)}</name>
40
- <value>#{h(value)}</value>
41
- </item>
38
+ <attribute>
39
+ <name>#{h(key)}</name>
40
+ <value>#{h(value)}</value>
41
+ </attribute>
42
42
  XML
43
43
  end
44
- " <metadata>\n#{item.join()} </metadata>"
44
+ " <attributes>\n#{attributes.join} </attributes>"
45
45
  end
46
46
 
47
47
  def backtrace_xml
@@ -180,9 +180,9 @@ XML
180
180
  end
181
181
 
182
182
  def to_xml
183
- return "<test_logs/>" if @logs.empty?
183
+ return "<report/>" if @logs.empty?
184
184
  xml = @logs.collect {|log| log.to_xml.gsub(/^/, " ")}.join
185
- "<test_logs>\n#{xml}</test_logs>\n"
185
+ "<report>\n#{xml}</report>\n"
186
186
  end
187
187
  end
188
188
 
@@ -1,6 +1,6 @@
1
1
  require 'test-unit-ext'
2
2
 
3
- class TestMetadata < Test::Unit::TestCase
3
+ class TestAttributes < Test::Unit::TestCase
4
4
  class TestStack < Test::Unit::TestCase
5
5
  class << self
6
6
  def suite
@@ -34,19 +34,19 @@ class TestMetadata < Test::Unit::TestCase
34
34
  @stack = Stack.new
35
35
  end
36
36
 
37
- metadata :category, :accessor
37
+ attribute :category, :accessor
38
38
  def test_peek
39
39
  @stack.push(1)
40
40
  @stack.push(2)
41
41
  assert_equal(2, @stack.peek)
42
42
  end
43
43
 
44
- metadata :bug, 1234
44
+ attribute :bug, 1234
45
45
  def test_bug_1234
46
46
  assert_equal(0, @stack.size)
47
47
  end
48
48
 
49
- def test_no_metadata
49
+ def test_no_attributes
50
50
  assert(@stack.empty?)
51
51
  @stack.push(1)
52
52
  assert(!@stack.empty?)
@@ -54,21 +54,21 @@ class TestMetadata < Test::Unit::TestCase
54
54
  end
55
55
  end
56
56
 
57
- def test_set_metadata
57
+ def test_set_attributes
58
58
  test_for_bug_1234 = TestStack.new("test_bug_1234")
59
- assert_equal({:bug => 1234}, test_for_bug_1234.metadata)
59
+ assert_equal({:bug => 1234}, test_for_bug_1234.attributes)
60
60
 
61
- test_no_metadata = TestStack.new("test_no_metadata")
62
- assert_equal({}, test_no_metadata.metadata)
61
+ test_no_attributes = TestStack.new("test_no_attributes")
62
+ assert_equal({}, test_no_attributes.attributes)
63
63
  end
64
64
 
65
- def test_show_metadata
65
+ def test_show_attributes
66
66
  assert_stack_size_line = search_line('assert_equal(0, @stack.size)')
67
67
  assert_peek_line = search_line('assert_equal(2, @stack.peek)')
68
68
  first_arg_end_line = search_line("\"+ 11\"],")
69
- method_name = "test_show_metadata"
69
+ method_name = "test_show_attributes"
70
70
  assert_result(["Failure:\n" \
71
- "test_peek(TestMetadata::TestStack)\n" \
71
+ "test_peek(TestAttributes::TestStack)\n" \
72
72
  " category: accessor\n" \
73
73
  "#{__FILE__}:#{assert_peek_line}:in `test_peek'\n" \
74
74
  "#{__FILE__}:#{first_arg_end_line}:in `#{method_name}':\n" \
@@ -78,7 +78,7 @@ class TestMetadata < Test::Unit::TestCase
78
78
  "- 2\n" \
79
79
  "+ 1",
80
80
  "Failure:\n" \
81
- "test_bug_1234(TestMetadata::TestStack)\n" \
81
+ "test_bug_1234(TestAttributes::TestStack)\n" \
82
82
  " bug: 1234\n" \
83
83
  "#{__FILE__}:#{assert_stack_size_line}:in `test_bug_1234'\n" \
84
84
  "#{__FILE__}:#{first_arg_end_line}:in `#{method_name}':\n" \
@@ -91,13 +91,13 @@ class TestMetadata < Test::Unit::TestCase
91
91
  ["test_peek", "test_bug_1234"])
92
92
  end
93
93
 
94
- def test_not_show_metadata
94
+ def test_not_show_attributes
95
95
  assert_line = search_line('assert_equal(1, @stack.size')
96
96
  first_arg_end_line = search_line("\"+ 12\"],")
97
- method_name = "test_not_show_metadata"
97
+ method_name = "test_not_show_attributes"
98
98
  assert_result(["Failure:\n" \
99
- "test_no_metadata(TestMetadata::TestStack)\n" \
100
- "#{__FILE__}:#{assert_line}:in `test_no_metadata'\n" \
99
+ "test_no_attributes(TestAttributes::TestStack)\n" \
100
+ "#{__FILE__}:#{assert_line}:in `test_no_attributes'\n" \
101
101
  "#{__FILE__}:#{first_arg_end_line}:in `#{method_name}':\n" \
102
102
  "<1> expected but was\n" \
103
103
  "<12>.\n" \
@@ -105,7 +105,7 @@ class TestMetadata < Test::Unit::TestCase
105
105
  "- 1\n" \
106
106
  "+ 12"],
107
107
  [],
108
- ["test_no_metadata"])
108
+ ["test_no_attributes"])
109
109
  end
110
110
 
111
111
  private
@@ -28,27 +28,27 @@ class TestXMLReport < Test::Unit::TestCase
28
28
  include ERB::Util
29
29
 
30
30
  def test_empty_test
31
- assert_xml("<test_logs/>", suite)
31
+ assert_xml("<report/>", suite)
32
32
  end
33
33
 
34
34
  def test_success_result
35
35
  elapsed = "0.001"
36
36
  assert_xml(<<-XML, suite([TestCase.new("_test_success")]), elapsed)
37
- <test_logs>
38
- <test_log>
37
+ <report>
38
+ <result>
39
39
  <test_case>
40
40
  <name>TestXMLReport::TestCase</name>
41
41
  <description/>
42
42
  </test_case>
43
- <name>_test_success</name>
44
- <description/>
45
- <result>
46
- <status>success</status>
47
- <detail></detail>
48
- <elapsed>#{elapsed}</elapsed>
49
- </result>
50
- </test_log>
51
- </test_logs>
43
+ <test>
44
+ <name>_test_success</name>
45
+ <description/>
46
+ </test>
47
+ <status>success</status>
48
+ <detail></detail>
49
+ <elapsed>#{elapsed}</elapsed>
50
+ </result>
51
+ </report>
52
52
  XML
53
53
  end
54
54
 
@@ -56,25 +56,25 @@ XML
56
56
  elapsed = "0.001"
57
57
  backtrace_line = __LINE__ + 1
58
58
  assert_xml(<<-XML, suite([TestCase.new("_test_failure")]), elapsed)
59
- <test_logs>
60
- <test_log>
59
+ <report>
60
+ <result>
61
61
  <test_case>
62
62
  <name>TestXMLReport::TestCase</name>
63
63
  <description/>
64
64
  </test_case>
65
- <name>_test_failure</name>
66
- <description/>
67
- <metadata>
68
- <item>
69
- <name>bug</name>
70
- <value>1234</value>
71
- </item>
72
- </metadata>
73
- <result>
74
- <status>failure</status>
75
- <detail>&lt;false&gt; is not true.</detail>
76
- <elapsed>#{elapsed}</elapsed>
77
- </result>
65
+ <test>
66
+ <name>_test_failure</name>
67
+ <description/>
68
+ <attributes>
69
+ <attribute>
70
+ <name>bug</name>
71
+ <value>1234</value>
72
+ </attribute>
73
+ </attributes>
74
+ </test>
75
+ <status>failure</status>
76
+ <detail>&lt;false&gt; is not true.</detail>
77
+ <elapsed>#{elapsed}</elapsed>
78
78
  <backtrace>
79
79
  <entry>
80
80
  <file>#{__FILE__}</file>
@@ -92,8 +92,8 @@ XML
92
92
  <info>in `test_failure_result'</info>
93
93
  </entry>
94
94
  </backtrace>
95
- </test_log>
96
- </test_logs>
95
+ </result>
96
+ </report>
97
97
  XML
98
98
  end
99
99
 
@@ -104,19 +104,19 @@ XML
104
104
  elapsed = "0.001"
105
105
  backtrace_line = __LINE__ + 1
106
106
  assert_xml(<<-XML, suite([test]), elapsed)
107
- <test_logs>
108
- <test_log>
107
+ <report>
108
+ <result>
109
109
  <test_case>
110
110
  <name>TestXMLReport::TestCase</name>
111
111
  <description/>
112
112
  </test_case>
113
- <name>_test_error</name>
114
- <description/>
115
- <result>
116
- <status>error</status>
117
- <detail>#{h(detail)}</detail>
118
- <elapsed>#{elapsed}</elapsed>
119
- </result>
113
+ <test>
114
+ <name>_test_error</name>
115
+ <description/>
116
+ </test>
117
+ <status>error</status>
118
+ <detail>#{h(detail)}</detail>
119
+ <elapsed>#{elapsed}</elapsed>
120
120
  <backtrace>
121
121
  <entry>
122
122
  <file>#{__FILE__}</file>
@@ -134,8 +134,8 @@ XML
134
134
  <info>in `test_error_result'</info>
135
135
  </entry>
136
136
  </backtrace>
137
- </test_log>
138
- </test_logs>
137
+ </result>
138
+ </report>
139
139
  XML
140
140
  end
141
141
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test-unit-ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-03 00:00:00 +09:00
12
+ date: 2008-03-10 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -20,8 +20,11 @@ executables: []
20
20
 
21
21
  extensions: []
22
22
 
23
- extra_rdoc_files: []
24
-
23
+ extra_rdoc_files:
24
+ - NEWS.en
25
+ - NEWS.ja
26
+ - README.en
27
+ - README.ja
25
28
  files:
26
29
  - NEWS.en
27
30
  - NEWS.ja
@@ -38,27 +41,27 @@ files:
38
41
  - lib/test-unit-ext.rb
39
42
  - lib/test-unit-ext/always-show-result.rb
40
43
  - lib/test-unit-ext/assertions.rb
44
+ - lib/test-unit-ext/attributes.rb
41
45
  - lib/test-unit-ext/backtrace-filter.rb
42
46
  - lib/test-unit-ext/color.rb
43
47
  - lib/test-unit-ext/colorized-runner.rb
44
48
  - lib/test-unit-ext/diff.rb
45
49
  - lib/test-unit-ext/long-display-for-emacs.rb
46
- - lib/test-unit-ext/metadata.rb
47
50
  - lib/test-unit-ext/priority.rb
48
51
  - lib/test-unit-ext/version.rb
49
52
  - lib/test-unit-ext/xml-report.rb
50
53
  - misc/rd2html.rb
51
54
  - test/run-test.rb
55
+ - test/test_attributes.rb
52
56
  - test/test_color.rb
53
57
  - test/test_diff.rb
54
- - test/test_metadata.rb
55
58
  - test/test_xml_report.rb
56
59
  has_rdoc: true
57
60
  homepage: http://test-unit-ext.rubyforge.org/
58
61
  post_install_message:
59
62
  rdoc_options:
60
63
  - --main
61
- - README.txt
64
+ - README.en
62
65
  require_paths:
63
66
  - lib
64
67
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -82,6 +85,6 @@ specification_version: 2
82
85
  summary: TestUnitExt extends the standard Test::Unit.
83
86
  test_files:
84
87
  - test/test_diff.rb
85
- - test/test_metadata.rb
86
88
  - test/test_color.rb
87
89
  - test/test_xml_report.rb
90
+ - test/test_attributes.rb
@@ -1,111 +0,0 @@
1
- require "test/unit"
2
-
3
- module Test
4
- module Unit
5
- class TestCase
6
- class << self
7
- alias_method :method_added_without_metadata, :method_added
8
- def method_added(name)
9
- method_added_without_metadata(name)
10
- if defined?(@current_metadata)
11
- set_metadata(name, @current_metadata)
12
- @current_metadata = {}
13
- end
14
- end
15
-
16
- def metadata(name, value, *tests)
17
- @current_metadata ||= {}
18
- if tests.empty?
19
- @current_metadata[name] = value
20
- else
21
- tests.each do |test|
22
- set_metadata(test, {name => value})
23
- end
24
- end
25
- end
26
-
27
- def bug(value, *tests)
28
- metadata(:bug, value, *tests)
29
- end
30
-
31
- def set_metadata(test_name, metadata)
32
- return if metadata.empty?
33
- test_name = normalize_test_name(test_name)
34
- @metadata ||= {}
35
- @metadata[test_name] ||= {}
36
- @metadata[test_name] = @metadata[test_name].merge(metadata)
37
- end
38
-
39
- def get_metadata(test_name)
40
- test_name = normalize_test_name(test_name)
41
- @metadata ||= {}
42
- @metadata[test_name]
43
- end
44
- end
45
-
46
- alias_method :run_without_metadata, :run
47
- def run(result, &block)
48
- run_without_metadata(TestResultMetadataSupport.new(result, self), &block)
49
- end
50
-
51
- def metadata
52
- self.class.get_metadata(@method_name) || {}
53
- end
54
- end
55
-
56
- class TestResultMetadataSupport
57
- def initialize(result, test)
58
- @result = result
59
- @test = test
60
- end
61
-
62
- def add_failure(failure)
63
- failure.metadata = @test.metadata
64
- method_missing(:add_failure, failure)
65
- end
66
-
67
- def add_error(error)
68
- error.metadata = @test.metadata
69
- method_missing(:add_error, error)
70
- end
71
-
72
- def method_missing(name, *args, &block)
73
- @result.send(name, *args, &block)
74
- end
75
- end
76
-
77
- module MetadataFormatter
78
- private
79
- def format_metadata
80
- return '' if metadata.empty?
81
- metadata.collect do |key, value|
82
- " #{key}: #{value}"
83
- end.join("\n") + "\n"
84
- end
85
- end
86
-
87
- class Failure
88
- include MetadataFormatter
89
-
90
- attr_accessor :metadata
91
-
92
- alias_method :long_display_without_metadata, :long_display
93
- def long_display
94
- long_display_without_metadata.sub(/(^#{Regexp.escape(@test_name)}.*\n)/,
95
- "\\1#{format_metadata}")
96
- end
97
- end
98
-
99
- class Error
100
- include MetadataFormatter
101
-
102
- attr_accessor :metadata
103
-
104
- alias_method :long_display_without_metadata, :long_display
105
- def long_display
106
- long_display_without_metadata.sub(/(^#{Regexp.escape(@test_name)}:\n)/,
107
- "\\1#{format_metadata}")
108
- end
109
- end
110
- end
111
- end