bacon 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +220 -0
- data/RDOX +10 -1
- data/README +35 -3
- data/Rakefile +37 -32
- data/bin/bacon +6 -0
- data/lib/autotest/bacon_rspec.rb +2 -0
- data/lib/bacon.rb +44 -10
- data/test/spec_bacon.rb +35 -1
- metadata +9 -7
data/ChangeLog
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
Sat Oct 25 12:30:00 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
2
|
+
* De-metaprogram and document nested before/after
|
3
|
+
|
4
|
+
Fri Oct 24 17:20:17 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
|
5
|
+
* Having higher-level after blocks also be run for nested contexts.
|
6
|
+
|
7
|
+
Fri Oct 24 17:14:30 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
|
8
|
+
* Cleaning up setting of nested before blocks
|
9
|
+
|
10
|
+
Fri Oct 24 17:09:42 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
|
11
|
+
* Ensuring that nested before blocks are run in the correct order
|
12
|
+
|
13
|
+
Fri Oct 24 17:06:18 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
|
14
|
+
* Ensuring that before blocks don't bleed into sibling levels
|
15
|
+
|
16
|
+
Fri Oct 24 17:01:51 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
|
17
|
+
* Letting before blocks be run from higher levels in nested context
|
18
|
+
|
19
|
+
Split up Context#initialize to let running be a separate step.
|
20
|
+
Added attr_reader for Context name and block to let the running step have access
|
21
|
+
to them without resorting to instance variables.
|
22
|
+
|
23
|
+
Sat Oct 4 13:38:23 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
24
|
+
* Move to git
|
25
|
+
|
26
|
+
Sun Aug 17 13:32:40 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
27
|
+
* Add option to disable backtraces
|
28
|
+
|
29
|
+
Sun Aug 17 12:48:29 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
30
|
+
* Don't %-expand twice in TAP output
|
31
|
+
|
32
|
+
Fri Aug 1 12:01:28 2008 +0200 jftucker <jftucker@gmail.com>
|
33
|
+
* pols-for-at-exit
|
34
|
+
|
35
|
+
Added an alias for summary_on_exit to summary_at_exit to save on POLS for some people (me!).
|
36
|
+
|
37
|
+
Sun Jul 6 18:47:42 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
38
|
+
* Add bacon_rspec.rb to avoid errors when .bacon doesn't exist
|
39
|
+
|
40
|
+
Sun Jul 6 18:05:13 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
41
|
+
* Push VERSION to 1.0
|
42
|
+
|
43
|
+
Sun Jul 6 18:04:55 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
44
|
+
* Small reformatting
|
45
|
+
|
46
|
+
Sun Jul 6 18:04:41 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
47
|
+
* Update README
|
48
|
+
|
49
|
+
Sun Jul 6 18:03:51 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
50
|
+
* Allow 50 lines more code
|
51
|
+
|
52
|
+
Sun Jul 6 17:46:07 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
53
|
+
* Suppress warnings when the suite loads Bacon again
|
54
|
+
|
55
|
+
Wed Jun 25 13:56:34 2008 +0200 jftucker <jftucker@gmail.com>
|
56
|
+
* support spec/test subdirs for -a
|
57
|
+
|
58
|
+
Wed Jun 25 13:20:29 2008 +0200 jftucker <jftucker@gmail.com>
|
59
|
+
* support mappings for subdirs in autotest
|
60
|
+
|
61
|
+
Wed Jun 25 00:27:08 2008 +0200 jftucker <jftucker@gmail.com>
|
62
|
+
* adding autotest support
|
63
|
+
|
64
|
+
The autotest auto discovery uses bacons test/unit output.
|
65
|
+
It does not currently call specific examples (TODO).
|
66
|
+
It currently attempts to fix the rspec auto discovery by removing it if it
|
67
|
+
finds a .bacon under test/ or spec/. In fact, these are the only conditions
|
68
|
+
under which the bacon autotest will load.
|
69
|
+
|
70
|
+
Thu Mar 13 04:00:42 2008 +0100 Michael Fellinger m.fellinger@gmail.com <chneukirchen@gmail.com>
|
71
|
+
* Show exception instead of missing error if a spec is empty because of it.
|
72
|
+
|
73
|
+
Sun Mar 2 11:52:38 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
74
|
+
* Call after-blocks even if before-blocks or spec raise exceptions
|
75
|
+
|
76
|
+
Based on a patch by Keita Yamaguchi
|
77
|
+
|
78
|
+
Sun Mar 2 11:52:09 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
79
|
+
* Count failed requirements too
|
80
|
+
|
81
|
+
Sun Feb 10 18:45:24 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
82
|
+
* Reformats
|
83
|
+
|
84
|
+
Sun Feb 10 18:42:32 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
85
|
+
* Empty specifications are now erroneous
|
86
|
+
|
87
|
+
Sun Feb 10 14:49:58 2008 +0100 Michael Fellinger <m.fellinger@gmail.com>
|
88
|
+
* Improve require for lib/bacon
|
89
|
+
|
90
|
+
Wed Jan 23 23:59:40 2008 +0100 rff.rff <rff.rff@gmail.com>
|
91
|
+
* allows multiple arguments to #describe to allow specialized behaviours such as
|
92
|
+
|
93
|
+
describe Queue,'empty'
|
94
|
+
describe Queue,'full'
|
95
|
+
|
96
|
+
Some tests for this and manveru's latest patch are included
|
97
|
+
|
98
|
+
Sat Jan 19 23:07:25 2008 +0100 Michael Fellinger <m.fellinger@gmail.com>
|
99
|
+
* #to_s the argument to describe
|
100
|
+
|
101
|
+
Fri Jan 18 15:25:27 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
102
|
+
* Flunk if there are no arguments to #it
|
103
|
+
|
104
|
+
Mon Jan 14 01:34:44 2008 +0100 rff.rff <rff.rff@gmail.com>
|
105
|
+
* add should('foo') shortcut for it('should foo')
|
106
|
+
|
107
|
+
Mon Jan 7 20:24:04 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
108
|
+
* Last minute
|
109
|
+
|
110
|
+
Mon Jan 7 20:21:43 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
111
|
+
* Update copyright
|
112
|
+
|
113
|
+
Mon Jan 7 20:08:40 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
114
|
+
* Tighten code
|
115
|
+
|
116
|
+
Mon Jan 7 19:33:39 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
117
|
+
* Update README
|
118
|
+
|
119
|
+
Mon Jan 7 19:33:25 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
120
|
+
* Add bacon -o FORMAT
|
121
|
+
|
122
|
+
Mon Jan 7 19:33:07 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
123
|
+
* Improve TAP output
|
124
|
+
|
125
|
+
Mon Dec 31 19:01:49 2007 +0100 Michael Fellinger <m.fellinger@gmail.com>
|
126
|
+
* behaves_like should take multiple names
|
127
|
+
|
128
|
+
Sun Dec 30 19:38:18 2007 +0100 Michael Fellinger <m.fellinger@gmail.com>
|
129
|
+
* Adding Proc#change? to check for changes on repeated calling of proc.
|
130
|
+
|
131
|
+
Fri Dec 28 12:42:04 2007 +0100 Michael Fellinger <m.fellinger@gmail.com>
|
132
|
+
* Patching for ruby 1.9.0 and removing useless spaces
|
133
|
+
|
134
|
+
Wed Dec 5 14:56:51 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
135
|
+
* Make code nicer
|
136
|
+
|
137
|
+
Wed Dec 5 14:48:06 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
138
|
+
* Fix Rakefile
|
139
|
+
|
140
|
+
Wed Dec 5 14:46:32 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
141
|
+
* Integrate Rakefile
|
142
|
+
|
143
|
+
Wed Dec 5 14:43:26 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
144
|
+
* Add Rakefile
|
145
|
+
|
146
|
+
Wed Dec 5 14:41:53 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
147
|
+
* Add README
|
148
|
+
|
149
|
+
Wed Dec 5 14:41:26 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
150
|
+
* Add copyright
|
151
|
+
|
152
|
+
Wed Dec 5 14:18:54 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
153
|
+
* Move #close? to Numeric
|
154
|
+
|
155
|
+
Wed Dec 5 14:11:34 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
156
|
+
* Add flunking
|
157
|
+
|
158
|
+
Wed Dec 5 13:42:13 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
159
|
+
* Allow using Object#should outside of contexts providing boolean return
|
160
|
+
|
161
|
+
Wed Dec 5 13:41:00 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
162
|
+
* Move summary outputter to lib/bacon.rb
|
163
|
+
|
164
|
+
Wed Dec 5 13:26:27 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
165
|
+
* Fix output of summary
|
166
|
+
|
167
|
+
Wed Dec 5 13:26:16 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
168
|
+
* Add identical_to/same_as
|
169
|
+
|
170
|
+
Wed Dec 5 02:12:24 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
171
|
+
* Remove debugging statements
|
172
|
+
|
173
|
+
Wed Dec 5 02:00:03 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
174
|
+
* Refactor tests
|
175
|
+
|
176
|
+
Wed Dec 5 01:58:08 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
177
|
+
* Test Context#should.{throw,raise}
|
178
|
+
|
179
|
+
Wed Dec 5 01:56:29 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
180
|
+
* Add should.throw
|
181
|
+
|
182
|
+
Wed Dec 5 01:49:33 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
183
|
+
* Implement -n and -t for filtering on context/specification names
|
184
|
+
|
185
|
+
Wed Dec 5 01:41:56 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
186
|
+
* Add shared contexts
|
187
|
+
|
188
|
+
Wed Dec 5 01:41:39 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
189
|
+
* Make directives belong to Kernel and private
|
190
|
+
|
191
|
+
Wed Dec 5 01:41:17 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
192
|
+
* Clear up error reporting
|
193
|
+
|
194
|
+
Wed Dec 5 01:23:27 2007 +0100 Christian Neukirchen <chneukirchen@gmail.com>
|
195
|
+
* Add TAP generator
|
196
|
+
|
197
|
+
Thu May 31 14:32:48 2007 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
198
|
+
* Set correct $?
|
199
|
+
|
200
|
+
Thu May 31 14:28:35 2007 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
201
|
+
* Add Test::Unit-like output (-q)
|
202
|
+
|
203
|
+
Thu May 31 14:18:00 2007 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
204
|
+
* Add standalone runner, bin/bacon
|
205
|
+
|
206
|
+
Thu May 31 14:17:40 2007 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
207
|
+
* Import test-suite
|
208
|
+
|
209
|
+
Thu May 31 14:17:05 2007 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
210
|
+
* Fix for testsuite
|
211
|
+
|
212
|
+
Thu May 31 14:16:25 2007 +0200 Christian Neukirchen <chneukirchen@gmail.com>
|
213
|
+
* Fix output
|
214
|
+
|
215
|
+
Wed May 30 17:50:23 2007 +0200 Christian Neukirchen <chneukirchen��@gmail.com>
|
216
|
+
* Externalize spec/req handling
|
217
|
+
|
218
|
+
Wed May 30 17:32:15 2007 +0200 Christian Neukirchen <chneukirchen��@gmail.com>
|
219
|
+
* Import Bacon, a small spec framework
|
220
|
+
|
data/RDOX
CHANGED
@@ -25,6 +25,15 @@ Bacon
|
|
25
25
|
|
26
26
|
before/after
|
27
27
|
- should run in the right order
|
28
|
+
when nested
|
29
|
+
- should run from higher level
|
30
|
+
- should run at the nested level
|
31
|
+
- should run in the right order
|
32
|
+
|
33
|
+
- should not run from lower level
|
34
|
+
when nested at a sibling level
|
35
|
+
- should not run from sibling level
|
36
|
+
|
28
37
|
|
29
38
|
shared/behaves_like
|
30
39
|
- gets called where it is included
|
@@ -57,4 +66,4 @@ describe arguments
|
|
57
66
|
- should add new specifications
|
58
67
|
- should have been called
|
59
68
|
|
60
|
-
|
69
|
+
44 specifications (375 requirements), 0 failures, 0 errors
|
data/README
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
Bacon is a small RSpec clone weighing less than 350 LoC but
|
7
7
|
nevertheless providing all essential features.
|
8
8
|
|
9
|
+
|
9
10
|
== Whirl-wind tour
|
10
11
|
|
11
12
|
require 'bacon'
|
@@ -104,6 +105,25 @@ It also supports TAP:
|
|
104
105
|
|
105
106
|
(taptap is available from http://chneukirchen.org/repos/taptap/)
|
106
107
|
|
108
|
+
As of Bacon 1.1, it also supports Knock:
|
109
|
+
|
110
|
+
$ bacon -k whirlwind.rb
|
111
|
+
ok - should be empty
|
112
|
+
ok - should have zero size
|
113
|
+
ok - should raise on trying fetch any index
|
114
|
+
ok - should have an object identity
|
115
|
+
ok - should be a palindrome
|
116
|
+
not ok - should have super powers: FAILED
|
117
|
+
# Bacon::Error: no super powers found
|
118
|
+
# ./whirlwind.rb:39: A new array - should have super powers
|
119
|
+
# ./whirlwind.rb:38
|
120
|
+
# ./whirlwind.rb:3
|
121
|
+
|
122
|
+
$ bacon -k whirlwind.rb | kn-sum
|
123
|
+
6 tests, 1 failed (83.3333% succeeded)
|
124
|
+
|
125
|
+
(knock is available from http://github.com/chneukirchen/knock/)
|
126
|
+
|
107
127
|
|
108
128
|
== Implemented assertions
|
109
129
|
|
@@ -132,6 +152,8 @@ It also supports TAP:
|
|
132
152
|
before and after need to be defined before the first specification in
|
133
153
|
a context and are run before and after each specification.
|
134
154
|
|
155
|
+
As of Bacon 1.1, before and after do nest in nested contexts.
|
156
|
+
|
135
157
|
|
136
158
|
== Shared contexts
|
137
159
|
|
@@ -174,7 +196,9 @@ contexts.
|
|
174
196
|
-s, --specdox do AgileDox-like output (default)
|
175
197
|
-q, --quiet do Test::Unit-like non-verbose output
|
176
198
|
-p, --tap do TAP (Test Anything Protocol) output
|
199
|
+
-k, --knock do Knock output
|
177
200
|
-o, --output FORMAT do FORMAT (SpecDox/TestUnit/Tap) output
|
201
|
+
-Q, --no-backtrace don't print backtraces
|
178
202
|
-a, --automatic gather tests from ./test/, include ./lib/
|
179
203
|
-n, --name NAME runs tests matching regexp NAME
|
180
204
|
-t, --testcase TESTCASE runs tests in TestCases matching regexp TESTCASE
|
@@ -215,7 +239,8 @@ It can be found at http://opensource.thinkrelevance.com/wiki/spec_converter.
|
|
215
239
|
|
216
240
|
* Michael Fellinger, for fixing Bacon for 1.9 and various improvements.
|
217
241
|
* Gabriele Renzi, for implementing Context#should.
|
218
|
-
* James Tucker, for the autotest support
|
242
|
+
* James Tucker, for the autotest support.
|
243
|
+
* Yossef Mendelssohn, for nested contexts.
|
219
244
|
* everyone contributing bug fixes.
|
220
245
|
|
221
246
|
|
@@ -231,14 +256,21 @@ It can be found at http://opensource.thinkrelevance.com/wiki/spec_converter.
|
|
231
256
|
* Autotest support.
|
232
257
|
* Bug fixes.
|
233
258
|
|
259
|
+
* November 30th, 2008: Third public release 1.1.
|
260
|
+
* Nested before/after.
|
261
|
+
* Add -Q/--no-backtraces to not show details about failed specifications.
|
262
|
+
* Add Knock output.
|
263
|
+
* Bug fixes.
|
264
|
+
|
234
265
|
|
235
266
|
== Contact
|
236
267
|
|
237
268
|
Please mail bugs, suggestions and patches to
|
238
269
|
<mailto:chneukirchen@gmail.com>.
|
239
270
|
|
240
|
-
|
241
|
-
http://
|
271
|
+
Git repository (patches rebased on HEAD are most welcome):
|
272
|
+
http://github.com/chneukirchen/bacon
|
273
|
+
git://github.com/chneukirchen/bacon.git
|
242
274
|
|
243
275
|
|
244
276
|
== Copying
|
data/Rakefile
CHANGED
@@ -11,43 +11,35 @@ task :predist => [:chmod, :changelog, :rdoc]
|
|
11
11
|
|
12
12
|
|
13
13
|
desc "Make an archive as .tar.gz"
|
14
|
-
task :dist => :test do
|
15
|
-
sh "
|
16
|
-
|
14
|
+
task :dist => [:test, :predist] do
|
15
|
+
sh "git archive --format=tar --prefix=#{release}/ HEAD^{tree} >#{release}.tar"
|
16
|
+
sh "pax -waf #{release}.tar -s ':^:#{release}/:' RDOX ChangeLog doc"
|
17
|
+
sh "gzip -f -9 #{release}.tar"
|
17
18
|
end
|
18
19
|
|
19
|
-
# Helper to retrieve the "revision number" of the
|
20
|
-
def
|
21
|
-
|
20
|
+
# Helper to retrieve the "revision number" of the git tree.
|
21
|
+
def git_tree_version
|
22
|
+
if File.directory?(".git")
|
23
|
+
@tree_version ||= `git describe`.strip.sub('-', '.')
|
24
|
+
@tree_version << ".0" unless @tree_version.count('.') == 2
|
25
|
+
else
|
22
26
|
$: << "lib"
|
23
27
|
require 'bacon'
|
24
|
-
|
28
|
+
@tree_version = Bacon::VERSION
|
25
29
|
end
|
30
|
+
@tree_version
|
31
|
+
end
|
26
32
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
changes.each("\n\n") { |change|
|
32
|
-
head, title, desc = change.split("\n", 3)
|
33
|
-
|
34
|
-
if title =~ /^ \*/
|
35
|
-
# Normal change.
|
36
|
-
count += 1
|
37
|
-
elsif title =~ /tagged (.*)/
|
38
|
-
# Tag. We look for these.
|
39
|
-
tag = $1
|
40
|
-
break
|
41
|
-
else
|
42
|
-
warn "Unparsable change: #{change}"
|
43
|
-
end
|
44
|
-
}
|
33
|
+
def gem_version
|
34
|
+
git_tree_version.gsub(/-.*/, '')
|
35
|
+
end
|
45
36
|
|
46
|
-
|
37
|
+
def release
|
38
|
+
"bacon-#{git_tree_version}"
|
47
39
|
end
|
48
40
|
|
49
41
|
def manifest
|
50
|
-
`
|
42
|
+
`git ls-files`.split("\n") - [".gitignore"]
|
51
43
|
end
|
52
44
|
|
53
45
|
|
@@ -58,7 +50,20 @@ end
|
|
58
50
|
|
59
51
|
desc "Generate a ChangeLog"
|
60
52
|
task :changelog do
|
61
|
-
|
53
|
+
File.open("ChangeLog", "w") { |out|
|
54
|
+
`git log -z`.split("\0").map { |chunk|
|
55
|
+
author = chunk[/Author: (.*)/, 1].strip
|
56
|
+
date = chunk[/Date: (.*)/, 1].strip
|
57
|
+
desc, detail = $'.strip.split("\n", 2)
|
58
|
+
detail ||= ""
|
59
|
+
detail = detail.gsub(/.*darcs-hash:.*/, '')
|
60
|
+
detail.rstrip!
|
61
|
+
out.puts "#{date} #{author}"
|
62
|
+
out.puts " * #{desc.strip}"
|
63
|
+
out.puts detail unless detail.empty?
|
64
|
+
out.puts
|
65
|
+
}
|
66
|
+
}
|
62
67
|
end
|
63
68
|
|
64
69
|
|
@@ -67,7 +72,7 @@ task "RDOX" do
|
|
67
72
|
sh "bin/bacon -Ilib --automatic --specdox >RDOX"
|
68
73
|
end
|
69
74
|
|
70
|
-
desc "Run all the
|
75
|
+
desc "Run all the tests"
|
71
76
|
task :test do
|
72
77
|
ruby "bin/bacon -Ilib --automatic --quiet"
|
73
78
|
end
|
@@ -87,7 +92,7 @@ rescue LoadError
|
|
87
92
|
else
|
88
93
|
spec = Gem::Specification.new do |s|
|
89
94
|
s.name = "bacon"
|
90
|
-
s.version =
|
95
|
+
s.version = gem_version
|
91
96
|
s.platform = Gem::Platform::RUBY
|
92
97
|
s.summary = "a small RSpec clone"
|
93
98
|
|
@@ -95,10 +100,10 @@ else
|
|
95
100
|
Bacon is a small RSpec clone weighing less than 350 LoC but
|
96
101
|
nevertheless providing all essential features.
|
97
102
|
|
98
|
-
http://
|
103
|
+
http://github.com/chneukirchen/bacon
|
99
104
|
EOF
|
100
105
|
|
101
|
-
s.files = manifest + %w(RDOX)
|
106
|
+
s.files = manifest + %w(RDOX ChangeLog)
|
102
107
|
s.bindir = 'bin'
|
103
108
|
s.executables << 'bacon'
|
104
109
|
s.require_path = 'lib'
|
data/bin/bacon
CHANGED
@@ -49,11 +49,17 @@ opts = OptionParser.new("", 24, ' ') { |opts|
|
|
49
49
|
opts.on("-p", "--tap", "do TAP (Test Anything Protocol) output") {
|
50
50
|
output = 'TapOutput'
|
51
51
|
}
|
52
|
+
opts.on("-k", "--knock", "do Knock output") {
|
53
|
+
output = 'KnockOutput'
|
54
|
+
}
|
52
55
|
|
53
56
|
opts.on("-o", "--output FORMAT",
|
54
57
|
"do FORMAT (SpecDox/TestUnit/Tap) output") { |format|
|
55
58
|
output = format + "Output"
|
56
59
|
}
|
60
|
+
opts.on("-Q", "--no-backtrace", "don't print backtraces") {
|
61
|
+
Bacon.const_set :Backtraces, false
|
62
|
+
}
|
57
63
|
|
58
64
|
opts.on("-a", "--automatic", "gather tests from ./test/, include ./lib/") {
|
59
65
|
$LOAD_PATH.unshift "lib" if File.directory? "lib"
|
data/lib/bacon.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
# See COPYING or http://www.opensource.org/licenses/mit-license.php.
|
9
9
|
|
10
10
|
module Bacon
|
11
|
-
VERSION = "1.
|
11
|
+
VERSION = "1.1"
|
12
12
|
|
13
13
|
Counter = Hash.new(0)
|
14
14
|
ErrorLog = ""
|
@@ -19,6 +19,8 @@ module Bacon
|
|
19
19
|
RestrictName = // unless defined? RestrictName
|
20
20
|
RestrictContext = // unless defined? RestrictContext
|
21
21
|
|
22
|
+
Backtraces = true unless defined? Backtraces
|
23
|
+
|
22
24
|
def self.summary_on_exit
|
23
25
|
return if Counter[:installed_summary] > 0
|
24
26
|
at_exit {
|
@@ -31,6 +33,7 @@ module Bacon
|
|
31
33
|
}
|
32
34
|
Counter[:installed_summary] += 1
|
33
35
|
end
|
36
|
+
class <<self; alias summary_at_exit summary_on_exit; end
|
34
37
|
|
35
38
|
module SpecDoxOutput
|
36
39
|
def handle_specification(name)
|
@@ -46,7 +49,7 @@ module Bacon
|
|
46
49
|
end
|
47
50
|
|
48
51
|
def handle_summary
|
49
|
-
print ErrorLog
|
52
|
+
print ErrorLog if Backtraces
|
50
53
|
puts "%d specifications (%d requirements), %d failures, %d errors" %
|
51
54
|
Counter.values_at(:specifications, :requirements, :failed, :errors)
|
52
55
|
end
|
@@ -65,7 +68,8 @@ module Bacon
|
|
65
68
|
end
|
66
69
|
|
67
70
|
def handle_summary
|
68
|
-
puts
|
71
|
+
puts
|
72
|
+
puts ErrorLog if Backtraces
|
69
73
|
puts "%d tests, %d assertions, %d failures, %d errors" %
|
70
74
|
Counter.values_at(:specifications, :requirements, :failed, :errors)
|
71
75
|
end
|
@@ -78,11 +82,11 @@ module Bacon
|
|
78
82
|
ErrorLog.replace ""
|
79
83
|
error = yield
|
80
84
|
if error.empty?
|
81
|
-
|
85
|
+
puts "ok %-3d - %s" % [Counter[:specifications], description]
|
82
86
|
else
|
83
|
-
|
87
|
+
puts "not ok %d - %s: %s" %
|
84
88
|
[Counter[:specifications], description, error]
|
85
|
-
puts ErrorLog.strip.gsub(/^/, '# ')
|
89
|
+
puts ErrorLog.strip.gsub(/^/, '# ') if Backtraces
|
86
90
|
end
|
87
91
|
end
|
88
92
|
|
@@ -93,6 +97,23 @@ module Bacon
|
|
93
97
|
end
|
94
98
|
end
|
95
99
|
|
100
|
+
module KnockOutput
|
101
|
+
def handle_specification(name) yield end
|
102
|
+
|
103
|
+
def handle_requirement(description)
|
104
|
+
ErrorLog.replace ""
|
105
|
+
error = yield
|
106
|
+
if error.empty?
|
107
|
+
puts "ok - %s" % [description]
|
108
|
+
else
|
109
|
+
puts "not ok - %s: %s" % [description, error]
|
110
|
+
puts ErrorLog.strip.gsub(/^/, '# ') if Backtraces
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def handle_summary; end
|
115
|
+
end
|
116
|
+
|
96
117
|
extend SpecDoxOutput # default
|
97
118
|
|
98
119
|
class Error < RuntimeError
|
@@ -105,12 +126,18 @@ module Bacon
|
|
105
126
|
end
|
106
127
|
|
107
128
|
class Context
|
129
|
+
attr_reader :name, :block
|
130
|
+
|
108
131
|
def initialize(name, &block)
|
109
132
|
@name = name
|
110
133
|
@before, @after = [], []
|
111
|
-
|
134
|
+
@block = block
|
135
|
+
end
|
136
|
+
|
137
|
+
def run
|
112
138
|
return unless name =~ RestrictContext
|
113
139
|
Bacon.handle_specification(name) { instance_eval(&block) }
|
140
|
+
self
|
114
141
|
end
|
115
142
|
|
116
143
|
def before(&block); @before << block; end
|
@@ -181,6 +208,13 @@ module Bacon
|
|
181
208
|
end
|
182
209
|
end
|
183
210
|
|
211
|
+
def describe(*args, &block)
|
212
|
+
context = Bacon::Context.new(args.join(' '), &block)
|
213
|
+
@before.each { |b| context.before(&b) }
|
214
|
+
@after.each { |b| context.after(&b) }
|
215
|
+
context.run
|
216
|
+
end
|
217
|
+
|
184
218
|
def raise?(*args, &block); block.raise?(*args); end
|
185
219
|
def throw?(*args, &block); block.throw?(*args); end
|
186
220
|
def change?(*args, &block); block.change?(*args); end
|
@@ -242,13 +276,13 @@ end
|
|
242
276
|
|
243
277
|
|
244
278
|
class Object
|
245
|
-
def should(*args, &block) Should.new(self).be(*args, &block)
|
279
|
+
def should(*args, &block) Should.new(self).be(*args, &block) end
|
246
280
|
end
|
247
281
|
|
248
282
|
module Kernel
|
249
283
|
private
|
250
|
-
def describe(*args, &block)
|
251
|
-
def shared(name, &block)
|
284
|
+
def describe(*args, &block) Bacon::Context.new(args.join(' '), &block).run end
|
285
|
+
def shared(name, &block) Bacon::Shared[name] = block end
|
252
286
|
end
|
253
287
|
|
254
288
|
|
data/test/spec_bacon.rb
CHANGED
@@ -32,7 +32,7 @@ describe "Bacon" do
|
|
32
32
|
lambda { should.satisfy { 1 == 1 } }.should succeed
|
33
33
|
lambda { should.satisfy { 1 } }.should succeed
|
34
34
|
|
35
|
-
lambda { should.satisfy { 1
|
35
|
+
lambda { should.satisfy { 1 != 1 } }.should fail
|
36
36
|
lambda { should.satisfy { false } }.should fail
|
37
37
|
lambda { should.satisfy { false } }.should fail
|
38
38
|
|
@@ -278,6 +278,40 @@ describe "before/after" do
|
|
278
278
|
@a.should.equal 2
|
279
279
|
@b.should.equal 2
|
280
280
|
end
|
281
|
+
|
282
|
+
describe "when nested" do
|
283
|
+
before do
|
284
|
+
@c = 5
|
285
|
+
end
|
286
|
+
|
287
|
+
it "should run from higher level" do
|
288
|
+
@a.should.equal 2
|
289
|
+
@b.should.equal 2
|
290
|
+
end
|
291
|
+
|
292
|
+
it "should run at the nested level" do
|
293
|
+
@c.should.equal 5
|
294
|
+
end
|
295
|
+
|
296
|
+
before do
|
297
|
+
@a = 5
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should run in the right order" do
|
301
|
+
@a.should.equal 5
|
302
|
+
@a = 2
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
it "should not run from lower level" do
|
307
|
+
@c.should.be.nil
|
308
|
+
end
|
309
|
+
|
310
|
+
describe "when nested at a sibling level" do
|
311
|
+
it "should not run from sibling level" do
|
312
|
+
@c.should.be.nil
|
313
|
+
end
|
314
|
+
end
|
281
315
|
end
|
282
316
|
|
283
317
|
shared "a shared context" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bacon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Neukirchen
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-30 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description: Bacon is a small RSpec clone weighing less than 350 LoC but nevertheless providing all essential features. http://
|
16
|
+
description: Bacon is a small RSpec clone weighing less than 350 LoC but nevertheless providing all essential features. http://github.com/chneukirchen/bacon
|
17
17
|
email: chneukirchen@gmail.com
|
18
18
|
executables:
|
19
19
|
- bacon
|
@@ -23,16 +23,18 @@ extra_rdoc_files:
|
|
23
23
|
- README
|
24
24
|
- RDOX
|
25
25
|
files:
|
26
|
-
- bin/bacon
|
27
26
|
- COPYING
|
27
|
+
- README
|
28
|
+
- Rakefile
|
29
|
+
- bin/bacon
|
28
30
|
- lib/autotest/bacon.rb
|
31
|
+
- lib/autotest/bacon_rspec.rb
|
29
32
|
- lib/autotest/discover.rb
|
30
33
|
- lib/bacon.rb
|
31
|
-
- Rakefile
|
32
|
-
- README
|
33
34
|
- test/spec_bacon.rb
|
34
35
|
- test/spec_should.rb
|
35
36
|
- RDOX
|
37
|
+
- ChangeLog
|
36
38
|
has_rdoc: true
|
37
39
|
homepage: http://chneukirchen.org/repos/bacon
|
38
40
|
post_install_message:
|
@@ -55,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
57
|
requirements: []
|
56
58
|
|
57
59
|
rubyforge_project:
|
58
|
-
rubygems_version: 1.
|
60
|
+
rubygems_version: 1.3.1
|
59
61
|
signing_key:
|
60
62
|
specification_version: 2
|
61
63
|
summary: a small RSpec clone
|