baretest 0.1.0

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/test/lib/test.rb ADDED
@@ -0,0 +1,227 @@
1
+ #--
2
+ # Copyright 2009 by Stefan Rusterholz.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #++
6
+
7
+
8
+
9
+ Test.define "Test" do
10
+ suite "::extender" do
11
+ assert "Should return an Array" do
12
+ kind_of(Array, Test.extender)
13
+ end
14
+ end
15
+
16
+ suite "::format" do
17
+ assert "Should return a Hash" do
18
+ kind_of(Hash, Test.format)
19
+ end
20
+ end
21
+
22
+ suite "::toplevel_suite" do
23
+ assert "Should return an instance of Test::Suite" do
24
+ kind_of(::Test::Suite, ::Test.toplevel_suite)
25
+ end
26
+
27
+ assert "Should be used by Test::define" do
28
+ test = ::Test.clone # avoid interfering with the current run
29
+ test.init
30
+ suites_before = test.toplevel_suite.suites.size
31
+ test.define "A new suite" do end
32
+ suites_after = test.toplevel_suite.suites.size
33
+
34
+ equal(suites_before+1, suites_after)
35
+ end
36
+
37
+ assert "Should be used by Test::run_if_mainfile" do
38
+ test = ::Test.clone # avoid interfering with the current run
39
+ test.init
40
+ suites_before = test.toplevel_suite.suites.size
41
+ test.run_if_mainfile "A new suite" do end
42
+ suites_after = test.toplevel_suite.suites.size
43
+
44
+ equal(suites_before+1, suites_after)
45
+ end
46
+
47
+ assert "Should be run by Test::run" do
48
+ this = self # needed because touch is called in the block of another assertion, so otherwise it'd be local to that assertion
49
+ test = ::Test.clone # avoid interfering with the current run
50
+ test.init
51
+ test.define "A new suite" do assert do this.touch(:assertion_executed) end end
52
+ test.run
53
+
54
+ touched(:assertion_executed)
55
+ end
56
+ end
57
+
58
+ suite "::define" do
59
+ assert "Should add the contained suites and asserts to Test::toplevel_suite" do
60
+ test = ::Test.clone # avoid interfering with the current run
61
+ test.init
62
+ suites_before = test.toplevel_suite.suites.size
63
+ test.define "A new suite" do end
64
+ suites_after = test.toplevel_suite.suites.size
65
+
66
+ equal(suites_before+1, suites_after)
67
+ end
68
+ end
69
+
70
+ suite "::run_if_mainfile", :requires => ['rbconfig', 'shellwords'] do
71
+ setup do
72
+ ENV['FORMAT'] = 'minimal'
73
+ @ruby = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
74
+ @test_path = Shellwords.escape(File.expand_path("#{__FILE__}/../../external/bootstraptest.rb"))
75
+ @wrap_path = Shellwords.escape(File.expand_path("#{__FILE__}/../../external/bootstrapwrap.rb"))
76
+ @inc_path = Shellwords.escape(File.dirname(Test.required_file))
77
+ end
78
+
79
+ suite "File is the program" do
80
+ assert "Should run the suite" do
81
+ IO.popen("#{@ruby} -I#{@inc_path} -rtest #{@test_path}") { |sio|
82
+ sio.read
83
+ } =~ /\ATests: 1\nSuccess: 1\nPending: 0\nFailures: 0\nErrors: 0\nTime: [^\n]+\nStatus: success\n\z/
84
+ end
85
+ end
86
+
87
+ suite "File is not the program" do
88
+ assert "Should not run the suite if the file is not the program" do
89
+ IO.popen("#{@ruby} -I#{@inc_path} -rtest #{@wrap_path}") { |sio|
90
+ sio.read
91
+ } =~ /\ADone\n\z/
92
+ end
93
+ end
94
+ end
95
+
96
+ suite "::run" do
97
+ assert "Should run Test's toplevel suite" do
98
+ this = self # needed because touch is called in the block of another assertion, so otherwise it'd be local to that assertion
99
+ test = ::Test.clone # avoid interfering with the current run
100
+ test.init
101
+ test.define "A new suite" do assert do this.touch(:assertion_executed) end end
102
+ test.run
103
+
104
+ touched(:assertion_executed)
105
+ end
106
+ end
107
+
108
+ suite "Skipped" do
109
+ suite "Suite" do
110
+ setup do
111
+ parent = ::Test::Suite.new
112
+ parent.setup do end
113
+ parent.teardown do end
114
+ @suite = ::Test::Skipped::Suite.new("None", parent)
115
+ @suite.setup do end
116
+ @suite.teardown do end
117
+ end
118
+
119
+ suite "#ancestry_setup" do
120
+ assert "Should always be an empty array." do
121
+ equal([], @suite.ancestry_setup)
122
+ end
123
+ end
124
+
125
+ suite "#setup" do
126
+ assert "Should always be an empty array." do
127
+ equal([], @suite.setup)
128
+ end
129
+ end
130
+
131
+ suite "#ancestry_teardown" do
132
+ assert "Should always be an empty array." do
133
+ equal([], @suite.ancestry_teardown)
134
+ end
135
+ end
136
+
137
+ suite "#teardown" do
138
+ assert "Should always be an empty array." do
139
+ equal([], @suite.teardown)
140
+ end
141
+ end
142
+
143
+ suite "#assert" do
144
+ assert "Should add new skipped assertions to a suite." do
145
+ equal(
146
+ :expected => 0,
147
+ :actual => @suite.tests.size,
148
+ :message => "number of defined tests before adding any"
149
+ )
150
+
151
+ @suite.assert "a"
152
+ equal(
153
+ :expected => 1,
154
+ :actual => @suite.tests.size,
155
+ :message => "number of defined tests after adding one"
156
+ )
157
+
158
+ @suite.assert "b"
159
+ equal(
160
+ :expected => 2,
161
+ :actual => @suite.tests.size,
162
+ :message => "number of defined tests after adding two"
163
+ )
164
+
165
+ equal_unordered(
166
+ :expected => ['a', 'b'],
167
+ :actual => @suite.tests.map { |child| child.description },
168
+ :message => "the descriptions"
169
+ )
170
+
171
+ @suite.tests.all? { |test| kind_of(::Test::Skipped::Assertion, test) }
172
+ end
173
+
174
+ assert "Added tests should have the receiving suite as suite." do
175
+ @suite.assert "a"
176
+ assertion = @suite.tests.first
177
+
178
+ same(
179
+ :expected => @suite,
180
+ :actual => assertion.suite,
181
+ :message => "the suite"
182
+ )
183
+ end
184
+ end
185
+ end
186
+
187
+ suite "Assertion" do
188
+ suite "#execute" do
189
+ suite "Given a test that succeeds" do
190
+ assert "Should have status :skipped" do
191
+ assertion = ::Test::Skipped::Assertion.new(nil, "") do true end
192
+ assertion.execute
193
+
194
+ equal(:skipped, assertion.status)
195
+ end
196
+ end
197
+
198
+ suite "Given a test that is pending" do
199
+ assert "Should have status :skipped" do
200
+ assertion = ::Test::Skipped::Assertion.new(nil, "")
201
+ assertion.execute
202
+
203
+ equal(:skipped, assertion.status)
204
+ end
205
+ end
206
+
207
+ suite "Given a test that fails" do
208
+ assert "Should have status :skipped" do
209
+ assertion = ::Test::Skipped::Assertion.new(nil, "") do false end
210
+ assertion.execute
211
+
212
+ equal(:skipped, assertion.status)
213
+ end
214
+ end
215
+
216
+ suite "Given a test that errors" do
217
+ assert "Should have status :skipped" do
218
+ assertion = ::Test::Skipped::Assertion.new(nil, "") do raise end
219
+ assertion.execute
220
+
221
+ equal(:skipped, assertion.status)
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
227
+ end
data/test/setup.rb ADDED
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift(File.expand_path("#{__FILE__}/../../lib"))
2
+ require 'test'
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: baretest
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Stefan Rusterholz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-06-16 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: "Baretest is a Testframework that tries to stay out of your way, but support you when you want it. In order to do so it has a load of features:"
17
+ email: stefan.rusterholz@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - MANIFEST.txt
26
+ - README.markdown
27
+ - bin/baretest
28
+ - examples/test.rake
29
+ - examples/test.rb
30
+ - lib/test.rb
31
+ - lib/test/assertion.rb
32
+ - lib/test/assertion/failure.rb
33
+ - lib/test/assertion/support.rb
34
+ - lib/test/debug.rb
35
+ - lib/test/irb_mode.rb
36
+ - lib/test/run.rb
37
+ - lib/test/run/cli.rb
38
+ - lib/test/run/errors.rb
39
+ - lib/test/run/interactive.rb
40
+ - lib/test/run/minimal.rb
41
+ - lib/test/run/spec.rb
42
+ - lib/test/run/tap.rb
43
+ - lib/test/run/xml.rb
44
+ - lib/test/suite.rb
45
+ - lib/test/version.rb
46
+ - test/external/bootstraptest.rb
47
+ - test/external/bootstrapwrap.rb
48
+ - test/helper/mocks.rb
49
+ - test/lib/test.rb
50
+ - test/lib/test/assertion.rb
51
+ - test/lib/test/assertion/support.rb
52
+ - test/lib/test/debug.rb
53
+ - test/lib/test/irb_mode.rb
54
+ - test/lib/test/run.rb
55
+ - test/lib/test/run/cli.rb
56
+ - test/lib/test/run/errors.rb
57
+ - test/lib/test/run/interactive.rb
58
+ - test/lib/test/run/spec.rb
59
+ - test/lib/test/run/tap.rb
60
+ - test/lib/test/run/xml.rb
61
+ - test/lib/test/suite.rb
62
+ - test/setup.rb
63
+ has_rdoc: true
64
+ homepage: http://
65
+ licenses: []
66
+
67
+ post_install_message:
68
+ rdoc_options:
69
+ - --inline-source
70
+ - --line-numbers
71
+ - --charset
72
+ - utf-8
73
+ - --tab-width
74
+ - "2"
75
+ - -t
76
+ - baretest-#<Proc:0x00539b20@/Users/Shared/Development/Gems/baretest/rake/lib/silverplatter/project/bonesplitter.rb:60> Documentation
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ requirements: []
92
+
93
+ rubyforge_project: baretest
94
+ rubygems_version: 1.3.3
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: "A minimal Testframework. Three methods to use it, Twenty to master it, about hundred lines of code1. Bare Test, try it and you\xE2\x80\x99ll love it."
98
+ test_files: []
99
+