test-unit 2.5.3 → 2.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  h1. test-unit
2
2
 
3
- http://rubyforge.org/projects/test-unit/
3
+ * http://test-unit.rubyforge.org/
4
+ * https://github.com/test-unit/test-unit
4
5
 
5
6
  h2. Description
6
7
 
data/Rakefile CHANGED
@@ -14,6 +14,10 @@ task :default => :test
14
14
  base_dir = File.dirname(__FILE__)
15
15
 
16
16
  helper = Bundler::GemHelper.new(base_dir)
17
+ def helper.version_tag
18
+ version
19
+ end
20
+
17
21
  helper.install
18
22
  spec = helper.gemspec
19
23
 
@@ -1838,7 +1838,7 @@ EOT
1838
1838
  private
1839
1839
  if Object.const_defined?(:Encoding)
1840
1840
  def encoding_safe_concat(buffer, parameter)
1841
- if Encoding.compatible?(buffer.encoding, parameter.encoding)
1841
+ if Encoding.compatible?(buffer, parameter)
1842
1842
  buffer << parameter
1843
1843
  else
1844
1844
  buffer << parameter.dup.force_encoding(buffer.encoding)
@@ -18,7 +18,7 @@ module Test
18
18
  to_delete = suite.tests.find_all do |test|
19
19
  test.is_a?(TestCase) and !include?(test)
20
20
  end
21
- to_delete.each {|t| suite.delete(t)}
21
+ suite.delete_tests(to_delete)
22
22
  destination << suite unless suite.empty?
23
23
  end
24
24
 
@@ -8,11 +8,55 @@ module Test
8
8
  end
9
9
 
10
10
  module ClassMethods
11
- # TODO: WRITE ME.
11
+ # This method provides Data-Driven-Test functionality.
12
+ #
13
+ # Define test data in the test code.
14
+ #
15
+ # @overload data(label, data)
16
+ # @param [String] label specify test case name.
17
+ # @param data specify test data.
18
+ #
19
+ # @example data(label, data)
20
+ # data("empty string", [true, ""])
21
+ # data("plain string", [false, "hello"])
22
+ # def test_empty?(data)
23
+ # expected, target = data
24
+ # assert_equal(expected, target.empty?)
25
+ # end
26
+ #
27
+ # @overload data(data_set)
28
+ # @param [Hash] data_set specify test data as a Hash that
29
+ # key is test label and value is test data.
30
+ #
31
+ # @example data(data_set)
32
+ # data("empty string" => [true, ""],
33
+ # "plain string" => [false, "hello"])
34
+ # def test_empty?(data)
35
+ # expected, target = data
36
+ # assert_equal(expected, target.empty?)
37
+ # end
38
+ #
39
+ # @overload data(&block)
40
+ # @yieldreturn [Hash] return test data set as a Hash that
41
+ # key is test label and value is test data.
42
+ #
43
+ # @example data(&block)
44
+ # data do
45
+ # data_set = {}
46
+ # data_set["empty string"] = [true, ""]
47
+ # data_set["plain string"] = [false, "hello"]
48
+ # data_set
49
+ # end
50
+ # def test_empty?(data)
51
+ # expected, target = data
52
+ # assert_equal(expected, target.empty?)
53
+ # end
54
+ #
12
55
  def data(*arguments, &block)
13
56
  n_arguments = arguments.size
14
57
  case n_arguments
15
58
  when 0
59
+ raise ArgumentError, "no block is given" unless block_given?
16
60
  data_set = block
17
61
  when 1
18
62
  data_set = arguments[0]
@@ -26,52 +70,190 @@ module Test
26
70
  attribute(:data, current_data + [data_set])
27
71
  end
28
72
 
29
- # TODO: WRITE ME.
73
+ # This method provides Data-Driven-Test functionality.
74
+ #
75
+ # Load test data from the file. This is shorthand to load
76
+ # test data from file. If you want to load complex file, you
77
+ # can use {#data} with block.
78
+ #
79
+ # @param [String] file_name full path to test data file.
80
+ # File format is automatically detected from filename extension.
81
+ # @raise [ArgumentError] if +file_name+ is not supported file format.
82
+ # @see Loader#load
83
+ #
84
+ # @example Load data from CSV file
85
+ # load_data("/path/to/test-data.csv")
86
+ # def test_empty?(data)
87
+ # assert_equal(data["expected"], data["target"].empty?)
88
+ # end
89
+ #
30
90
  def load_data(file_name)
31
- case file_name
32
- when /\.csv/i
33
- loader = CSVDataLoader.new(self)
34
- loader.load(file_name)
35
- else
36
- raise ArgumentError, "unsupported file format: <#{file_name}>"
37
- end
91
+ loader = Loader.new(self)
92
+ loader.load(file_name)
38
93
  end
39
94
 
40
- class CSVDataLoader
95
+ class Loader
96
+ # @api private
41
97
  def initialize(test_case)
42
98
  @test_case = test_case
43
99
  end
44
100
 
101
+ # Load data from file.
102
+ #
103
+ # @param [String] file_name full path to test data file.
104
+ # File format is automatically detected from filename extension.
105
+ # @raise [ArgumentError] if +file_name+ is not supported file format.
106
+ # @see #load_csv
107
+ # @see #load_tsv
108
+ # @api private
45
109
  def load(file_name)
110
+ case File.extname(file_name).downcase
111
+ when ".csv"
112
+ load_csv(file_name)
113
+ when ".tsv"
114
+ load_tsv(file_name)
115
+ else
116
+ raise ArgumentError, "unsupported file format: <#{file_name}>"
117
+ end
118
+ end
119
+
120
+ # Load data from CSV file.
121
+ #
122
+ # There are 2 types of CSV file as following examples.
123
+ # First, there is a header on first row and it's first column is "label".
124
+ # Another, there is no header in the file.
125
+ #
126
+ # @example Load data from CSV file with header
127
+ # # test-data.csv:
128
+ # # label,expected,target
129
+ # # empty string,true,""
130
+ # # plain string,false,hello
131
+ # #
132
+ # load_data("/path/to/test-data.csv")
133
+ # def test_empty?(data)
134
+ # assert_equal(data["expected"], data["target"].empty?)
135
+ # end
136
+ #
137
+ # @example Load data from CSV file without header
138
+ # # test-data-without-header.csv:
139
+ # # empty string,true,""
140
+ # # plain string,false,hello
141
+ # #
142
+ # load_data("/path/to/test-data-without-header.csv")
143
+ # def test_empty?(data)
144
+ # expected, target = data
145
+ # assert_equal(expected, target.empty?)
146
+ # end
147
+ #
148
+ # @api private
149
+ def load_csv(file_name)
46
150
  require 'csv'
151
+ first_row = true
47
152
  header = nil
48
153
  CSV.foreach(file_name) do |row|
49
- if header.nil?
50
- header = row
51
- next
154
+ if first_row
155
+ first_row = false
156
+ if row.first == "label"
157
+ header = row[1..-1]
158
+ next
159
+ end
52
160
  end
53
- label = nil
54
- data = {}
55
- header.each_with_index do |key, i|
56
- if key == "label"
57
- label = row[i]
58
- else
59
- data[key] = normalize_value(row[i])
161
+
162
+ set_test_data(header, row)
163
+ end
164
+ end
165
+
166
+ # Load data from TSV file.
167
+ #
168
+ # There are 2 types of TSV file as following examples.
169
+ # First, there is a header on first row and it's first column is "label".
170
+ # Another, there is no header in the file.
171
+ #
172
+ # @example Load data from TSV file with header
173
+ # # test-data.tsv:
174
+ # # label expected target
175
+ # # empty string true ""
176
+ # # plain string false hello
177
+ # #
178
+ # load_data("/path/to/test-data.tsv")
179
+ # def test_empty?(data)
180
+ # assert_equal(data["expected"], data["target"].empty?)
181
+ # end
182
+ #
183
+ # @example Load data from TSV file without header
184
+ # # test-data-without-header.tsv:
185
+ # # empty string true ""
186
+ # # plain string false hello
187
+ # #
188
+ # load_data("/path/to/test-data-without-header.tsv")
189
+ # def test_empty?(data)
190
+ # expected, target = data
191
+ # assert_equal(expected, target.empty?)
192
+ # end
193
+ #
194
+ # @api private
195
+ def load_tsv(file_name)
196
+ require "csv"
197
+ if CSV.respond_to?(:dump)
198
+ first_row = true
199
+ header = nil
200
+ CSV.foreach(file_name, :col_sep => "\t") do |row|
201
+ if first_row
202
+ first_row = false
203
+ if row.first == "label"
204
+ header = row[1..-1]
205
+ next
206
+ end
60
207
  end
208
+
209
+ set_test_data(header, row)
210
+ end
211
+ else
212
+ # for old CSV library
213
+ first_row = true
214
+ header = nil
215
+ CSV.open(file_name, "r", "\t") do |row|
216
+ if first_row
217
+ first_row = false
218
+ if row.first == "label"
219
+ header = row[1..-1]
220
+ next
221
+ end
222
+ end
223
+
224
+ set_test_data(header, row)
61
225
  end
62
- @test_case.data(label, data)
63
226
  end
64
227
  end
65
228
 
66
229
  private
67
230
  def normalize_value(value)
68
- Integer(value)
69
- rescue ArgumentError
231
+ return true if value == "true"
232
+ return false if value == "false"
70
233
  begin
71
- Float(value)
234
+ Integer(value)
72
235
  rescue ArgumentError
73
- value
236
+ begin
237
+ Float(value)
238
+ rescue ArgumentError
239
+ value
240
+ end
241
+ end
242
+ end
243
+
244
+ def set_test_data(header, row)
245
+ label = row.shift
246
+ if header
247
+ data = {}
248
+ header.each_with_index do |key, i|
249
+ data[key] = normalize_value(row[i])
250
+ end
251
+ else
252
+ data = row.collect do |cell|
253
+ normalize_value(cell)
254
+ end
74
255
  end
256
+ @test_case.data(label, data)
75
257
  end
76
258
  end
77
259
  end
@@ -70,6 +70,10 @@ module Test
70
70
  @tests.delete(test)
71
71
  end
72
72
 
73
+ def delete_tests(tests)
74
+ @tests -= tests
75
+ end
76
+
73
77
  # Retuns the rolled up number of tests in this suite;
74
78
  # i.e. if the suite contains other suites, it counts the
75
79
  # tests within those suites, not the suites themselves.
@@ -78,7 +82,7 @@ module Test
78
82
  @tests.each { |test| total_size += test.size }
79
83
  total_size
80
84
  end
81
-
85
+
82
86
  def empty?
83
87
  size.zero?
84
88
  end
@@ -88,7 +92,7 @@ module Test
88
92
  def to_s
89
93
  @name
90
94
  end
91
-
95
+
92
96
  # It's handy to be able to compare TestSuite instances.
93
97
  def ==(other)
94
98
  return false unless(other.kind_of?(self.class))
@@ -343,6 +343,15 @@ module Test
343
343
  output(": (%f)" % (Time.now - @test_start), nil, VERBOSE)
344
344
  end
345
345
 
346
+ def suite_name(prefix, suite)
347
+ name = suite.name
348
+ if name.nil?
349
+ "(anonymous)"
350
+ else
351
+ name.sub(/\A#{Regexp.escape(prefix)}/, "")
352
+ end
353
+ end
354
+
346
355
  def test_suite_started(suite)
347
356
  last_test_suite = @test_suites.last
348
357
  @test_suites << suite
@@ -358,8 +367,7 @@ module Test
358
367
  _color = color("case")
359
368
  end
360
369
  prefix = "#{last_test_suite.name}::"
361
- suite_name = suite.name.sub(/\A#{Regexp.escape(prefix)}/, "")
362
- output_single(suite_name, _color, VERBOSE)
370
+ output_single(suite_name(prefix, suite), _color, VERBOSE)
363
371
  output(": ", nil, VERBOSE)
364
372
  @indent += 2
365
373
  end
@@ -1,5 +1,5 @@
1
1
  module Test
2
2
  module Unit
3
- VERSION = '2.5.3'
3
+ VERSION = '2.5.4'
4
4
  end
5
5
  end
@@ -0,0 +1,3 @@
1
+ label,expected,label
2
+ upper case,HELLO,HELLO
3
+ lower case,Hello,hello
@@ -0,0 +1,3 @@
1
+ label expected label
2
+ upper case HELLO HELLO
3
+ lower case Hello hello
@@ -0,0 +1,3 @@
1
+ label,expected,target
2
+ empty string,true,""
3
+ plain string,false,hello
@@ -0,0 +1,3 @@
1
+ label expected target
2
+ empty string true ""
3
+ plain string false hello
@@ -0,0 +1,2 @@
1
+ empty string,true,""
2
+ plain string,false,hello
@@ -0,0 +1,2 @@
1
+ empty string true ""
2
+ plain string false hello
@@ -10,6 +10,8 @@ require 'test/unit'
10
10
  module Test
11
11
  module Unit
12
12
  module AssertionCheckable
13
+ include TestUnitTestUtil
14
+
13
15
  private
14
16
  def check(value, message="")
15
17
  add_assertion
@@ -100,12 +102,16 @@ module Test
100
102
  end
101
103
 
102
104
  def inspect_tag(tag)
103
- begin
104
- throw tag
105
- rescue NameError
106
- tag.to_s.inspect
107
- rescue ArgumentError
108
- tag.inspect
105
+ if jruby?
106
+ "`#{tag}'".inspect
107
+ else
108
+ begin
109
+ throw tag
110
+ rescue NameError
111
+ tag.to_s.inspect
112
+ rescue ArgumentError
113
+ tag.inspect
114
+ end
109
115
  end
110
116
  end
111
117
 
@@ -1,3 +1,5 @@
1
+ require "testunit-test-util"
2
+
1
3
  class TestData < Test::Unit::TestCase
2
4
  class Calc
3
5
  def initialize
@@ -66,8 +68,8 @@ class TestData < Test::Unit::TestCase
66
68
  end
67
69
 
68
70
  class TestLoadDataSet < TestCalc
69
- base_dir = File.dirname(__FILE__)
70
- load_data("#{base_dir}/fixtures/plus.csv")
71
+ extend TestUnitTestUtil
72
+ load_data(fixture_file_path("plus.csv"))
71
73
  def test_plus(data)
72
74
  assert_equal(data["expected"],
73
75
  @calc.plus(data["augend"], data["addend"]))
@@ -83,6 +85,12 @@ class TestData < Test::Unit::TestCase
83
85
  TestCalc.testing = false
84
86
  end
85
87
 
88
+ def test_data_no_arguments_without_block
89
+ assert_raise(ArgumentError) do
90
+ self.class.data
91
+ end
92
+ end
93
+
86
94
  data("data set",
87
95
  {
88
96
  :test_case => TestCalc::TestDataSet,
@@ -146,10 +154,10 @@ class TestData < Test::Unit::TestCase
146
154
  assert_not_nil(data[:data_set])
147
155
  end
148
156
 
149
- data("data set" => TestCalc::TestDataSet,
150
- "n-data" => TestCalc::TestNData,
157
+ data("data set" => TestCalc::TestDataSet,
158
+ "n-data" => TestCalc::TestNData,
151
159
  "dynamic-data-set" => TestCalc::TestDynamicDataSet,
152
- "load-data-set" => TestCalc::TestLoadDataSet)
160
+ "load-data-set" => TestCalc::TestLoadDataSet)
153
161
  def test_suite(test_case)
154
162
  suite = test_case.suite
155
163
  assert_equal(["test_plus[positive negative](#{test_case.name})",
@@ -157,20 +165,20 @@ class TestData < Test::Unit::TestCase
157
165
  suite.tests.collect {|test| test.name}.sort)
158
166
  end
159
167
 
160
- data("data set" => TestCalc::TestDataSet,
161
- "n-data" => TestCalc::TestNData,
168
+ data("data set" => TestCalc::TestDataSet,
169
+ "n-data" => TestCalc::TestNData,
162
170
  "dynamic-data-set" => TestCalc::TestDynamicDataSet,
163
- "load-data-set" => TestCalc::TestLoadDataSet)
171
+ "load-data-set" => TestCalc::TestLoadDataSet)
164
172
  def test_run(test_case)
165
173
  result = _run_test(test_case)
166
174
  assert_equal("2 tests, 2 assertions, 0 failures, 0 errors, 0 pendings, " \
167
175
  "0 omissions, 0 notifications", result.to_s)
168
176
  end
169
177
 
170
- data("data set" => TestCalc::TestDataSet,
171
- "n-data" => TestCalc::TestNData,
178
+ data("data set" => TestCalc::TestDataSet,
179
+ "n-data" => TestCalc::TestNData,
172
180
  "dynamic-data-set" => TestCalc::TestDynamicDataSet,
173
- "load-data-set" => TestCalc::TestLoadDataSet)
181
+ "load-data-set" => TestCalc::TestLoadDataSet)
174
182
  def test_equal(test_case)
175
183
  suite = test_case.suite
176
184
  positive_positive_test = suite.tests.find do |test|
@@ -181,6 +189,16 @@ class TestData < Test::Unit::TestCase
181
189
  suite.tests.collect {|test| test.name}.sort)
182
190
  end
183
191
 
192
+ data("true" => {:expected => true, :target => "true"},
193
+ "false" => {:expected => false, :target => "false"},
194
+ "integer" => {:expected => 1, :target => "1"},
195
+ "float" => {:expected => 1.5, :target => "1.5"},
196
+ "string" => {:expected => "hello", :target => "hello"})
197
+ def test_normalize_value(data)
198
+ loader = Test::Unit::Data::ClassMethods::Loader.new(self)
199
+ assert_equal(data[:expected], loader.__send__(:normalize_value, data[:target]))
200
+ end
201
+
184
202
  def _run_test(test_case)
185
203
  result = Test::Unit::TestResult.new
186
204
  test = test_case.suite
@@ -188,4 +206,76 @@ class TestData < Test::Unit::TestCase
188
206
  test.run(result) {}
189
207
  result
190
208
  end
209
+
210
+ class TestLoadData < Test::Unit::TestCase
211
+ include TestUnitTestUtil
212
+ def test_invalid_csv_file_name
213
+ garbage = "X"
214
+ file_name = "data.csv#{garbage}"
215
+ assert_raise(ArgumentError, "unsupported file format: <#{file_name}>") do
216
+ self.class.load_data(file_name)
217
+ end
218
+ end
219
+
220
+ class TestFileFormat < self
221
+ def setup
222
+ self.class.current_attribute(:data).clear
223
+ end
224
+
225
+ class TestHeader < self
226
+ data("csv" => "header.csv",
227
+ "tsv" => "header.tsv")
228
+ def test_normal(file_name)
229
+ self.class.load_data(fixture_file_path(file_name))
230
+ assert_equal([
231
+ {
232
+ "empty string" => {
233
+ "expected" => true,
234
+ "target" => ""
235
+ }
236
+ },
237
+ {
238
+ "plain string" => {
239
+ "expected" => false,
240
+ "target" => "hello"
241
+ }
242
+ }
243
+ ],
244
+ self.class.current_attribute(:data)[:value])
245
+ end
246
+
247
+ data("csv" => "header-label.csv",
248
+ "tsv" => "header-label.tsv")
249
+ def test_label(file_name)
250
+ self.class.load_data(fixture_file_path(file_name))
251
+ assert_equal([
252
+ {
253
+ "upper case" => {
254
+ "expected" => "HELLO",
255
+ "label" => "HELLO"
256
+ }
257
+ },
258
+ {
259
+ "lower case" => {
260
+ "expected" => "Hello",
261
+ "label" => "hello"
262
+ }
263
+ }
264
+ ],
265
+ self.class.current_attribute(:data)[:value])
266
+ end
267
+ end
268
+
269
+ data("csv" => "no-header.csv",
270
+ "tsv" => "no-header.tsv")
271
+ def test_without_header(file_name)
272
+ self.class.load_data(fixture_file_path(file_name))
273
+ assert_equal([
274
+ {"empty string" => [true, ""]},
275
+ {"plain string" => [false, "hello"]}
276
+ ],
277
+ self.class.current_attribute(:data)[:value])
278
+ end
279
+ end
280
+ end
191
281
  end
@@ -43,6 +43,19 @@ module Test
43
43
  assert_equal(TestSuite.new << t2, s)
44
44
  end
45
45
 
46
+ def test_delete_tests
47
+ suite = TestSuite.new
48
+ test1 = self.class.new("test_delete_1")
49
+ suite << test1
50
+ test2 = self.class.new("test_delete_2")
51
+ suite << test2
52
+ test3 = self.class.new("test_add")
53
+ suite << test3
54
+ suite.delete_tests([test1, test2])
55
+ assert_equal(1, suite.size)
56
+ assert_equal(TestSuite.new << test3, suite)
57
+ end
58
+
46
59
  def test_size
47
60
  suite = TestSuite.new
48
61
  suite2 = TestSuite.new
@@ -51,7 +64,7 @@ module Test
51
64
  suite << self.class.new("test_size")
52
65
  assert_equal(2, suite.size, "The count should be correct")
53
66
  end
54
-
67
+
55
68
  def test_run
56
69
  progress = []
57
70
  suite = @testcase1.suite
@@ -89,34 +102,34 @@ module Test
89
102
  assert_equal(28, progress.size,
90
103
  "Should have had the correct number of progress calls")
91
104
  end
92
-
105
+
93
106
  def test_empty?
94
107
  assert(TestSuite.new.empty?, "A new test suite should be empty?")
95
108
  assert(!@testcase2.suite.empty?, "A test suite with tests should not be empty")
96
109
  end
97
-
110
+
98
111
  def test_equality
99
112
  suite1 = TestSuite.new
100
113
  suite2 = TestSuite.new
101
114
  assert_equal(suite1, suite2)
102
115
  assert_equal(suite2, suite1)
103
-
116
+
104
117
  suite1 = TestSuite.new('name')
105
118
  assert_not_equal(suite1, suite2)
106
119
  assert_not_equal(suite2, suite1)
107
-
120
+
108
121
  suite2 = TestSuite.new('name')
109
122
  assert_equal(suite1, suite2)
110
123
  assert_equal(suite2, suite1)
111
-
124
+
112
125
  suite1 << 'test'
113
126
  assert_not_equal(suite1, suite2)
114
127
  assert_not_equal(suite2, suite1)
115
-
128
+
116
129
  suite2 << 'test'
117
130
  assert_equal(suite1, suite2)
118
131
  assert_equal(suite2, suite1)
119
-
132
+
120
133
  suite2 = Object.new
121
134
  class << suite2
122
135
  def name
@@ -1,7 +1,11 @@
1
1
  module TestUnitTestUtil
2
2
  private
3
+ def jruby?
4
+ RUBY_PLATFORM == "java"
5
+ end
6
+
3
7
  def jruby_only_test
4
- if RUBY_PLATFORM == "java"
8
+ if jruby?
5
9
  require "java"
6
10
  else
7
11
  omit("test for JRuby")
@@ -19,4 +23,9 @@ module TestUnitTestUtil
19
23
  test.run(result) {}
20
24
  result
21
25
  end
26
+
27
+ def fixture_file_path(file_name)
28
+ base_dir = File.dirname(__FILE__)
29
+ File.join(base_dir, "fixtures", file_name)
30
+ end
22
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test-unit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3
4
+ version: 2.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-28 00:00:00.000000000 Z
13
+ date: 2013-01-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -96,91 +96,97 @@ files:
96
96
  - COPYING
97
97
  - GPL
98
98
  - PSFL
99
- - lib/test/unit/autorunner.rb
100
- - lib/test/unit/attribute.rb
101
- - lib/test/unit/failure.rb
102
- - lib/test/unit/data.rb
103
- - lib/test/unit/testsuitecreator.rb
99
+ - lib/test-unit.rb
100
+ - lib/test/unit.rb
101
+ - lib/test/unit/priority.rb
104
102
  - lib/test/unit/color.rb
105
- - lib/test/unit/exceptionhandler.rb
106
- - lib/test/unit/assertionfailederror.rb
107
- - lib/test/unit/testresult.rb
108
- - lib/test/unit/util/observable.rb
109
- - lib/test/unit/util/method-owner-finder.rb
110
- - lib/test/unit/util/procwrapper.rb
111
- - lib/test/unit/util/output.rb
112
- - lib/test/unit/util/backtracefilter.rb
113
- - lib/test/unit/ui/xml/testrunner.rb
114
- - lib/test/unit/ui/testrunnermediator.rb
115
- - lib/test/unit/ui/testrunner.rb
103
+ - lib/test/unit/fixture.rb
104
+ - lib/test/unit/collector.rb
116
105
  - lib/test/unit/ui/testrunnerutilities.rb
117
- - lib/test/unit/ui/emacs/testrunner.rb
106
+ - lib/test/unit/ui/testrunner.rb
118
107
  - lib/test/unit/ui/console/testrunner.rb
119
108
  - lib/test/unit/ui/console/outputlevel.rb
120
- - lib/test/unit/attribute-matcher.rb
121
- - lib/test/unit/version.rb
122
- - lib/test/unit/assertions.rb
109
+ - lib/test/unit/ui/emacs/testrunner.rb
110
+ - lib/test/unit/ui/testrunnermediator.rb
111
+ - lib/test/unit/ui/xml/testrunner.rb
112
+ - lib/test/unit/data.rb
113
+ - lib/test/unit/testsuite.rb
114
+ - lib/test/unit/collector/objectspace.rb
115
+ - lib/test/unit/collector/descendant.rb
116
+ - lib/test/unit/collector/dir.rb
117
+ - lib/test/unit/collector/xml.rb
118
+ - lib/test/unit/collector/load.rb
119
+ - lib/test/unit/fault-location-detector.rb
123
120
  - lib/test/unit/color-scheme.rb
124
- - lib/test/unit/collector.rb
121
+ - lib/test/unit/error.rb
122
+ - lib/test/unit/failure.rb
123
+ - lib/test/unit/testresult.rb
124
+ - lib/test/unit/attribute.rb
125
+ - lib/test/unit/exceptionhandler.rb
126
+ - lib/test/unit/autorunner.rb
127
+ - lib/test/unit/notification.rb
128
+ - lib/test/unit/testsuitecreator.rb
125
129
  - lib/test/unit/diff.rb
126
- - lib/test/unit/pending.rb
127
130
  - lib/test/unit/omission.rb
128
- - lib/test/unit/testsuite.rb
129
- - lib/test/unit/fault-location-detector.rb
130
- - lib/test/unit/priority.rb
131
- - lib/test/unit/runner/xml.rb
131
+ - lib/test/unit/version.rb
132
+ - lib/test/unit/assertionfailederror.rb
133
+ - lib/test/unit/util/method-owner-finder.rb
134
+ - lib/test/unit/util/backtracefilter.rb
135
+ - lib/test/unit/util/output.rb
136
+ - lib/test/unit/util/procwrapper.rb
137
+ - lib/test/unit/util/observable.rb
132
138
  - lib/test/unit/runner/console.rb
139
+ - lib/test/unit/runner/xml.rb
133
140
  - lib/test/unit/runner/emacs.rb
134
- - lib/test/unit/notification.rb
135
- - lib/test/unit/fixture.rb
136
- - lib/test/unit/code-snippet-fetcher.rb
137
141
  - lib/test/unit/testcase.rb
138
- - lib/test/unit/collector/dir.rb
139
- - lib/test/unit/collector/xml.rb
140
- - lib/test/unit/collector/load.rb
141
- - lib/test/unit/collector/objectspace.rb
142
- - lib/test/unit/collector/descendant.rb
143
- - lib/test/unit/error.rb
144
- - lib/test/unit.rb
145
- - lib/test-unit.rb
142
+ - lib/test/unit/assertions.rb
143
+ - lib/test/unit/attribute-matcher.rb
144
+ - lib/test/unit/pending.rb
145
+ - lib/test/unit/code-snippet-fetcher.rb
146
146
  - sample/subtracter.rb
147
+ - sample/test_subtracter.rb
147
148
  - sample/adder.rb
148
149
  - sample/test_user.rb
149
- - sample/test_subtracter.rb
150
150
  - sample/test_adder.rb
151
- - test/run-test.rb
151
+ - test/test-diff.rb
152
152
  - test/test-testcase.rb
153
- - test/test-emacs-runner.rb
154
- - test/testunit-test-util.rb
153
+ - test/test-attribute-matcher.rb
155
154
  - test/test-code-snippet.rb
156
- - test/test_failure.rb
157
- - test/test-assertions.rb
158
- - test/test-attribute.rb
159
- - test/test-priority.rb
160
- - test/test-fixture.rb
161
- - test/test-color-scheme.rb
162
- - test/util/test_backtracefilter.rb
163
- - test/util/test-output.rb
164
- - test/util/test-method-owner-finder.rb
165
- - test/util/test_procwrapper.rb
166
- - test/util/test_observable.rb
167
- - test/test-diff.rb
168
155
  - test/ui/test_testrunmediator.rb
169
- - test/fixtures/plus.csv
170
- - test/test-fault-location-detector.rb
171
156
  - test/test-notification.rb
172
- - test/test_testsuite.rb
157
+ - test/test-color-scheme.rb
173
158
  - test/test_testresult.rb
174
- - test/test-omission.rb
175
- - test/test-color.rb
176
- - test/test_error.rb
177
- - test/test-data.rb
178
- - test/test-pending.rb
179
- - test/test-attribute-matcher.rb
180
- - test/collector/test_objectspace.rb
159
+ - test/test-attribute.rb
181
160
  - test/collector/test-load.rb
182
161
  - test/collector/test-descendant.rb
183
162
  - test/collector/test_dir.rb
163
+ - test/collector/test_objectspace.rb
164
+ - test/run-test.rb
165
+ - test/test-emacs-runner.rb
166
+ - test/test-omission.rb
167
+ - test/test-priority.rb
168
+ - test/test-fixture.rb
169
+ - test/test-pending.rb
170
+ - test/test_error.rb
171
+ - test/test-color.rb
172
+ - test/test-data.rb
173
+ - test/test-assertions.rb
174
+ - test/test_failure.rb
175
+ - test/test_testsuite.rb
176
+ - test/test-fault-location-detector.rb
177
+ - test/fixtures/header-label.tsv
178
+ - test/fixtures/plus.csv
179
+ - test/fixtures/no-header.tsv
180
+ - test/fixtures/header-label.csv
181
+ - test/fixtures/no-header.csv
182
+ - test/fixtures/header.tsv
183
+ - test/fixtures/header.csv
184
+ - test/util/test_procwrapper.rb
185
+ - test/util/test-output.rb
186
+ - test/util/test_observable.rb
187
+ - test/util/test-method-owner-finder.rb
188
+ - test/util/test_backtracefilter.rb
189
+ - test/testunit-test-util.rb
184
190
  homepage: http://test-unit.rubyforge.org/
185
191
  licenses:
186
192
  - Ruby's and PSFL (lib/test/unit/diff.rb)
@@ -196,7 +202,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
196
202
  version: '0'
197
203
  segments:
198
204
  - 0
199
- hash: -1080508134508588033
205
+ hash: -757273133856751205
200
206
  required_rubygems_version: !ruby/object:Gem::Requirement
201
207
  none: false
202
208
  requirements:
@@ -205,45 +211,51 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
211
  version: '0'
206
212
  segments:
207
213
  - 0
208
- hash: -1080508134508588033
214
+ hash: -757273133856751205
209
215
  requirements: []
210
216
  rubyforge_project: test-unit
211
- rubygems_version: 1.8.23
217
+ rubygems_version: 1.8.24
212
218
  signing_key:
213
219
  specification_version: 3
214
220
  summary: test-unit - Improved version of Test::Unit bundled in Ruby 1.8.x.
215
221
  test_files:
216
- - test/run-test.rb
222
+ - test/test-diff.rb
217
223
  - test/test-testcase.rb
218
- - test/test-emacs-runner.rb
219
- - test/testunit-test-util.rb
224
+ - test/test-attribute-matcher.rb
220
225
  - test/test-code-snippet.rb
221
- - test/test_failure.rb
222
- - test/test-assertions.rb
223
- - test/test-attribute.rb
224
- - test/test-priority.rb
225
- - test/test-fixture.rb
226
- - test/test-color-scheme.rb
227
- - test/util/test_backtracefilter.rb
228
- - test/util/test-output.rb
229
- - test/util/test-method-owner-finder.rb
230
- - test/util/test_procwrapper.rb
231
- - test/util/test_observable.rb
232
- - test/test-diff.rb
233
226
  - test/ui/test_testrunmediator.rb
234
- - test/fixtures/plus.csv
235
- - test/test-fault-location-detector.rb
236
227
  - test/test-notification.rb
237
- - test/test_testsuite.rb
228
+ - test/test-color-scheme.rb
238
229
  - test/test_testresult.rb
239
- - test/test-omission.rb
240
- - test/test-color.rb
241
- - test/test_error.rb
242
- - test/test-data.rb
243
- - test/test-pending.rb
244
- - test/test-attribute-matcher.rb
245
- - test/collector/test_objectspace.rb
230
+ - test/test-attribute.rb
246
231
  - test/collector/test-load.rb
247
232
  - test/collector/test-descendant.rb
248
233
  - test/collector/test_dir.rb
234
+ - test/collector/test_objectspace.rb
235
+ - test/run-test.rb
236
+ - test/test-emacs-runner.rb
237
+ - test/test-omission.rb
238
+ - test/test-priority.rb
239
+ - test/test-fixture.rb
240
+ - test/test-pending.rb
241
+ - test/test_error.rb
242
+ - test/test-color.rb
243
+ - test/test-data.rb
244
+ - test/test-assertions.rb
245
+ - test/test_failure.rb
246
+ - test/test_testsuite.rb
247
+ - test/test-fault-location-detector.rb
248
+ - test/fixtures/header-label.tsv
249
+ - test/fixtures/plus.csv
250
+ - test/fixtures/no-header.tsv
251
+ - test/fixtures/header-label.csv
252
+ - test/fixtures/no-header.csv
253
+ - test/fixtures/header.tsv
254
+ - test/fixtures/header.csv
255
+ - test/util/test_procwrapper.rb
256
+ - test/util/test-output.rb
257
+ - test/util/test_observable.rb
258
+ - test/util/test-method-owner-finder.rb
259
+ - test/util/test_backtracefilter.rb
260
+ - test/testunit-test-util.rb
249
261
  has_rdoc: