bacon 1.1.0 → 1.2.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.
@@ -0,0 +1,12 @@
1
+ script: bin/bacon -Ilib --automatic --quiet
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - rbx-18mode
7
+ - rbx-19mode
8
+ - jruby-18mode
9
+ - jruby-19mode
10
+ notifications:
11
+ recipients:
12
+ - gabriel.horner@gmail.com
data/COPYING CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2007, 2008 Christian Neukirchen <purl.org/net/chneukirchen>
1
+ Copyright (c) 2007, 2008, 2012 Christian Neukirchen <purl.org/net/chneukirchen>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to
data/ChangeLog CHANGED
@@ -1,3 +1,131 @@
1
+ Fri Dec 21 11:49:56 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
2
+ * Update README
3
+
4
+ Fri Dec 21 11:45:44 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
5
+ * Replace ChangeLog generator
6
+
7
+ Fri Dec 21 11:45:31 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
8
+ * Update copyright years
9
+
10
+ Fri Dec 21 11:42:19 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
11
+ * Rename README README.rdoc
12
+
13
+ Wed Mar 21 04:27:31 2012 -0700 Christian Neukirchen <chneukirchen@gmail.com>
14
+ * Merge pull request #11 from cldwalker/fix_change_tests
15
+
16
+ Fix change tests for jruby and sometimes 1.8.7
17
+ Tue Mar 20 18:19:29 2012 -0400 Gabriel Horner <gabriel.horner@gmail.com>
18
+ * all tests green - remove allowed_failures for travis
19
+
20
+ Tue Mar 20 18:02:51 2012 -0400 Gabriel Horner <gabriel.horner@gmail.com>
21
+ * fix should.change tests failing intermittently on jruby + 1.8.7
22
+
23
+ see http://travis-ci.org/#!/cldwalker/bacon/builds/910141 tests were
24
+ running so fast that Time.now remains the same
25
+
26
+ Fri Mar 16 19:30:08 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
27
+ * Update README
28
+
29
+ Fri Mar 16 11:42:46 2012 -0400 Gabriel Horner <gabriel.horner@gmail.com>
30
+ * Add travis to see tests pass on supported rubies
31
+
32
+ Fri Mar 16 19:14:14 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
33
+ * Push version to 1.2
34
+
35
+ Fri Mar 16 19:11:20 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
36
+ * Add tests for should.==
37
+
38
+ Proposed by Gabriel Horner <gabriel.horner@gmail.com>.
39
+
40
+ Fri Mar 16 19:05:34 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
41
+ * Remove passing arguments in #satisfy, simplify argument parsing
42
+
43
+ This feature was never used and triggers a JRuby bug:
44
+ http://jira.codehaus.org/browse/JRUBY-6550
45
+
46
+ Proposed by Gabriel Horner <gabriel.horner@gmail.com>.
47
+
48
+ Fri Mar 16 19:03:58 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
49
+ * Whitespace cleanup
50
+
51
+ Sun Feb 26 17:50:46 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
52
+ * Add specs for change?
53
+
54
+ Sun Feb 26 17:48:57 2012 +0100 Christian Neukirchen <chneukirchen@gmail.com>
55
+ * Fix Context#change?
56
+
57
+ Wed Dec 28 12:23:29 2011 +0100 Christian Neukirchen <chneukirchen@gmail.com>
58
+ * Merge remote-tracking branch 'jeffkreeftmeijer/master'
59
+
60
+ Wed Dec 28 03:17:12 2011 -0800 Christian Neukirchen <chneukirchen@gmail.com>
61
+ * Merge pull request #6 from manveru/master
62
+
63
+ Two minor fixes
64
+ Wed Dec 28 03:54:58 2011 +0100 Michael Fellinger <m.fellinger@gmail.com>
65
+ * Avoid warning about unused variable
66
+
67
+ Wed Dec 28 03:54:19 2011 +0100 Michael Fellinger <m.fellinger@gmail.com>
68
+ * Update deprecated calls in rakefile
69
+
70
+ Sun Jan 16 14:38:05 2011 +0100 Jeff Kreeftmeijer <jeff@kreeftmeijer.nl>
71
+ * Move the Gem::Specification to bacon.gemspec
72
+
73
+ So the gem can be built and released using gem build and gem push and to
74
+ allow tools like Bundler to install Bacon from git or from the local
75
+ filesystem.
76
+
77
+ Wed Apr 14 05:40:31 2010 -0400 Gabriel Horner <gabriel.horner@gmail.com>
78
+ * Indent nested contexts for SpecDoxOutput Based on similar patch from
79
+ http://github.com/wvl/bacon/commit/af940dbeb789f5eef2d998e227e5425d
80
+
81
+ Mon Mar 29 14:06:47 2010 +0200 Christian Neukirchen <chneukirchen@gmail.com>
82
+ * Merge remote branch 'cldwalker/timer'
83
+
84
+ Sun Mar 28 23:16:49 2010 -0400 Gabriel Horner <gabriel.horner@gmail.com>
85
+ * give TestUnitOutput the same timer that Test::Unit has
86
+
87
+ Sat Mar 20 04:19:18 2010 -0400 Gabriel Horner <gabriel.horner@gmail.com>
88
+ * methods in a context should serve as behavior that is inherited by sibling
89
+ contexts
90
+
91
+ Sun Jan 17 12:17:42 2010 -0800 Eoin Hennessy <eoin@randomrules.org>
92
+ * Add support for finding specs with RSpec style naming.
93
+
94
+ Tue Sep 22 21:17:55 2009 +0200 Christian Neukirchen <chneukirchen@gmail.com>
95
+ * Add ChangeLog as gem dependency reported by lian
96
+
97
+ Mon Aug 31 23:36:56 2009 +0200 Eloy Duran <eloy.de.enige@gmail.com>
98
+ * Revert old change that was made because 1.9.0 couldn't rescue a splatted
99
+ array of Exception classes. MacRuby currently can't use when with the same
100
+ array and 1.9.2dev does.
101
+
102
+ Also some other minor changes which didn't work currently on 1.9.2dev,
103
+ but are nicer anyway imo.
104
+
105
+ Thu Jan 22 06:07:53 2009 +0000 Anna Gabutero <amdg@lavabit.com>
106
+ * Add libs to include path when invoking Test::Unit
107
+
108
+ Sun Jan 11 14:41:01 2009 +0100 Christian Neukirchen <chneukirchen@gmail.com>
109
+ * Update homepage
110
+
111
+ Sat Jan 10 14:01:30 2009 -0800 Christian Neukirchen <chneukirchen@gmail.com>
112
+ * Allow negated nontrue values outside specs
113
+
114
+ Sat Jan 10 13:44:14 2009 -0800 Ian Dees <undees@gmail.com>
115
+ * Added test for nontrue values outside specs
116
+
117
+ Sun Nov 30 11:14:31 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
118
+ * Push VERSION to 1.1
119
+
120
+ Sun Nov 30 11:13:33 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
121
+ * Last fixes
122
+
123
+ Sun Nov 30 11:06:09 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
124
+ * Update README
125
+
126
+ Sun Nov 30 11:00:28 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
127
+ * Add Knock output
128
+
1
129
  Sat Oct 25 12:30:00 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
2
130
  * De-metaprogram and document nested before/after
3
131
 
@@ -15,10 +143,10 @@ Fri Oct 24 17:06:18 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
15
143
 
16
144
  Fri Oct 24 17:01:51 2008 -0500 Yossef Mendelssohn <ymendel@pobox.com>
17
145
  * 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.
146
+
147
+ Split up Context#initialize to let running be a separate step. Added
148
+ attr_reader for Context name and block to let the running step have
149
+ access to them without resorting to instance variables.
22
150
 
23
151
  Sat Oct 4 13:38:23 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
24
152
  * Move to git
@@ -31,8 +159,9 @@ Sun Aug 17 12:48:29 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
31
159
 
32
160
  Fri Aug 1 12:01:28 2008 +0200 jftucker <jftucker@gmail.com>
33
161
  * 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!).
162
+
163
+ Added an alias for summary_on_exit to summary_at_exit to save on POLS
164
+ for some people (me!).
36
165
 
37
166
  Sun Jul 6 18:47:42 2008 +0200 Christian Neukirchen <chneukirchen@gmail.com>
38
167
  * Add bacon_rspec.rb to avoid errors when .bacon doesn't exist
@@ -60,19 +189,19 @@ Wed Jun 25 13:20:29 2008 +0200 jftucker <jftucker@gmail.com>
60
189
 
61
190
  Wed Jun 25 00:27:08 2008 +0200 jftucker <jftucker@gmail.com>
62
191
  * 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.
192
+
193
+ The autotest auto discovery uses bacons test/unit output. It does not
194
+ currently call specific examples (TODO). It currently attempts to fix
195
+ the rspec auto discovery by removing it if it finds a .bacon under test/
196
+ or spec/. In fact, these are the only conditions under which the bacon
197
+ autotest will load.
69
198
 
70
199
  Thu Mar 13 04:00:42 2008 +0100 Michael Fellinger m.fellinger@gmail.com <chneukirchen@gmail.com>
71
200
  * Show exception instead of missing error if a spec is empty because of it.
72
201
 
73
202
  Sun Mar 2 11:52:38 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
74
203
  * Call after-blocks even if before-blocks or spec raise exceptions
75
-
204
+
76
205
  Based on a patch by Keita Yamaguchi
77
206
 
78
207
  Sun Mar 2 11:52:09 2008 +0100 Christian Neukirchen <chneukirchen@gmail.com>
@@ -88,11 +217,12 @@ Sun Feb 10 14:49:58 2008 +0100 Michael Fellinger <m.fellinger@gmail.com>
88
217
  * Improve require for lib/bacon
89
218
 
90
219
  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
-
220
+ * allows multiple arguments to #describe to allow specialized behaviours such
221
+ as
222
+
93
223
  describe Queue,'empty'
94
- describe Queue,'full'
95
-
224
+ describe Queue,'full'
225
+
96
226
  Some tests for this and manveru's latest patch are included
97
227
 
98
228
  Sat Jan 19 23:07:25 2008 +0100 Michael Fellinger <m.fellinger@gmail.com>
data/RDOX CHANGED
@@ -1,69 +1,73 @@
1
- Bacon
2
- - should have should.satisfy
3
- - should have should.equal
4
- - should have should.raise
5
- - should have should.raise with a block
6
- - should have a should.raise should return the exception
7
- - should have should.be.an.instance_of
8
- - should have should.be.nil
9
- - should have should.include
10
- - should have should.be.a.kind_of
11
- - should have should.match
12
- - should have should.not.raise
13
- - should have should.throw
14
- - should have should.not.satisfy
15
- - should have should.not.equal
16
- - should have should.not.match
17
- - should have should.be.identical_to/same_as
18
- - should have should.respond_to
19
- - should have should.be.close
20
- - should support multiple negation
21
- - should have should.<predicate>
22
- - should have should <operator> (>, >=, <, <=, ===)
23
- - should allow for custom shoulds
24
- - should have should.flunk
1
+ #should shortcut for #it('should')
2
+ - should be called
3
+ - should save some characters by typing should
4
+ - should save characters even on failure
5
+ - should work nested
6
+ - should add new specifications
7
+ - should have been called
25
8
 
26
- before/after
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
9
+ A non-true value
10
+ - should pass negated tests inside specs
11
+ - should pass negated tests outside specs
32
12
 
33
- - should not run from lower level
34
- when nested at a sibling level
35
- - should not run from sibling level
13
+ Bacon
14
+ - should have should.satisfy
15
+ - should have should.==
16
+ - should have should.equal
17
+ - should have should.raise
18
+ - should have should.change
19
+ - should have should.raise with a block
20
+ - should have a should.raise should return the exception
21
+ - should have should.be.an.instance_of
22
+ - should have should.be.nil
23
+ - should have should.include
24
+ - should have should.be.a.kind_of
25
+ - should have should.match
26
+ - should have should.not.raise
27
+ - should have should.throw
28
+ - should have should.not.satisfy
29
+ - should have should.not.equal
30
+ - should have should.not.match
31
+ - should have should.be.identical_to/same_as
32
+ - should have should.respond_to
33
+ - should have should.be.close
34
+ - should support multiple negation
35
+ - should have should.<predicate>
36
+ - should have should <operator> (>, >=, <, <=, ===)
37
+ - should allow for custom shoulds
38
+ - should have should.flunk
36
39
 
40
+ before/after
41
+ - should run in the right order
42
+ when nested
43
+ - should run from higher level
44
+ - should run at the nested level
45
+ - should run in the right order
46
+ - should not run from lower level
47
+ when nested at a sibling level
48
+ - should not run from sibling level
37
49
 
38
50
  shared/behaves_like
39
- - gets called where it is included
40
- - raises NameError when the context is not found
41
- - gets called where it is included
42
- - can access data
43
-
44
- describe arguments
45
- - should work with stringstring
51
+ - gets called where it is included
52
+ - raises NameError when the context is not found
53
+ - gets called where it is included
54
+ - can access data
46
55
 
56
+ Methods
57
+ - should be accessible in a test
58
+ when in a sibling context
59
+ - should be accessible in a test
47
60
 
48
- - should work with symbolsbehaviour
49
-
50
-
51
- - should work with modulesBacon
52
-
53
-
54
- - should work with namespaced modulesBacon::Context
61
+ describe arguments
62
+ - should work with string string
55
63
 
64
+ - should work with symbols behaviour
56
65
 
57
- - should work with multiple argumentsBacon::Context empty
66
+ - should work with modules Bacon
58
67
 
68
+ - should work with namespaced modules Bacon::Context
59
69
 
70
+ - should work with multiple arguments Bacon::Context empty
60
71
 
61
- #should shortcut for #it('should')
62
- - should be called
63
- - should save some characters by typing should
64
- - should save characters even on failure
65
- - should work nested
66
- - should add new specifications
67
- - should have been called
68
72
 
69
- 44 specifications (375 requirements), 0 failures, 0 errors
73
+ 50 specifications (408 requirements), 0 failures, 0 errors
@@ -262,6 +262,15 @@ It can be found at http://opensource.thinkrelevance.com/wiki/spec_converter.
262
262
  * Add Knock output.
263
263
  * Bug fixes.
264
264
 
265
+ * December 21th, 2012: Fourth public release 1.2.0.
266
+ * #satisfy will not pass arguments anymore to the block, use lexical scope.
267
+ * Fixed Context#change?.
268
+ * Add support for finding specs named like spec/**/*_spec.rb.
269
+ * Contexts nest properly.
270
+ * Timer in TestUnitOutput.
271
+ * Nested output for SpecDoxOutput.
272
+ * Small cleanups and more tests.
273
+
265
274
 
266
275
  == Contact
267
276
 
@@ -275,7 +284,7 @@ git://github.com/chneukirchen/bacon.git
275
284
 
276
285
  == Copying
277
286
 
278
- Copyright (C) 2007, 2008 Christian Neukirchen <purl.org/net/chneukirchen>
287
+ Copyright (C) 2007, 2008, 2012 Christian Neukirchen <purl.org/net/chneukirchen>
279
288
 
280
289
  Bacon is freely distributable under the terms of an MIT-style license.
281
290
  See COPYING or http://www.opensource.org/licenses/mit-license.php.
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  # Rakefile for Bacon. -*-ruby-*-
2
- require 'rake/rdoctask'
2
+ require 'rdoc/task'
3
3
  require 'rake/testtask'
4
4
 
5
5
 
@@ -50,20 +50,7 @@ end
50
50
 
51
51
  desc "Generate a ChangeLog"
52
52
  task :changelog do
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
- }
53
+ sh "git log --format='%ad %an <%ae>%n%w(79,2,4)* %s%n%n%w(76,4,4)%b' |grep -v darcs-hash: |cat -s >ChangeLog"
67
54
  end
68
55
 
69
56
 
@@ -78,59 +65,14 @@ task :test do
78
65
  end
79
66
 
80
67
 
81
- begin
82
- $" << "sources" if defined? FromSrc
83
- require 'rubygems'
84
-
85
- require 'rake'
86
- require 'rake/clean'
87
- require 'rake/packagetask'
88
- require 'rake/gempackagetask'
89
- require 'fileutils'
90
- rescue LoadError
91
- # Too bad.
92
- else
93
- spec = Gem::Specification.new do |s|
94
- s.name = "bacon"
95
- s.version = gem_version
96
- s.platform = Gem::Platform::RUBY
97
- s.summary = "a small RSpec clone"
98
-
99
- s.description = <<-EOF
100
- Bacon is a small RSpec clone weighing less than 350 LoC but
101
- nevertheless providing all essential features.
102
-
103
- http://github.com/chneukirchen/bacon
104
- EOF
105
-
106
- s.files = manifest + %w(RDOX ChangeLog)
107
- s.bindir = 'bin'
108
- s.executables << 'bacon'
109
- s.require_path = 'lib'
110
- s.has_rdoc = true
111
- s.extra_rdoc_files = ['README', 'RDOX']
112
- s.test_files = []
113
-
114
- s.author = 'Christian Neukirchen'
115
- s.email = 'chneukirchen@gmail.com'
116
- s.homepage = 'http://chneukirchen.org/repos/bacon'
117
- end
118
-
119
- Rake::GemPackageTask.new(spec) do |p|
120
- p.gem_spec = spec
121
- p.need_tar = false
122
- p.need_zip = false
123
- end
124
- end
125
-
126
68
  desc "Generate RDoc documentation"
127
69
  Rake::RDocTask.new(:rdoc) do |rdoc|
128
70
  rdoc.options << '--line-numbers' << '--inline-source' <<
129
- '--main' << 'README' <<
71
+ '--main' << 'README.rdoc' <<
130
72
  '--title' << 'Bacon Documentation' <<
131
73
  '--charset' << 'utf-8'
132
74
  rdoc.rdoc_dir = "doc"
133
- rdoc.rdoc_files.include 'README'
75
+ rdoc.rdoc_files.include 'README.rdoc'
134
76
  rdoc.rdoc_files.include 'COPYING'
135
77
  rdoc.rdoc_files.include 'RDOX'
136
78
  rdoc.rdoc_files.include('lib/bacon.rb')
@@ -0,0 +1,25 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "bacon"
3
+ s.version = '1.2.0'
4
+ s.platform = Gem::Platform::RUBY
5
+ s.summary = "a small RSpec clone"
6
+
7
+ s.description = <<-EOF
8
+ Bacon is a small RSpec clone weighing less than 350 LoC but
9
+ nevertheless providing all essential features.
10
+
11
+ http://github.com/chneukirchen/bacon
12
+ EOF
13
+
14
+ s.files = `git ls-files`.split("\n") - [".gitignore"] + %w(RDOX ChangeLog)
15
+ s.bindir = 'bin'
16
+ s.executables << 'bacon'
17
+ s.require_path = 'lib'
18
+ s.has_rdoc = true
19
+ s.extra_rdoc_files = ['README.rdoc', 'RDOX']
20
+ s.test_files = []
21
+
22
+ s.author = 'Christian Neukirchen'
23
+ s.email = 'chneukirchen@gmail.com'
24
+ s.homepage = 'http://github.com/chneukirchen/bacon'
25
+ end
data/bin/bacon CHANGED
@@ -99,6 +99,7 @@ if automatic
99
99
  files.concat Dir["test/**/test_*.rb"]
100
100
  files.concat Dir["test/**/spec_*.rb"]
101
101
  files.concat Dir["spec/**/spec_*.rb"]
102
+ files.concat Dir["spec/**/*_spec.rb"]
102
103
  end
103
104
 
104
105
  if files.empty?
@@ -31,6 +31,6 @@ class Autotest::Bacon < Autotest
31
31
  args = files_to_test.keys.flatten.join(' ')
32
32
  args = '-a' if args.empty?
33
33
  # TODO : make regex to pass to -n using values
34
- "#{ruby} -S bacon -o TestUnit #{args}"
34
+ "#{ruby} -S bacon -I#{libs} -o TestUnit #{args}"
35
35
  end
36
- end
36
+ end
@@ -2,13 +2,13 @@
2
2
  #
3
3
  # "Truth will sooner come out from error than from confusion." ---Francis Bacon
4
4
 
5
- # Copyright (C) 2007, 2008 Christian Neukirchen <purl.org/net/chneukirchen>
5
+ # Copyright (C) 2007, 2008, 2012 Christian Neukirchen <purl.org/net/chneukirchen>
6
6
  #
7
7
  # Bacon is freely distributable under the terms of an MIT-style license.
8
8
  # See COPYING or http://www.opensource.org/licenses/mit-license.php.
9
9
 
10
10
  module Bacon
11
- VERSION = "1.1"
11
+ VERSION = "1.2"
12
12
 
13
13
  Counter = Hash.new(0)
14
14
  ErrorLog = ""
@@ -23,6 +23,7 @@ module Bacon
23
23
 
24
24
  def self.summary_on_exit
25
25
  return if Counter[:installed_summary] > 0
26
+ @timer = Time.now
26
27
  at_exit {
27
28
  handle_summary
28
29
  if $!
@@ -37,13 +38,13 @@ module Bacon
37
38
 
38
39
  module SpecDoxOutput
39
40
  def handle_specification(name)
40
- puts name
41
+ puts spaces + name
41
42
  yield
42
- puts
43
+ puts if Counter[:context_depth] == 1
43
44
  end
44
45
 
45
46
  def handle_requirement(description)
46
- print "- #{description}"
47
+ print "#{spaces} - #{description}"
47
48
  error = yield
48
49
  puts error.empty? ? "" : " [#{error}]"
49
50
  end
@@ -53,6 +54,10 @@ module Bacon
53
54
  puts "%d specifications (%d requirements), %d failures, %d errors" %
54
55
  Counter.values_at(:specifications, :requirements, :failed, :errors)
55
56
  end
57
+
58
+ def spaces
59
+ " " * (Counter[:context_depth] - 1)
60
+ end
56
61
  end
57
62
 
58
63
  module TestUnitOutput
@@ -68,7 +73,7 @@ module Bacon
68
73
  end
69
74
 
70
75
  def handle_summary
71
- puts
76
+ puts "", "Finished in #{Time.now - @timer} seconds."
72
77
  puts ErrorLog if Backtraces
73
78
  puts "%d tests, %d assertions, %d failures, %d errors" %
74
79
  Counter.values_at(:specifications, :requirements, :failed, :errors)
@@ -127,16 +132,18 @@ module Bacon
127
132
 
128
133
  class Context
129
134
  attr_reader :name, :block
130
-
135
+
131
136
  def initialize(name, &block)
132
137
  @name = name
133
138
  @before, @after = [], []
134
139
  @block = block
135
140
  end
136
-
141
+
137
142
  def run
138
143
  return unless name =~ RestrictContext
144
+ Counter[:context_depth] += 1
139
145
  Bacon.handle_specification(name) { instance_eval(&block) }
146
+ Counter[:context_depth] -= 1
140
147
  self
141
148
  end
142
149
 
@@ -153,7 +160,7 @@ module Bacon
153
160
  Counter[:specifications] += 1
154
161
  run_requirement description, block
155
162
  end
156
-
163
+
157
164
  def should(*args, &block)
158
165
  if Counter[:depth]==0
159
166
  it('should '+args.first,&block)
@@ -210,6 +217,9 @@ module Bacon
210
217
 
211
218
  def describe(*args, &block)
212
219
  context = Bacon::Context.new(args.join(' '), &block)
220
+ (parent_context = self).methods(false).each {|e|
221
+ class<<context; self end.send(:define_method, e) {|*args| parent_context.send(e, *args)}
222
+ }
213
223
  @before.each { |b| context.before(&b) }
214
224
  @after.each { |b| context.after(&b) }
215
225
  context.run
@@ -217,7 +227,7 @@ module Bacon
217
227
 
218
228
  def raise?(*args, &block); block.raise?(*args); end
219
229
  def throw?(*args, &block); block.throw?(*args); end
220
- def change?(*args, &block); block.change?(*args); end
230
+ def change?(&block); lambda{}.change?(&block); end
221
231
  end
222
232
  end
223
233
 
@@ -237,17 +247,9 @@ end
237
247
 
238
248
  class Proc
239
249
  def raise?(*exceptions)
240
- exceptions = [RuntimeError] if exceptions.empty?
241
250
  call
242
-
243
- # Only to work in 1.9.0, rescue with splat doesn't work there right now
244
- rescue Object => e
245
- case e
246
- when *exceptions
247
- e
248
- else
249
- raise e
250
- end
251
+ rescue *(exceptions.empty? ? RuntimeError : exceptions) => e
252
+ e
251
253
  else
252
254
  false
253
255
  end
@@ -262,7 +264,7 @@ class Proc
262
264
 
263
265
  def change?
264
266
  pre_result = yield
265
- called = call
267
+ call
266
268
  post_result = yield
267
269
  pre_result != post_result
268
270
  end
@@ -285,7 +287,6 @@ module Kernel
285
287
  def shared(name, &block) Bacon::Shared[name] = block end
286
288
  end
287
289
 
288
-
289
290
  class Should
290
291
  # Kills ==, ===, =~, eql?, equal?, frozen?, instance_of?, is_a?,
291
292
  # kind_of?, nil?, respond_to?, tainted?
@@ -318,19 +319,15 @@ class Should
318
319
  alias a be
319
320
  alias an be
320
321
 
321
- def satisfy(*args, &block)
322
- if args.size == 1 && String === args.first
323
- description = args.shift
324
- else
325
- description = ""
326
- end
327
-
328
- r = yield(@object, *args)
322
+ def satisfy(description="", &block)
323
+ r = yield(@object)
329
324
  if Bacon::Counter[:depth] > 0
330
325
  Bacon::Counter[:requirements] += 1
331
326
  raise Bacon::Error.new(:failed, description) unless @negated ^ r
327
+ r
328
+ else
329
+ @negated ? !r : !!r
332
330
  end
333
- @negated ^ r ? r : false
334
331
  end
335
332
 
336
333
  def method_missing(name, *args, &block)
@@ -1,5 +1,5 @@
1
1
  $-w,w = nil, $-w
2
- require File.join(File.dirname(__FILE__), '../lib/bacon')
2
+ require File.expand_path('../../lib/bacon', __FILE__)
3
3
  $-w = w
4
4
 
5
5
  # Hooray for meta-testing.
@@ -27,7 +27,7 @@ end
27
27
 
28
28
  describe "Bacon" do
29
29
  extend MetaTests
30
-
30
+
31
31
  it "should have should.satisfy" do
32
32
  lambda { should.satisfy { 1 == 1 } }.should succeed
33
33
  lambda { should.satisfy { 1 } }.should succeed
@@ -40,6 +40,14 @@ describe "Bacon" do
40
40
  lambda { 2.should.satisfy { |n| n % 2 == 0 } }.should succeed
41
41
  end
42
42
 
43
+ it "should have should.==" do
44
+ lambda { "string1".should == "string1" }.should succeed
45
+ lambda { "string1".should == "string2" }.should fail
46
+
47
+ lambda { [1,2,3].should == [1,2,3] }.should succeed
48
+ lambda { [1,2,3].should == [1,2,4] }.should fail
49
+ end
50
+
43
51
  it "should have should.equal" do
44
52
  lambda { "string1".should == "string1" }.should succeed
45
53
  lambda { "string1".should == "string2" }.should fail
@@ -62,6 +70,23 @@ describe "Bacon" do
62
70
  }.should.raise
63
71
  end
64
72
 
73
+ it "should have should.change" do
74
+ lambda { lambda {}.should.change { sleep 0.001; Time.now } }.should succeed
75
+
76
+ lambda {
77
+ i = 1
78
+ lambda { i *= 2 }.should.change { i }
79
+ }.should succeed
80
+
81
+ lambda {
82
+ i = 0
83
+ lambda { i *= 2 }.should.change { i }
84
+ }.should fail
85
+
86
+ lambda { should.change { sleep 0.001; Time.now } }.should succeed
87
+ lambda { should.change { 42 } }.should fail
88
+ end
89
+
65
90
  it "should have should.raise with a block" do
66
91
  lambda { should.raise { raise "Error" } }.should succeed
67
92
  lambda { should.raise(RuntimeError) { raise "Error" } }.should succeed
@@ -79,7 +104,7 @@ describe "Bacon" do
79
104
  ex.should.be.kind_of RuntimeError
80
105
  ex.message.should =~ /foo/
81
106
  end
82
-
107
+
83
108
  it "should have should.be.an.instance_of" do
84
109
  lambda { "string".should.be.instance_of String }.should succeed
85
110
  lambda { "string".should.be.instance_of Hash }.should fail
@@ -132,7 +157,7 @@ describe "Bacon" do
132
157
  }.should.not.raise(RuntimeError, Comparable)
133
158
  }.should.raise ZeroDivisionError
134
159
  }.should succeed
135
-
160
+
136
161
  lambda { lambda { raise "Error" }.should.not.raise }.should fail
137
162
  end
138
163
 
@@ -176,7 +201,7 @@ describe "Bacon" do
176
201
  lambda { 5.should.respond_to :to_str }.should fail
177
202
  lambda { :foo.should.respond_to :nx }.should fail
178
203
  end
179
-
204
+
180
205
  it "should have should.be.close" do
181
206
  lambda { 1.4.should.be.close 1.4, 0 }.should succeed
182
207
  lambda { 0.4.should.be.close 0.5, 0.1 }.should succeed
@@ -273,40 +298,40 @@ describe "before/after" do
273
298
  after do
274
299
  @a.should.equal 3
275
300
  end
276
-
301
+
277
302
  it "should run in the right order" do
278
303
  @a.should.equal 2
279
304
  @b.should.equal 2
280
305
  end
281
-
306
+
282
307
  describe "when nested" do
283
308
  before do
284
309
  @c = 5
285
310
  end
286
-
311
+
287
312
  it "should run from higher level" do
288
313
  @a.should.equal 2
289
314
  @b.should.equal 2
290
315
  end
291
-
316
+
292
317
  it "should run at the nested level" do
293
318
  @c.should.equal 5
294
319
  end
295
-
320
+
296
321
  before do
297
322
  @a = 5
298
323
  end
299
-
324
+
300
325
  it "should run in the right order" do
301
326
  @a.should.equal 5
302
327
  @a = 2
303
328
  end
304
329
  end
305
-
330
+
306
331
  it "should not run from lower level" do
307
332
  @c.should.be.nil
308
333
  end
309
-
334
+
310
335
  describe "when nested at a sibling level" do
311
336
  it "should not run from sibling level" do
312
337
  @c.should.be.nil
@@ -344,6 +369,22 @@ describe "shared/behaves_like" do
344
369
  behaves_like "another shared context"
345
370
  end
346
371
 
372
+ describe "Methods" do
373
+ def the_meaning_of_life
374
+ 42
375
+ end
376
+
377
+ it "should be accessible in a test" do
378
+ the_meaning_of_life.should == 42
379
+ end
380
+
381
+ describe "when in a sibling context" do
382
+ it "should be accessible in a test" do
383
+ the_meaning_of_life.should == 42
384
+ end
385
+ end
386
+ end
387
+
347
388
  describe 'describe arguments' do
348
389
 
349
390
  def check(ctx,name)
@@ -358,7 +399,7 @@ describe 'describe arguments' do
358
399
  it 'should work with symbols' do
359
400
  check(describe(:behaviour) {},'behaviour')
360
401
  end
361
-
402
+
362
403
  it 'should work with modules' do
363
404
  check(describe(Bacon) {},'Bacon')
364
405
  end
@@ -0,0 +1,14 @@
1
+ $false_is_not_true = false.should.not.be.true
2
+ $nil_is_not_true = nil.should.not.be.true
3
+
4
+ describe 'A non-true value' do
5
+ it 'should pass negated tests inside specs' do
6
+ false.should.not.be.true
7
+ nil.should.not.be.true
8
+ end
9
+
10
+ it 'should pass negated tests outside specs' do
11
+ $false_is_not_true.should.be.true
12
+ $nil_is_not_true.should.be.true
13
+ end
14
+ end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), '../lib/bacon')
1
+ require File.expand_path('../../lib/bacon', __FILE__)
2
2
 
3
3
  describe "#should shortcut for #it('should')" do
4
4
 
metadata CHANGED
@@ -1,65 +1,70 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bacon
3
- version: !ruby/object:Gem::Version
4
- version: 1.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Christian Neukirchen
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2008-11-30 00:00:00 +01:00
13
- default_executable:
12
+ date: 2012-12-21 00:00:00.000000000 Z
14
13
  dependencies: []
14
+ description: ! 'Bacon is a small RSpec clone weighing less than 350 LoC but
15
+
16
+ nevertheless providing all essential features.
17
+
15
18
 
16
- description: Bacon is a small RSpec clone weighing less than 350 LoC but nevertheless providing all essential features. http://github.com/chneukirchen/bacon
19
+ http://github.com/chneukirchen/bacon
20
+
21
+ '
17
22
  email: chneukirchen@gmail.com
18
- executables:
23
+ executables:
19
24
  - bacon
20
25
  extensions: []
21
-
22
- extra_rdoc_files:
23
- - README
26
+ extra_rdoc_files:
27
+ - README.rdoc
24
28
  - RDOX
25
- files:
29
+ files:
30
+ - .travis.yml
26
31
  - COPYING
27
- - README
32
+ - README.rdoc
28
33
  - Rakefile
34
+ - bacon.gemspec
29
35
  - bin/bacon
30
36
  - lib/autotest/bacon.rb
31
37
  - lib/autotest/bacon_rspec.rb
32
38
  - lib/autotest/discover.rb
33
39
  - lib/bacon.rb
34
40
  - test/spec_bacon.rb
41
+ - test/spec_nontrue.rb
35
42
  - test/spec_should.rb
36
43
  - RDOX
37
44
  - ChangeLog
38
- has_rdoc: true
39
- homepage: http://chneukirchen.org/repos/bacon
45
+ homepage: http://github.com/chneukirchen/bacon
46
+ licenses: []
40
47
  post_install_message:
41
48
  rdoc_options: []
42
-
43
- require_paths:
49
+ require_paths:
44
50
  - lib
45
- required_ruby_version: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: "0"
50
- version:
51
- required_rubygems_version: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: "0"
56
- version:
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
57
63
  requirements: []
58
-
59
64
  rubyforge_project:
60
- rubygems_version: 1.3.1
65
+ rubygems_version: 1.8.23
61
66
  signing_key:
62
- specification_version: 2
67
+ specification_version: 3
63
68
  summary: a small RSpec clone
64
69
  test_files: []
65
-
70
+ has_rdoc: true