Hello,
Today I'm proud to release Bacon 1.1.
* November 30th, 2008: Third public release 1.1.
* Nested before/after.
* Add -Q/--no-backtraces to not show details about failed
specifications.
* Add Knock output.
* Bug fixes.
= Bacon -- small RSpec clone.
"Truth will sooner come out from error than from confusion."
---Francis Bacon
Bacon is a small RSpec clone weighing less than 350 LoC but
nevertheless providing all essential features.
== Whirl-wind tour
require 'bacon'
describe 'A new array' do
before do
@ary = Array.new
end
it 'should be empty' do
@ary.should.be.empty
@ary.should.not.include 1
end
it 'should have zero size' do
@ary.size.should.equal 0
@ary.size.should.be.close 0.1, 0.5
end
it 'should raise on trying fetch any index' do
lambda { @ary.fetch 0 }.
should.raise(IndexError).
message.should.match(/out of array/)
# Alternatively:
should.raise(IndexError) { @ary.fetch 0 }
end
it 'should have an object identity' do
@ary.should.not.be.same_as Array.new
end
# Custom assertions are trivial to do, they are lambdas returning
a
# boolean vale:
palindrome = lambda { |obj| obj == obj.reverse }
it 'should be a palindrome' do
@ary.should.be.a palindrome
end
it 'should have super powers' do
should.flunk "no super powers found"
end
end
Now run it:
$ bacon whirlwind.rb
A new array
- should be empty
- should have zero size
- should raise on trying fetch any index
- should have an object identity
- should be a palindrome
- should have super powers [FAILED]
Bacon::Error: no super powers found
./whirlwind.rb:39: A new array - should have super powers
./whirlwind.rb:38
./whirlwind.rb:3
6 specifications (9 requirements), 1 failures, 0 errors
If you want shorter output, use the Test::Unit format:
$ bacon -q whirlwind.rb
.....F
Bacon::Error: no super powers found
./whirlwind.rb:39: A new array - should have super powers
./whirlwind.rb:38
./whirlwind.rb:3
6 tests, 9 assertions, 1 failures, 0 errors
It also supports TAP:
$ bacon -p whirlwind.rb
ok 1 - should be empty
ok 2 - should have zero size
ok 3 - should raise on trying fetch any index
ok 4 - should have an object identity
ok 5 - should be a palindrome
not ok 6 - should have super powers: FAILED
# Bacon::Error: no super powers found
# ./whirlwind.rb:39: A new array - should have super powers
# ./whirlwind.rb:38
# ./whirlwind.rb:3
1..6
# 6 tests, 9 assertions, 1 failures, 0 errors
$ bacon -p whirlwind.rb | taptap -q
Tests took 0.00 seconds.
FAILED tests 6
6) should have super powers: FAILED
Failed 1/6 tests, 83.33% okay.
(taptap is available from http://chneukirchen.org/repos/taptap/)
As of Bacon 1.1, it also supports Knock:
$ bacon -k whirlwind.rb
ok - should be empty
ok - should have zero size
ok - should raise on trying fetch any index
ok - should have an object identity
ok - should be a palindrome
not ok - should have super powers: FAILED
# Bacon::Error: no super powers found
# ./whirlwind.rb:39: A new array - should have super powers
# ./whirlwind.rb:38
# ./whirlwind.rb:3
$ bacon -k whirlwind.rb | kn-sum
6 tests, 1 failed (83.3333% succeeded)
(knock is available from http://github.com/chneukirchen/knock/)
== Implemented assertions
* should.<predicate> and should.be.<predicate>
* should.equal
* should.match
* should.be.identical_to / should.be.same_as
* should.raise(*exceptions) { }
* should.change { }
* should.throw(symbol) { }
* should.satisfy { |object| }
== Added core predicates
* Object#true?
* Object#false?
* Proc#change?
* Proc#raise?
* Proc#throw?
* Numeric#close?
[... for more documentation see README ...]
== Where can I get it?
You can download Bacon 1.0 at
http://chneukirchen.org/releases/bacon-1.1.0.tar.gz
http://rubyforge.org/projects/test-spec
Alternatively, you can checkout from the development repository at:
http://github.com/chneukirchen/bacon
(Patches rebased on HEAD are most welcome.)
== Installing with RubyGems
A Gem of Bacon is available. You can install it with:
gem install bacon
I also provide a local mirror of the gems (and development snapshots)
at my site:
gem install bacon --source http://chneukirchen.org/releases/gems
== Thanks to
* Michael Fellinger, for fixing Bacon for 1.9 and various improvements.
* Gabriele Renzi, for implementing Context#should.
* James Tucker, for the autotest support.
* Yossef Mendelssohn, for nested contexts.
* everyone contributing bug fixes.
== History
* January 7, 2008: First public release 0.9.
* July 6th, 2008: Second public release 1.0.
* Add Context#should as a shortcut for Context#it('should ' + _).
* describe now supports multiple arguments for better organization.
* Empty specifications are now erroneous.
* after-blocks run in the case of exceptions too.
* Autotest support.
* Bug fixes.
* November 30th, 2008: Third public release 1.1.
* Nested before/after.
* Add -Q/--no-backtraces to not show details about failed
specifications.
* Add Knock output.
* Bug fixes.
== Contact
Please mail bugs, suggestions and patches to
<mailto:chneukirchen@gmail.com>.
Git repository (patches rebased on HEAD are most welcome):
http://github.com/chneukirchen/bacon
git://github.com/chneukirchen/bacon.git
== Copying
Copyright (C) 2007, 2008 Christian Neukirchen
<purl.org/net/chneukirchen>
Bacon is freely distributable under the terms of an MIT-style license.
See COPYING or http://www.opensource.org/licenses/mit-license.php.
== Links
Behavior-Driven Development:: <http://behaviour-driven.org/>
RSpec:: <http://rspec.rubyforge.org/>
test/spec:: <http://test-spec.rubyforge.org/>
Christian Neukirchen:: <http://chneukirchen.org/>
Happy hacking and have a nice day,
Christian Neukirchen
on 2008-11-30 11:35
on 2008-11-30 11:59
On Sun, Nov 30, 2008 at 11:29 AM, Christian Neukirchen <chneukirchen@gmail.com> wrote: .org/releases/gems > > == Thanks to > > * Michael Fellinger, for fixing Bacon for 1.9 and various improvements. Well after all time is relative, right? Jokes apart this looks really interesting, especially as one could potentially release bacon with the own code due to it's small size. One question, is Speck Ruby 1.8[.succ] agnostic? Cheers Robert
on 2008-11-30 14:45
On 2008-11-30, Robert Dober <robert.dober@gmail.com> wrote: > On Sun, Nov 30, 2008 at 11:29 AM, Christian Neukirchen >> == Thanks to >> >> * Michael Fellinger, for fixing Bacon for 1.9 and various improvements. > Well after all time is relative, right? > > Jokes apart this looks really interesting, especially as one could > potentially release bacon with the own code > due to it's small size. Indeed, it's just one file. > One question, is Speck Ruby 1.8[.succ] agnostic? AFAICT it works on 1.8 and 1.9. The code is pretty simple, it will likely work in other Ruby implementations as well.
on 2008-11-30 17:54
On Nov 30, 4:29 am, Christian Neukirchen <chneukirc...@gmail.com> wrote: > Hello, > > Today I'm proud to release Bacon 1.1. > > * November 30th, 2008: Third public release 1.1. > * Nested before/after. YAY!!! Looking forward to continuing the process of attempting to switch a project to bacon.
on 2008-12-01 12:58
Christian, could you talk a little bit about the relation between Bacon and test/spec and the future of test/spec? Regards, Pit
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.