riot 0.10.4 → 0.10.5
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.
- data/README.markdown +8 -1
- data/VERSION +1 -1
- data/lib/riot/assertion_macros.rb +16 -0
- data/lib/riot/context.rb +20 -18
- data/lib/riot/reporter.rb +38 -10
- data/riot.gemspec +9 -3
- data/test/assertion_macros/any_test.rb +19 -0
- data/test/assertion_macros/size_test.rb +36 -0
- data/test/report_test.rb +51 -6
- data/test/teardown_test.rb +42 -0
- metadata +8 -2
data/README.markdown
CHANGED
@@ -93,6 +93,7 @@ For instance, given a test file named `foo_test.rb`, you might have the followin
|
|
93
93
|
context "a new user" do
|
94
94
|
setup { User.new }
|
95
95
|
asserts("that it is not yet created") { topic.new_record? }
|
96
|
+
teardown { #cleanup here }
|
96
97
|
end
|
97
98
|
|
98
99
|
Notice that you do not define a class anywhere. That would be the entire contents of that test file. If you wanted to use a `should` instead, you could say this:
|
@@ -348,7 +349,13 @@ I should say that I love Shoulda in theory and in practice. It changed the way I
|
|
348
349
|
|
349
350
|
Riot differs primarily in that it does not rerun setup for each test in a context. I know this is going to shock a lot of folks. However, over the past several years of my doing TDD in some capacity or another, there are certain habits I have tried to pick up on any many others I have tried to drop.
|
350
351
|
|
351
|
-
For instance, I believe that no assertion should mangle the context of
|
352
|
+
For instance, I believe that no assertion should mangle the context of
|
353
|
+
the test data it is running in. Following this allows me to require
|
354
|
+
setup be run only once for a collection of related assertions. Even in
|
355
|
+
a nested context where setups are inherited, the setup's are called
|
356
|
+
only once per the specific context. Furthermore, teardowns are also
|
357
|
+
called only once per the specific context, after all the setups and
|
358
|
+
assertions have run.
|
352
359
|
|
353
360
|
Following all of this allows me to have very fast tests (so far).
|
354
361
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.10.
|
1
|
+
0.10.5
|
@@ -108,6 +108,22 @@ module Riot
|
|
108
108
|
actual.length == 0 ? pass : fail("expected #{actual.inspect} to be empty")
|
109
109
|
end
|
110
110
|
|
111
|
+
# Asserts the result has items
|
112
|
+
# asserts("an array") { [1] }.any
|
113
|
+
# asserts("a hash") { {:name => 'washington'} }.any
|
114
|
+
assertion(:any) do |actual|
|
115
|
+
actual.any? ? pass : fail("expected #{actual.inspect} to have items")
|
116
|
+
end
|
117
|
+
|
118
|
+
# Asserts that result's size is as expected. Expected size can be specified as
|
119
|
+
# a number or a range.
|
120
|
+
# asserts("a string") { 'washington' }.size(9..12)
|
121
|
+
# asserts("an array") { [1, 2, 3] }.size(3)
|
122
|
+
# asserts("a hash") { {:name => 'washington'} }.size(1)
|
123
|
+
assertion(:size) do |actual, expected|
|
124
|
+
expected === actual.size ? pass : fail("size of #{actual.inspect} expected to be #{expected} but is #{actual.size}")
|
125
|
+
end
|
126
|
+
|
111
127
|
# Asserts the result contains the expected element
|
112
128
|
# asserts("a string") { "world" }.includes('o')
|
113
129
|
# asserts("an array") { [1,2,3] }.includes(2)
|
data/lib/riot/context.rb
CHANGED
@@ -1,24 +1,22 @@
|
|
1
1
|
module Riot
|
2
|
-
RootContext = Struct.new(:setups)
|
2
|
+
RootContext = Struct.new(:setups, :teardowns)
|
3
3
|
class Context
|
4
|
-
|
4
|
+
attr_reader :description
|
5
|
+
def initialize(description, parent=RootContext.new([],[]), &definition)
|
5
6
|
@parent = parent
|
6
7
|
@description = description
|
7
|
-
@contexts, @setups, @assertions = [], [], []
|
8
|
+
@contexts, @setups, @assertions, @teardowns = [], [], [], []
|
8
9
|
self.instance_eval(&definition)
|
9
10
|
end
|
10
|
-
|
11
|
-
def setup(&definition)
|
12
|
-
@setups << Setup.new(&definition)
|
13
|
-
end
|
14
11
|
|
15
|
-
def setups
|
16
|
-
|
17
|
-
|
12
|
+
def setups; @parent.setups + @setups; end
|
13
|
+
def teardowns; @parent.teardowns + @teardowns; end
|
14
|
+
|
15
|
+
def setup(&definition) (@setups << Setup.new(&definition)).last; end
|
16
|
+
def teardown(&definition) (@teardowns << Setup.new(&definition)).last; end
|
18
17
|
|
19
18
|
def asserts(what, &definition) new_assertion("asserts", what, &definition); end
|
20
19
|
def should(what, &definition) new_assertion("should", what, &definition); end
|
21
|
-
|
22
20
|
def asserts_topic; asserts("topic") { topic }; end
|
23
21
|
|
24
22
|
def context(description, &definition)
|
@@ -26,16 +24,20 @@ module Riot
|
|
26
24
|
end
|
27
25
|
|
28
26
|
def run(reporter)
|
29
|
-
|
30
|
-
reporter.
|
31
|
-
|
32
|
-
runnables.each do |runnable|
|
33
|
-
reporter.report(runnable.to_s, runnable.run(situation))
|
34
|
-
end
|
35
|
-
@contexts.each { |ctx| ctx.run(reporter) }
|
27
|
+
reporter.describe_context(self) unless @assertions.empty?
|
28
|
+
local_run(reporter, Situation.new)
|
29
|
+
run_sub_contexts(reporter)
|
36
30
|
reporter
|
37
31
|
end
|
38
32
|
private
|
33
|
+
def local_run(reporter, situation)
|
34
|
+
(setups + @assertions + teardowns).each do |runnable|
|
35
|
+
reporter.report(runnable.to_s, runnable.run(situation))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def run_sub_contexts(reporter) @contexts.each { |ctx| ctx.run(reporter) }; end
|
40
|
+
|
39
41
|
def new_assertion(scope, what, &definition)
|
40
42
|
(@assertions << Assertion.new("#{scope} #{what}", &definition)).last
|
41
43
|
end
|
data/lib/riot/reporter.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Riot
|
2
2
|
class Reporter
|
3
|
-
attr_accessor :passes, :failures, :errors
|
3
|
+
attr_accessor :passes, :failures, :errors, :current_context
|
4
4
|
def initialize
|
5
5
|
@passes = @failures = @errors = 0
|
6
|
+
@current_context = ""
|
6
7
|
end
|
7
8
|
|
8
9
|
def summarize(&block)
|
@@ -12,7 +13,7 @@ module Riot
|
|
12
13
|
results(Time.now - started)
|
13
14
|
end
|
14
15
|
|
15
|
-
def describe_context(
|
16
|
+
def describe_context(context); @current_context = context; end
|
16
17
|
|
17
18
|
def report(description, response)
|
18
19
|
code, result = *response
|
@@ -36,9 +37,9 @@ module Riot
|
|
36
37
|
|
37
38
|
class IOReporter < Reporter
|
38
39
|
attr_reader :writer
|
39
|
-
def initialize(writer=
|
40
|
+
def initialize(writer=STDOUT)
|
40
41
|
super()
|
41
|
-
@writer = writer
|
42
|
+
@writer = writer
|
42
43
|
end
|
43
44
|
def say(message) writer.puts(message); end
|
44
45
|
|
@@ -47,6 +48,14 @@ module Riot
|
|
47
48
|
say "\n%d passes, %d failures, %d errors in %s seconds" % values
|
48
49
|
end
|
49
50
|
|
51
|
+
def format_error(e)
|
52
|
+
format = " #{e.class.name} occured"
|
53
|
+
format += "\n#{e.to_s}\n"
|
54
|
+
e.backtrace.each { |line| format += "\n at #{line}" }
|
55
|
+
|
56
|
+
format
|
57
|
+
end
|
58
|
+
|
50
59
|
begin
|
51
60
|
raise LoadError if ENV["TM_MODE"]
|
52
61
|
require 'rubygems'
|
@@ -60,7 +69,10 @@ module Riot
|
|
60
69
|
end
|
61
70
|
|
62
71
|
class StoryReporter < IOReporter
|
63
|
-
def describe_context(
|
72
|
+
def describe_context(context)
|
73
|
+
super
|
74
|
+
say context.description
|
75
|
+
end
|
64
76
|
def pass(description) say " + " + green(description); end
|
65
77
|
def fail(description, message) say " - " + yellow("#{description}: #{message}"); end
|
66
78
|
def error(description, e) say " ! " + red("#{description}: #{e.message}"); end
|
@@ -69,16 +81,32 @@ module Riot
|
|
69
81
|
class VerboseStoryReporter < StoryReporter
|
70
82
|
def error(description, e)
|
71
83
|
super(description, e)
|
72
|
-
say red(
|
73
|
-
e.backtrace.each { |line| say red(" at #{line}") }
|
84
|
+
say red(format_error(e))
|
74
85
|
end
|
75
86
|
end
|
76
87
|
|
77
88
|
class DotMatrixReporter < IOReporter
|
78
89
|
def pass(description); writer.write green("."); end
|
79
|
-
|
80
|
-
def
|
81
|
-
|
90
|
+
|
91
|
+
def initialize(writer=STDOUT)
|
92
|
+
super
|
93
|
+
@details = []
|
94
|
+
end
|
95
|
+
def fail(description, message)
|
96
|
+
writer.write yellow("F")
|
97
|
+
@details << "FAILURE - #{current_context.description} #{description} => #{message}"
|
98
|
+
end
|
99
|
+
|
100
|
+
def error(description, e)
|
101
|
+
writer.write red("E")
|
102
|
+
@details << "ERROR - #{current_context.description} #{description} => #{format_error(e)}"
|
103
|
+
end
|
104
|
+
|
105
|
+
def results(time_taken)
|
106
|
+
say "\n"
|
107
|
+
@details.each { |detail| say detail }
|
108
|
+
super
|
109
|
+
end
|
82
110
|
end
|
83
111
|
|
84
112
|
class SilentReporter < Reporter
|
data/riot.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{riot}
|
8
|
-
s.version = "0.10.
|
8
|
+
s.version = "0.10.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Justin 'Gus' Knowlden"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-14}
|
13
13
|
s.description = %q{An extremely fast, expressive, and context-driven unit-testing framework. A replacement for all other testing frameworks. Protest the slow test.}
|
14
14
|
s.email = %q{gus@gusg.us}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
"lib/riot/runnable.rb",
|
31
31
|
"lib/riot/situation.rb",
|
32
32
|
"riot.gemspec",
|
33
|
+
"test/assertion_macros/any_test.rb",
|
33
34
|
"test/assertion_macros/assigns_test.rb",
|
34
35
|
"test/assertion_macros/empty_test.rb",
|
35
36
|
"test/assertion_macros/equals_test.rb",
|
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
|
|
41
42
|
"test/assertion_macros/raises_test.rb",
|
42
43
|
"test/assertion_macros/respond_to_test.rb",
|
43
44
|
"test/assertion_macros/same_elements_test.rb",
|
45
|
+
"test/assertion_macros/size_test.rb",
|
44
46
|
"test/assertion_test.rb",
|
45
47
|
"test/benchmark/colorize.rb",
|
46
48
|
"test/benchmark/riot_vs_minitest.rb",
|
@@ -50,6 +52,7 @@ Gem::Specification.new do |s|
|
|
50
52
|
"test/report_test.rb",
|
51
53
|
"test/setup_test.rb",
|
52
54
|
"test/situation_test.rb",
|
55
|
+
"test/teardown_test.rb",
|
53
56
|
"test/teststrap.rb"
|
54
57
|
]
|
55
58
|
s.homepage = %q{http://github.com/thumblemonks/riot}
|
@@ -58,7 +61,8 @@ Gem::Specification.new do |s|
|
|
58
61
|
s.rubygems_version = %q{1.3.5}
|
59
62
|
s.summary = %q{An extremely fast, expressive, and context-driven unit-testing framework. Protest the slow test.}
|
60
63
|
s.test_files = [
|
61
|
-
"test/assertion_macros/
|
64
|
+
"test/assertion_macros/any_test.rb",
|
65
|
+
"test/assertion_macros/assigns_test.rb",
|
62
66
|
"test/assertion_macros/empty_test.rb",
|
63
67
|
"test/assertion_macros/equals_test.rb",
|
64
68
|
"test/assertion_macros/exists_test.rb",
|
@@ -69,6 +73,7 @@ Gem::Specification.new do |s|
|
|
69
73
|
"test/assertion_macros/raises_test.rb",
|
70
74
|
"test/assertion_macros/respond_to_test.rb",
|
71
75
|
"test/assertion_macros/same_elements_test.rb",
|
76
|
+
"test/assertion_macros/size_test.rb",
|
72
77
|
"test/assertion_test.rb",
|
73
78
|
"test/benchmark/colorize.rb",
|
74
79
|
"test/benchmark/riot_vs_minitest.rb",
|
@@ -78,6 +83,7 @@ Gem::Specification.new do |s|
|
|
78
83
|
"test/report_test.rb",
|
79
84
|
"test/setup_test.rb",
|
80
85
|
"test/situation_test.rb",
|
86
|
+
"test/teardown_test.rb",
|
81
87
|
"test/teststrap.rb"
|
82
88
|
]
|
83
89
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'teststrap'
|
2
|
+
|
3
|
+
context "An any assertion macro" do
|
4
|
+
setup do
|
5
|
+
def assert_any(string)
|
6
|
+
Riot::Assertion.new("test") { string }.any
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
assertion_test_passes("when an array has items") { assert_any([1]) }
|
11
|
+
assertion_test_fails("when an array is empty", "expected [] to have items") do
|
12
|
+
assert_any([])
|
13
|
+
end
|
14
|
+
|
15
|
+
assertion_test_passes("when a hash has items") { assert_any({:name => 'washington'}) }
|
16
|
+
assertion_test_fails("when a hash is empty", "expected {} to have items") do
|
17
|
+
assert_any({})
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'teststrap'
|
2
|
+
|
3
|
+
context "A size assertion macro" do
|
4
|
+
setup do
|
5
|
+
def assert_size(sizable, expected_size)
|
6
|
+
Riot::Assertion.new("test") { sizable }.size(expected_size)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
assertion_test_passes("when string's size is as expected") { assert_size("washington", 10) }
|
11
|
+
assertion_test_passes("when string's size is in given range") { assert_size("washington", 9..12) }
|
12
|
+
assertion_test_fails("when string's size is not as expected", "size of \"washington\" expected to be 11 but is 10") do
|
13
|
+
assert_size("washington", 11)
|
14
|
+
end
|
15
|
+
assertion_test_fails("when string's size is out of range", "size of \"washington\" expected to be 11..13 but is 10") do
|
16
|
+
assert_size("washington", 11..13)
|
17
|
+
end
|
18
|
+
|
19
|
+
assertion_test_passes("when an array's size is as expected") { assert_size([1, 2, 3], 3) }
|
20
|
+
assertion_test_passes("when an array's size is in given range") { assert_size([1, 2, 3], 3..4) }
|
21
|
+
assertion_test_fails("when an array's size is not as expected", "size of [1, 2, 3] expected to be 2 but is 3") do
|
22
|
+
assert_size([1, 2, 3], 2)
|
23
|
+
end
|
24
|
+
assertion_test_fails("when an array's size is out of range", "size of [1, 2, 3] expected to be 4..6 but is 3") do
|
25
|
+
assert_size([1, 2, 3], 4..6)
|
26
|
+
end
|
27
|
+
|
28
|
+
assertion_test_passes("when a hash size is as expected") { assert_size({:name => 'washington'}, 1) }
|
29
|
+
assertion_test_passes("when a hash size is in range") { assert_size({:name => 'washington'}, 1...3) }
|
30
|
+
assertion_test_fails("when a hash size is not as expected", "size of {} expected to be 2 but is 0") do
|
31
|
+
assert_size({}, 2)
|
32
|
+
end
|
33
|
+
assertion_test_fails("when a hash size is out of range", "size of {} expected to be 2...4 but is 0") do
|
34
|
+
assert_size({}, 2...4)
|
35
|
+
end
|
36
|
+
end
|
data/test/report_test.rb
CHANGED
@@ -51,22 +51,21 @@ end # A reporter
|
|
51
51
|
|
52
52
|
require 'stringio'
|
53
53
|
context "StoryReporter" do
|
54
|
-
setup
|
54
|
+
setup do
|
55
55
|
@out = StringIO.new
|
56
56
|
Riot::StoryReporter.new(@out)
|
57
|
-
|
57
|
+
emd
|
58
58
|
|
59
59
|
context 'reporting on an empty context' do
|
60
60
|
setup do
|
61
61
|
context = Riot::Context.new('empty context') do
|
62
|
-
context
|
63
|
-
end
|
62
|
+
context("a nested empty context") {}
|
64
63
|
end
|
65
64
|
context.run(topic)
|
66
65
|
end
|
67
66
|
should("not output context name") { @out.string }.empty
|
68
67
|
end
|
69
|
-
|
68
|
+
|
70
69
|
context "reporting on a non-empty context" do
|
71
70
|
setup do
|
72
71
|
context = Riot::Context.new('supercontext') do
|
@@ -74,9 +73,55 @@ context "StoryReporter" do
|
|
74
73
|
end
|
75
74
|
context.run(topic)
|
76
75
|
end
|
77
|
-
|
76
|
+
|
78
77
|
should('output context name') { @out.string }.matches(/supercontext/)
|
79
78
|
should('output name of passed assertion') { @out.string }.matches(/truth/)
|
80
79
|
end
|
80
|
+
end
|
81
81
|
|
82
|
+
context "DotMatrixReporter" do
|
83
|
+
setup do
|
84
|
+
@out = StringIO.new
|
85
|
+
Riot::DotMatrixReporter.new(@out)
|
86
|
+
end
|
87
|
+
|
88
|
+
context "with a passing test" do
|
89
|
+
setup do
|
90
|
+
context = Riot::Context.new('whatever') do
|
91
|
+
asserts('true') { true }
|
92
|
+
end
|
93
|
+
context.run(topic)
|
94
|
+
@out.string
|
95
|
+
end
|
96
|
+
asserts('puts a dot').matches('.')
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'with a failing test' do
|
100
|
+
setup do
|
101
|
+
Riot::Context.new('whatever') do
|
102
|
+
asserts('nope!') { false }
|
103
|
+
end.run(topic)
|
104
|
+
topic.results(100)
|
105
|
+
@out.string
|
106
|
+
end
|
107
|
+
|
108
|
+
asserts('puts an F').matches('F')
|
109
|
+
asserts("puts the full context + assertion name").matches('whatever asserts nope!')
|
110
|
+
asserts("puts the failure reason").matches(/Expected .* but got false instead/)
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'with an error test' do
|
114
|
+
setup do
|
115
|
+
Riot::Context.new('whatever') do
|
116
|
+
asserts('bang') { raise "BOOM" }
|
117
|
+
end.run(topic)
|
118
|
+
topic.results(100)
|
119
|
+
@out.string
|
120
|
+
end
|
121
|
+
|
122
|
+
asserts('puts an E').matches('E')
|
123
|
+
asserts('puts the full context + assertion name').matches('whatever asserts bang')
|
124
|
+
asserts('puts the exception message').matches('BOOM')
|
125
|
+
asserts('puts the exception backtrace').matches(__FILE__)
|
126
|
+
end
|
82
127
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'teststrap'
|
2
|
+
|
3
|
+
global_thang = Struct.new(:count).new(0)
|
4
|
+
|
5
|
+
context "A context with a teardown" do
|
6
|
+
setup do
|
7
|
+
@a_context = Riot::Context.new("me") do
|
8
|
+
setup { global_thang.count += 1 }
|
9
|
+
asserts("teardown run") { global_thang.count }.equals(1)
|
10
|
+
teardown { global_thang.count += 1 }
|
11
|
+
end
|
12
|
+
@a_context.run(MockReporter.new)
|
13
|
+
end
|
14
|
+
|
15
|
+
asserts("test passed") { topic.passes }.equals(1)
|
16
|
+
asserts("teardown run") { global_thang.count }.equals(2)
|
17
|
+
|
18
|
+
context "that has a nested context with teardowns" do
|
19
|
+
setup do
|
20
|
+
@a_context.context "nested" do
|
21
|
+
setup { global_thang.count = 0 }
|
22
|
+
asserts("no teardowns run") { global_thang.count }.equals(0)
|
23
|
+
teardown { global_thang.count += 2 }
|
24
|
+
end
|
25
|
+
@a_context.run(MockReporter.new)
|
26
|
+
end
|
27
|
+
asserts("tests passed") { topic.passes }.equals(1)
|
28
|
+
asserts("teardowns ran in local and parent context") { global_thang.count }.equals(3)
|
29
|
+
end # that has a nested context with teardowns
|
30
|
+
|
31
|
+
context "that has multiple teardowns in nested context" do
|
32
|
+
setup do
|
33
|
+
@a_context.context "nested" do
|
34
|
+
setup { global_thang.count = 0 }
|
35
|
+
teardown { global_thang.count += 2 }
|
36
|
+
teardown { global_thang.count += 2 }
|
37
|
+
end
|
38
|
+
@a_context.run(MockReporter.new)
|
39
|
+
end
|
40
|
+
asserts("teardowns ran in local and parent context") { global_thang.count }.equals(5)
|
41
|
+
end # that has multiple teardowns in nested context
|
42
|
+
end # A context with a teardown
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin 'Gus' Knowlden
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-14 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- lib/riot/runnable.rb
|
46
46
|
- lib/riot/situation.rb
|
47
47
|
- riot.gemspec
|
48
|
+
- test/assertion_macros/any_test.rb
|
48
49
|
- test/assertion_macros/assigns_test.rb
|
49
50
|
- test/assertion_macros/empty_test.rb
|
50
51
|
- test/assertion_macros/equals_test.rb
|
@@ -56,6 +57,7 @@ files:
|
|
56
57
|
- test/assertion_macros/raises_test.rb
|
57
58
|
- test/assertion_macros/respond_to_test.rb
|
58
59
|
- test/assertion_macros/same_elements_test.rb
|
60
|
+
- test/assertion_macros/size_test.rb
|
59
61
|
- test/assertion_test.rb
|
60
62
|
- test/benchmark/colorize.rb
|
61
63
|
- test/benchmark/riot_vs_minitest.rb
|
@@ -65,6 +67,7 @@ files:
|
|
65
67
|
- test/report_test.rb
|
66
68
|
- test/setup_test.rb
|
67
69
|
- test/situation_test.rb
|
70
|
+
- test/teardown_test.rb
|
68
71
|
- test/teststrap.rb
|
69
72
|
has_rdoc: true
|
70
73
|
homepage: http://github.com/thumblemonks/riot
|
@@ -95,6 +98,7 @@ signing_key:
|
|
95
98
|
specification_version: 3
|
96
99
|
summary: An extremely fast, expressive, and context-driven unit-testing framework. Protest the slow test.
|
97
100
|
test_files:
|
101
|
+
- test/assertion_macros/any_test.rb
|
98
102
|
- test/assertion_macros/assigns_test.rb
|
99
103
|
- test/assertion_macros/empty_test.rb
|
100
104
|
- test/assertion_macros/equals_test.rb
|
@@ -106,6 +110,7 @@ test_files:
|
|
106
110
|
- test/assertion_macros/raises_test.rb
|
107
111
|
- test/assertion_macros/respond_to_test.rb
|
108
112
|
- test/assertion_macros/same_elements_test.rb
|
113
|
+
- test/assertion_macros/size_test.rb
|
109
114
|
- test/assertion_test.rb
|
110
115
|
- test/benchmark/colorize.rb
|
111
116
|
- test/benchmark/riot_vs_minitest.rb
|
@@ -115,4 +120,5 @@ test_files:
|
|
115
120
|
- test/report_test.rb
|
116
121
|
- test/setup_test.rb
|
117
122
|
- test/situation_test.rb
|
123
|
+
- test/teardown_test.rb
|
118
124
|
- test/teststrap.rb
|