riot 0.10.5 → 0.10.6
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/VERSION +1 -1
- data/lib/riot/context.rb +20 -3
- data/riot.gemspec +2 -2
- data/test/context_test.rb +52 -0
- data/test/report_test.rb +1 -1
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.10.
|
1
|
+
0.10.6
|
data/lib/riot/context.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
module Riot
|
2
|
-
RootContext = Struct.new(:setups, :teardowns)
|
2
|
+
RootContext = Struct.new(:setups, :teardowns) do
|
3
|
+
def assertion_class
|
4
|
+
Assertion
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
3
8
|
class Context
|
4
9
|
attr_reader :description
|
5
10
|
def initialize(description, parent=RootContext.new([],[]), &definition)
|
@@ -20,16 +25,28 @@ module Riot
|
|
20
25
|
def asserts_topic; asserts("topic") { topic }; end
|
21
26
|
|
22
27
|
def context(description, &definition)
|
23
|
-
@contexts <<
|
28
|
+
@contexts << self.class.new("#{@description} #{description}", self, &definition)
|
24
29
|
end
|
25
30
|
|
31
|
+
def extend_assertions(*extension_modules)
|
32
|
+
@assertion_class = Class.new(Assertion) do
|
33
|
+
include *extension_modules
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
26
37
|
def run(reporter)
|
27
38
|
reporter.describe_context(self) unless @assertions.empty?
|
28
39
|
local_run(reporter, Situation.new)
|
29
40
|
run_sub_contexts(reporter)
|
30
41
|
reporter
|
31
42
|
end
|
43
|
+
|
44
|
+
def assertion_class
|
45
|
+
@assertion_class ||= @parent.assertion_class
|
46
|
+
end
|
47
|
+
|
32
48
|
private
|
49
|
+
|
33
50
|
def local_run(reporter, situation)
|
34
51
|
(setups + @assertions + teardowns).each do |runnable|
|
35
52
|
reporter.report(runnable.to_s, runnable.run(situation))
|
@@ -39,7 +56,7 @@ module Riot
|
|
39
56
|
def run_sub_contexts(reporter) @contexts.each { |ctx| ctx.run(reporter) }; end
|
40
57
|
|
41
58
|
def new_assertion(scope, what, &definition)
|
42
|
-
(@assertions <<
|
59
|
+
(@assertions << assertion_class.new("#{scope} #{what}", &definition)).last
|
43
60
|
end
|
44
61
|
end # Context
|
45
62
|
end # Riot
|
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.6"
|
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-15}
|
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 = [
|
data/test/context_test.rb
CHANGED
@@ -88,3 +88,55 @@ context "The asserts_topic shortcut" do
|
|
88
88
|
topic.equals("bar").run(situation)
|
89
89
|
end.equals([:pass])
|
90
90
|
end # The asserts_topic shortcut
|
91
|
+
|
92
|
+
context "Setting assertion extensions" do
|
93
|
+
fake_mod_one, fake_mod_two = Module.new, Module.new
|
94
|
+
|
95
|
+
setup do
|
96
|
+
Riot::Context.new("foo") do
|
97
|
+
extend_assertions fake_mod_one, fake_mod_two
|
98
|
+
end.asserts_topic
|
99
|
+
end
|
100
|
+
|
101
|
+
should("still return an Assertion") { topic }.kind_of(Riot::Assertion)
|
102
|
+
|
103
|
+
should("have included the given assertion extension modules in the assertion") do
|
104
|
+
topic.class.included_modules.include?(fake_mod_one) && topic.class.included_modules.include?(fake_mod_two)
|
105
|
+
end
|
106
|
+
|
107
|
+
context "involving subcontexts without the subcontext extending assertions" do
|
108
|
+
assertion_one = assertion_two = nil
|
109
|
+
|
110
|
+
setup do
|
111
|
+
Riot::Context.new "bleh" do
|
112
|
+
extend_assertions Module.new
|
113
|
+
assertion_one = asserts_topic
|
114
|
+
context("foo") { assertion_two = asserts_topic }
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
should "not create separate instances of the assertion class in subcontexts" do
|
119
|
+
assertion_one && assertion_two && assertion_one.class.object_id == assertion_two.class.object_id
|
120
|
+
end
|
121
|
+
end # involving subcontexts without the subcontext extending assertions
|
122
|
+
|
123
|
+
context "involving subcontexts with the subcontext extending assertions" do
|
124
|
+
assertion_one = assertion_two = nil
|
125
|
+
|
126
|
+
setup do
|
127
|
+
Riot::Context.new "bah" do
|
128
|
+
extend_assertions Module.new
|
129
|
+
assertion_one = asserts_topic
|
130
|
+
context("meh") do
|
131
|
+
extend_assertions Module.new
|
132
|
+
assertion_two = asserts_topic
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
should "create separate instances of the assertion class in subcontexts" do
|
138
|
+
assertion_one && assertion_two && assertion_one.class.object_id != assertion_two.class.object_id
|
139
|
+
end
|
140
|
+
|
141
|
+
end # involving subcontexts with the subcontext extending assertions
|
142
|
+
end # Setting assertion extensions
|
data/test/report_test.rb
CHANGED
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.6
|
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-15 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|