test-unit 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/doc/text/news.md +24 -0
- data/lib/test/unit/assertions.rb +49 -24
- data/lib/test/unit/autorunner.rb +4 -4
- data/lib/test/unit/code-snippet-fetcher.rb +32 -7
- data/lib/test/unit/version.rb +1 -1
- metadata +26 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93a1e018c9d985f96f57f4a1cb7c166ac584d4d7
|
4
|
+
data.tar.gz: 90fc5bcea7299d0fe43153e2eb6a447e9b3823f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22541bbd0a7fe30eb6227f6498e1af4316d749f2f766da3f9266562c9d39ac3f7650ea7e1764b05ec43b150019e8e073045f4a876a7f9ac305cffeb197cc5a79
|
7
|
+
data.tar.gz: bd5da3acef525e1c3f3539dd09a5509fa531c3be20c15567e955ce79573f57cbe7467cc143e25e9bcaf5dbe83a6289ad084262ccec99ff7cba18351a2be7553d
|
data/README.md
CHANGED
data/doc/text/news.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 3.0.8 - 2014-12-12 {#version-3-0-8}
|
4
|
+
|
5
|
+
It's a release that support Ruby 2.2.0 preview2.
|
6
|
+
|
7
|
+
### Improvements
|
8
|
+
|
9
|
+
* Added a link for YARD in README.
|
10
|
+
[GitHub:test-unit.github.io#2][Reported by sunnyone]
|
11
|
+
* Added description about "/PATTERN/" style value in auto runner usage.
|
12
|
+
[GitHub#86][Suggested by sunnyone]
|
13
|
+
* Supported Ruby 2.2.0 preview2 in `assert_throw` and
|
14
|
+
`assert_nothing_thrown`.
|
15
|
+
|
16
|
+
### Fixes
|
17
|
+
|
18
|
+
* Fixed a bug that error report is failed when source encoding and
|
19
|
+
locale encoding are different.
|
20
|
+
[GitHub#87][Reported by scivola]
|
21
|
+
|
22
|
+
### Thanks
|
23
|
+
|
24
|
+
* sunnyone
|
25
|
+
* scivola
|
26
|
+
|
3
27
|
## 3.0.7 - 2014-11-14 {#version-3-0-7}
|
4
28
|
|
5
29
|
It's a minor update release.
|
data/lib/test/unit/assertions.rb
CHANGED
@@ -739,11 +739,47 @@ EOT
|
|
739
739
|
end
|
740
740
|
|
741
741
|
# @private
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
742
|
+
class ThrowTagExtractor
|
743
|
+
@@have_uncaught_throw_error = const_defined?(:UncaughtThrowError)
|
744
|
+
|
745
|
+
UncaughtThrowPatterns = {
|
746
|
+
NameError => /^uncaught throw `(.+)'$/,
|
747
|
+
ArgumentError => /^uncaught throw (`.+'|.+)$/,
|
748
|
+
ThreadError => /^uncaught throw `(.+)' in thread /,
|
749
|
+
}
|
750
|
+
|
751
|
+
def initialize(error)
|
752
|
+
@error = error
|
753
|
+
end
|
754
|
+
|
755
|
+
def extract_tag
|
756
|
+
tag = nil
|
757
|
+
if @@have_uncaught_throw_error
|
758
|
+
return nil unless @error.is_a?(UncaughtThrowError)
|
759
|
+
tag = @error.tag
|
760
|
+
else
|
761
|
+
pattern = UncaughtThrowPatterns[@error.class]
|
762
|
+
return nil if pattern.nil?
|
763
|
+
return nil unless pattern =~ @error.message
|
764
|
+
tag = $1
|
765
|
+
end
|
766
|
+
normalize_tag(tag)
|
767
|
+
end
|
768
|
+
|
769
|
+
private
|
770
|
+
def normalize_tag(tag)
|
771
|
+
case tag
|
772
|
+
when /\A:/
|
773
|
+
tag[1..-1].intern
|
774
|
+
when /\A`(.+)'\z/
|
775
|
+
$1.intern
|
776
|
+
when String
|
777
|
+
tag.intern
|
778
|
+
else
|
779
|
+
tag
|
780
|
+
end
|
781
|
+
end
|
782
|
+
end
|
747
783
|
|
748
784
|
##
|
749
785
|
# Passes if the block throws +expected_object+
|
@@ -773,9 +809,10 @@ EOT
|
|
773
809
|
"<?> should have been thrown.",
|
774
810
|
expected_object)
|
775
811
|
assert_block(full_message) {caught}
|
776
|
-
rescue
|
777
|
-
|
778
|
-
tag =
|
812
|
+
rescue => error
|
813
|
+
extractor = ThrowTagExtractor.new(error)
|
814
|
+
tag = extractor.extract_tag
|
815
|
+
raise if tag.nil?
|
779
816
|
full_message = build_message(message,
|
780
817
|
"<?> expected to be thrown but\n" +
|
781
818
|
"<?> was thrown.",
|
@@ -802,9 +839,10 @@ EOT
|
|
802
839
|
assert(block_given?, "Should have passed a block to assert_nothing_thrown")
|
803
840
|
begin
|
804
841
|
proc.call
|
805
|
-
rescue
|
806
|
-
|
807
|
-
tag =
|
842
|
+
rescue => error
|
843
|
+
extractor = ThrowTagExtractor.new(error)
|
844
|
+
tag = extractor.extract_tag
|
845
|
+
raise if tag.nil?
|
808
846
|
full_message = build_message(message,
|
809
847
|
"<?> was thrown when nothing was expected",
|
810
848
|
tag)
|
@@ -1671,19 +1709,6 @@ EOT
|
|
1671
1709
|
MaybeContainer.new(value, &formatter)
|
1672
1710
|
end
|
1673
1711
|
|
1674
|
-
def normalize_tag(tag)
|
1675
|
-
case tag
|
1676
|
-
when /\A:/
|
1677
|
-
tag[1..-1].intern
|
1678
|
-
when /\A`(.+)'\z/
|
1679
|
-
$1.intern
|
1680
|
-
when String
|
1681
|
-
tag.intern
|
1682
|
-
else
|
1683
|
-
tag
|
1684
|
-
end
|
1685
|
-
end
|
1686
|
-
|
1687
1712
|
MAX_DIFF_TARGET_STRING_SIZE = 1000
|
1688
1713
|
def max_diff_target_string_size
|
1689
1714
|
return @@max_diff_target_string_size if @@max_diff_target_string_size
|
data/lib/test/unit/autorunner.rb
CHANGED
@@ -212,7 +212,7 @@ module Test
|
|
212
212
|
|
213
213
|
o.on('-n', '--name=NAME', String,
|
214
214
|
"Runs tests matching NAME.",
|
215
|
-
"
|
215
|
+
"Use '/PATTERN/' for NAME to use regular expression.") do |name|
|
216
216
|
name = (%r{\A/(.*)/\Z} =~ name ? Regexp.new($1) : name)
|
217
217
|
@filters << lambda do |test|
|
218
218
|
return true if name === test.method_name
|
@@ -226,7 +226,7 @@ module Test
|
|
226
226
|
|
227
227
|
o.on('--ignore-name=NAME', String,
|
228
228
|
"Ignores tests matching NAME.",
|
229
|
-
"
|
229
|
+
"Use '/PATTERN/' for NAME to use regular expression.") do |n|
|
230
230
|
n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
|
231
231
|
case n
|
232
232
|
when Regexp
|
@@ -238,7 +238,7 @@ module Test
|
|
238
238
|
|
239
239
|
o.on('-t', '--testcase=TESTCASE', String,
|
240
240
|
"Runs tests in TestCases matching TESTCASE.",
|
241
|
-
"
|
241
|
+
"Use '/PATTERN/' for TESTCASE to use regular expression.") do |n|
|
242
242
|
n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
|
243
243
|
@filters << lambda do |test|
|
244
244
|
match_test_case_name(test, n)
|
@@ -247,7 +247,7 @@ module Test
|
|
247
247
|
|
248
248
|
o.on('--ignore-testcase=TESTCASE', String,
|
249
249
|
"Ignores tests in TestCases matching TESTCASE.",
|
250
|
-
"
|
250
|
+
"Use '/PATTERN/' for TESTCASE to use regular expression.") do |n|
|
251
251
|
n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
|
252
252
|
@filters << lambda do |test|
|
253
253
|
not match_test_case_name(test, n)
|
@@ -5,9 +5,9 @@ module Test
|
|
5
5
|
@sources = {}
|
6
6
|
end
|
7
7
|
|
8
|
-
def fetch(
|
8
|
+
def fetch(path, line, options={})
|
9
9
|
n_context_line = options[:n_context_line] || 3
|
10
|
-
lines = source(
|
10
|
+
lines = source(path)
|
11
11
|
return [] if lines.nil?
|
12
12
|
min_line = [line - n_context_line, 1].max
|
13
13
|
max_line = [line + n_context_line, lines.length].min
|
@@ -18,14 +18,39 @@ module Test
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def source(
|
22
|
-
@sources[
|
21
|
+
def source(path)
|
22
|
+
@sources[path] ||= read_source(path)
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
26
|
-
def read_source(
|
27
|
-
return nil unless File.exist?(
|
28
|
-
|
26
|
+
def read_source(path)
|
27
|
+
return nil unless File.exist?(path)
|
28
|
+
lines = []
|
29
|
+
File.open(path) do |file|
|
30
|
+
first_line = file.gets
|
31
|
+
break if first_line.nil?
|
32
|
+
encoding = detect_encoding(first_line)
|
33
|
+
if encoding
|
34
|
+
first_line.force_encoding(encoding)
|
35
|
+
file.set_encoding(encoding)
|
36
|
+
end
|
37
|
+
lines << first_line
|
38
|
+
lines.concat(file.readlines)
|
39
|
+
end
|
40
|
+
lines
|
41
|
+
end
|
42
|
+
|
43
|
+
def detect_encoding(first_line)
|
44
|
+
return nil unless first_line.ascii_only?
|
45
|
+
if /\b(?:en)?coding[:=]\s*([a-z\d_-]+)/i =~ first_line
|
46
|
+
begin
|
47
|
+
Encoding.find($1)
|
48
|
+
rescue ArgumentError
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
else
|
52
|
+
nil
|
53
|
+
end
|
29
54
|
end
|
30
55
|
end
|
31
56
|
end
|
data/lib/test/unit/version.rb
CHANGED
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: 3.0.
|
4
|
+
version: 3.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: power_assert
|
@@ -234,44 +234,44 @@ signing_key:
|
|
234
234
|
specification_version: 4
|
235
235
|
summary: An xUnit family unit testing framework for Ruby.
|
236
236
|
test_files:
|
237
|
-
- test/test-test-case.rb
|
238
237
|
- test/test-assertions.rb
|
238
|
+
- test/test-color.rb
|
239
239
|
- test/test-code-snippet.rb
|
240
240
|
- test/test-test-suite-creator.rb
|
241
|
-
- test/test-fault-location-detector.rb
|
242
|
-
- test/test-omission.rb
|
243
241
|
- test/test-test-result.rb
|
244
|
-
- test/collector/test-descendant.rb
|
245
|
-
- test/collector/test_dir.rb
|
246
|
-
- test/collector/test-load.rb
|
247
|
-
- test/collector/test_objectspace.rb
|
248
|
-
- test/test-color.rb
|
249
|
-
- test/test-attribute-matcher.rb
|
250
242
|
- test/test-error.rb
|
251
|
-
- test/test-
|
243
|
+
- test/test-failure.rb
|
244
|
+
- test/run-test.rb
|
252
245
|
- test/test-pending.rb
|
253
|
-
- test/test-
|
254
|
-
- test/
|
255
|
-
- test/util
|
246
|
+
- test/test-color-scheme.rb
|
247
|
+
- test/test-attribute-matcher.rb
|
248
|
+
- test/testunit-test-util.rb
|
249
|
+
- test/test-data.rb
|
250
|
+
- test/ui/test_testrunmediator.rb
|
251
|
+
- test/util/test-method-owner-finder.rb
|
256
252
|
- test/util/test-output.rb
|
257
253
|
- test/util/test_observable.rb
|
258
|
-
- test/util/
|
259
|
-
- test/
|
260
|
-
- test/
|
261
|
-
- test/
|
254
|
+
- test/util/test_backtracefilter.rb
|
255
|
+
- test/util/test_procwrapper.rb
|
256
|
+
- test/test-omission.rb
|
257
|
+
- test/test-test-case.rb
|
258
|
+
- test/test-fixture.rb
|
262
259
|
- test/fixtures/no-header.csv
|
263
260
|
- test/fixtures/header-label.tsv
|
264
261
|
- test/fixtures/plus.csv
|
262
|
+
- test/fixtures/no-header.tsv
|
263
|
+
- test/fixtures/header-label.csv
|
265
264
|
- test/fixtures/header.csv
|
266
265
|
- test/fixtures/header.tsv
|
267
|
-
- test/test-
|
268
|
-
- test/
|
266
|
+
- test/collector/test-descendant.rb
|
267
|
+
- test/collector/test_objectspace.rb
|
268
|
+
- test/collector/test-load.rb
|
269
|
+
- test/collector/test_dir.rb
|
269
270
|
- test/test-priority.rb
|
271
|
+
- test/test-test-suite.rb
|
272
|
+
- test/test-diff.rb
|
273
|
+
- test/test-emacs-runner.rb
|
270
274
|
- test/test-attribute.rb
|
271
|
-
- test/
|
272
|
-
- test/test-fixture.rb
|
275
|
+
- test/test-fault-location-detector.rb
|
273
276
|
- test/test-notification.rb
|
274
|
-
- test/test-failure.rb
|
275
|
-
- test/testunit-test-util.rb
|
276
|
-
- test/ui/test_testrunmediator.rb
|
277
277
|
has_rdoc:
|