djsun-context 0.5.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/History.txt +10 -0
- data/License.txt +20 -0
- data/Manifest.txt +29 -0
- data/PostInstall.txt +0 -0
- data/README.rdoc +158 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +73 -0
- data/config/requirements.rb +15 -0
- data/context.gemspec +44 -0
- data/lib/context/context.rb +64 -0
- data/lib/context/core_ext/rails_hacks.rb +10 -0
- data/lib/context/core_ext/string.rb +17 -0
- data/lib/context/lifecycle.rb +103 -0
- data/lib/context/shared_behavior.rb +97 -0
- data/lib/context/suite.rb +39 -0
- data/lib/context/test.rb +37 -0
- data/lib/context/version.rb +9 -0
- data/lib/context.rb +19 -0
- data/setup.rb +1585 -0
- data/test/test_context.rb +57 -0
- data/test/test_core_ext.rb +21 -0
- data/test/test_helper.rb +2 -0
- data/test/test_lifecycle.rb +224 -0
- data/test/test_test.rb +23 -0
- metadata +79 -0
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestContext < Test::Unit::TestCase
|
4
|
+
def test_can_write_tests_without_context
|
5
|
+
assert true
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_context_aliases
|
9
|
+
[:context, :contexts, :describe, :describes, :group, :specify, :specifies].each do |method_alias|
|
10
|
+
assert self.class.respond_to?(method_alias)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "A new context" do
|
15
|
+
context "when not nested" do
|
16
|
+
before do
|
17
|
+
@context = Class.new(Test::Unit::TestCase).context("When testing") do
|
18
|
+
def test_this_thing
|
19
|
+
true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set the context name" do
|
25
|
+
assert_equal "When testing", @context.context_name
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should be a Test::Unit::TestCase" do
|
29
|
+
assert @context.ancestors.include?(Test::Unit::TestCase)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when nested" do
|
34
|
+
before do
|
35
|
+
@context = self.class.context("and we're testing") do
|
36
|
+
def self.nested
|
37
|
+
@nested
|
38
|
+
end
|
39
|
+
|
40
|
+
@nested = context "should be nested" do
|
41
|
+
def test_this_thing
|
42
|
+
true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should set a nested context's name" do
|
49
|
+
assert_equal "A new context when nested and we're testing should be nested", @context.nested.context_name
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should also be a Test::Unit::TestCase" do
|
53
|
+
assert @context.nested.ancestors.include?(Test::Unit::TestCase)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestCoreExt < Test::Unit::TestCase
|
4
|
+
context "A string" do
|
5
|
+
it "should be converted to method name" do
|
6
|
+
assert :this_is_fun, "this is fun".to_method_name
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should be downcased when converted" do
|
10
|
+
assert :this_is_a_blast, "THIS is A BlASt".to_method_name
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should change spaces to _" do
|
14
|
+
assert :this_has_been_great, "This has been great".to_method_name
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should change dangerous punctuation to _" do
|
18
|
+
assert :no__really__this_was__good_, "No, really; this was #good!".to_method_name
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,224 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestLifecycle < Test::Unit::TestCase
|
4
|
+
before do
|
5
|
+
@inherited_before_each_var ||= 0
|
6
|
+
@inherited_before_each_var += 1
|
7
|
+
end
|
8
|
+
|
9
|
+
before do
|
10
|
+
@inherited_before_each_var ||= 0
|
11
|
+
@inherited_before_each_var_2 ||= 0
|
12
|
+
@inherited_before_each_var += 2
|
13
|
+
@inherited_before_each_var_2 += 1
|
14
|
+
end
|
15
|
+
|
16
|
+
after do
|
17
|
+
@inherited_after_each_var ||= 0
|
18
|
+
@inherited_after_each_var += 1
|
19
|
+
end
|
20
|
+
|
21
|
+
before :all do
|
22
|
+
@inherited_before_all_var ||= 0
|
23
|
+
@inherited_before_all_var += 1
|
24
|
+
end
|
25
|
+
|
26
|
+
after :all do
|
27
|
+
@inherited_after_all_var ||= 0
|
28
|
+
@inherited_after_all_var += 1
|
29
|
+
end
|
30
|
+
|
31
|
+
sample_test = context "lifecycle" do
|
32
|
+
attr_reader :inherited_before_each_var, :inherited_before_each_var_2, :inherited_after_each_var,
|
33
|
+
:after_each_var, :inherited_before_all_var, :inherited_after_all_var, :before_all_var, :after_all_var, :ivar,
|
34
|
+
:superclass_before_each_var, :superclass_after_each_var, :superclass_before_all_var, :superclass_after_all_var, :one, :two
|
35
|
+
|
36
|
+
before do
|
37
|
+
@inherited_before_each_var ||= 0
|
38
|
+
@inherited_before_each_var += 4
|
39
|
+
end
|
40
|
+
|
41
|
+
after do
|
42
|
+
@after_each_var ||= 0
|
43
|
+
@after_each_var += 1
|
44
|
+
end
|
45
|
+
|
46
|
+
before :all do
|
47
|
+
@before_all_var ||= 0
|
48
|
+
@before_all_var += 1
|
49
|
+
end
|
50
|
+
|
51
|
+
after :all do
|
52
|
+
@after_all_var ||= 0
|
53
|
+
@after_all_var += 1
|
54
|
+
end
|
55
|
+
|
56
|
+
after :a_method
|
57
|
+
|
58
|
+
test "foo" do
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
before do
|
63
|
+
@superclass_before_each_var ||= 0
|
64
|
+
@superclass_before_each_var += 1
|
65
|
+
end
|
66
|
+
|
67
|
+
after do
|
68
|
+
@superclass_after_each_var ||= 0
|
69
|
+
@superclass_after_each_var += 1
|
70
|
+
end
|
71
|
+
|
72
|
+
before :all do
|
73
|
+
@superclass_before_all_var ||= 0
|
74
|
+
@superclass_before_all_var += 1
|
75
|
+
end
|
76
|
+
|
77
|
+
after :all do
|
78
|
+
@superclass_after_all_var ||= 0
|
79
|
+
@superclass_after_all_var += 1
|
80
|
+
end
|
81
|
+
|
82
|
+
context "With before/after :each blocks" do
|
83
|
+
before do
|
84
|
+
@result = Test::Unit::TestResult.new
|
85
|
+
@test = sample_test.new("test: lifecycle foo")
|
86
|
+
@test.run(@result) { |inherited_after_each_var, v| }
|
87
|
+
end
|
88
|
+
|
89
|
+
it "it runs superclass before callbacks in order" do
|
90
|
+
assert_equal 1, @test.superclass_before_each_var
|
91
|
+
end
|
92
|
+
|
93
|
+
it "it runs inherited before callbacks in order" do
|
94
|
+
assert_equal 7, @test.inherited_before_each_var
|
95
|
+
end
|
96
|
+
|
97
|
+
it "it runs before callbacks in order" do
|
98
|
+
assert_equal 1, @test.inherited_before_each_var_2
|
99
|
+
end
|
100
|
+
|
101
|
+
it "it runs superclass after callbacks" do
|
102
|
+
assert_equal 1, @test.superclass_after_each_var
|
103
|
+
end
|
104
|
+
|
105
|
+
it "it runs inherited after callbacks" do
|
106
|
+
assert_equal 1, @test.inherited_after_each_var
|
107
|
+
end
|
108
|
+
|
109
|
+
it "it runs after callbacks" do
|
110
|
+
assert_equal 1, @test.after_each_var
|
111
|
+
end
|
112
|
+
|
113
|
+
it "it runs after callbacks specified with method names, instead of blocks" do
|
114
|
+
assert_equal "a method ran", @test.ivar
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context "With before/after :all blocks" do
|
119
|
+
before do
|
120
|
+
@result = Test::Unit::TestResult.new
|
121
|
+
@suite = sample_test.suite
|
122
|
+
@suite.run(@result) { |inherited_after_each_var, v| }
|
123
|
+
@test = @suite.tests.first
|
124
|
+
end
|
125
|
+
|
126
|
+
it "it runs superclass before callbacks in order" do
|
127
|
+
assert_equal 1, @test.superclass_before_all_var
|
128
|
+
end
|
129
|
+
|
130
|
+
it "it runs inherited before callbacks in order" do
|
131
|
+
assert_equal 1, @test.inherited_before_all_var
|
132
|
+
end
|
133
|
+
|
134
|
+
it "it runs before callbacks in order" do
|
135
|
+
assert_equal 1, @test.before_all_var
|
136
|
+
end
|
137
|
+
|
138
|
+
it "it runs superclass after callbacks" do
|
139
|
+
assert_equal 1, @test.superclass_after_all_var
|
140
|
+
end
|
141
|
+
|
142
|
+
it "it runs inherited after callbacks" do
|
143
|
+
assert_equal 1, @test.inherited_after_all_var
|
144
|
+
end
|
145
|
+
|
146
|
+
it "it runs after callbacks" do
|
147
|
+
assert_equal 1, @test.after_all_var
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# Test that we aren't stomping on defined seutp method
|
152
|
+
context "With setup/teardown methods" do
|
153
|
+
before do
|
154
|
+
@result = Test::Unit::TestResult.new
|
155
|
+
@test = sample_test.new("test: lifecycle foo")
|
156
|
+
|
157
|
+
@test.class.setup do
|
158
|
+
@one = 1
|
159
|
+
end
|
160
|
+
|
161
|
+
@test.class.teardown do
|
162
|
+
@two = 10
|
163
|
+
end
|
164
|
+
|
165
|
+
@test.run(@result) { |inherited_after_each_var, v| }
|
166
|
+
end
|
167
|
+
|
168
|
+
it "runs setup method block a la Shoulda" do
|
169
|
+
assert_equal 1, @test.one
|
170
|
+
end
|
171
|
+
|
172
|
+
it "runs setup method block and regular callbacks" do
|
173
|
+
assert_equal 7, @test.inherited_before_each_var
|
174
|
+
end
|
175
|
+
|
176
|
+
it "runs teardown method block a la Shoulda" do
|
177
|
+
assert_equal 10, @test.two
|
178
|
+
end
|
179
|
+
|
180
|
+
it "runs teardown method block and regular callbacks" do
|
181
|
+
assert_equal 1, @test.after_each_var
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context "With the before option" do
|
186
|
+
setup do
|
187
|
+
@jvar = "override success!"
|
188
|
+
end
|
189
|
+
|
190
|
+
l = lambda { @ivar = "awesome" }
|
191
|
+
should "run the lambda", :before => l do
|
192
|
+
assert_equal "awesome", @ivar
|
193
|
+
end
|
194
|
+
|
195
|
+
l = lambda { @jvar = "should be overridden" }
|
196
|
+
should "run the lambda before the setup", :before => l do
|
197
|
+
assert_equal "override success!", @jvar
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
context "Before tests" do
|
202
|
+
# omg this is odd
|
203
|
+
setup do
|
204
|
+
assert_equal "yup, it's set", @ivar
|
205
|
+
end
|
206
|
+
|
207
|
+
before_test "run before the setup block" do
|
208
|
+
@ivar = "yup, it's set"
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
context "To be compatible with rails' expectations" do
|
213
|
+
setup :a_method
|
214
|
+
|
215
|
+
it "should accept a symbol for an argument to setup and run that method at setup time" do
|
216
|
+
assert_equal "a method ran", @ivar
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
protected
|
221
|
+
def a_method
|
222
|
+
@ivar = "a method ran"
|
223
|
+
end
|
224
|
+
end
|
data/test/test_test.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestTest < Test::Unit::TestCase
|
4
|
+
def test_test_aliases
|
5
|
+
[:test, :it, :should, :tests].each do |method_alias|
|
6
|
+
assert self.class.respond_to?(method_alias)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_before_test_aliases
|
11
|
+
[:before_test, :before_it, :before_should, :before_tests].each do |method_alias|
|
12
|
+
assert self.class.respond_to?(method_alias), method_alias.inspect
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "A test block" do
|
17
|
+
it "should create a test_xxx method" do
|
18
|
+
self.class.test("should create a test method") { true }
|
19
|
+
|
20
|
+
assert self.respond_to?("test: A test block should create a test method")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: djsun-context
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy McAnally
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-10-03 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: If you've ever wanted contexts in your Test::Unit tests, then context is for you. Your tests will be easier to read and write without all the magic and extra code smell!
|
17
|
+
email: jeremy@entp.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- History.txt
|
24
|
+
- Manifest.txt
|
25
|
+
- README.rdoc
|
26
|
+
files:
|
27
|
+
- README.rdoc
|
28
|
+
- Rakefile
|
29
|
+
- context.gemspec
|
30
|
+
- History.txt
|
31
|
+
- License.txt
|
32
|
+
- Manifest.txt
|
33
|
+
- PostInstall.txt
|
34
|
+
- config/hoe.rb
|
35
|
+
- config/requirements.rb
|
36
|
+
- lib/context.rb
|
37
|
+
- lib/context/version.rb
|
38
|
+
- lib/context/lifecycle.rb
|
39
|
+
- lib/context/suite.rb
|
40
|
+
- lib/context/context.rb
|
41
|
+
- lib/context/shared_behavior.rb
|
42
|
+
- lib/context/test.rb
|
43
|
+
- lib/context/core_ext/string.rb
|
44
|
+
- lib/context/core_ext/rails_hacks.rb
|
45
|
+
- setup.rb
|
46
|
+
has_rdoc: true
|
47
|
+
homepage: http://github.com/jeremymcanally/context
|
48
|
+
licenses:
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options:
|
51
|
+
- --main
|
52
|
+
- README.rdoc
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: "0"
|
60
|
+
version:
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
version:
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.3.5
|
71
|
+
signing_key:
|
72
|
+
specification_version: 2
|
73
|
+
summary: Contexts and DSL sugar for your tests
|
74
|
+
test_files:
|
75
|
+
- test/test_context.rb
|
76
|
+
- test/test_core_ext.rb
|
77
|
+
- test/test_lifecycle.rb
|
78
|
+
- test/test_test.rb
|
79
|
+
- test/test_helper.rb
|