Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news-2.dfn.de!news.dfn.de!news.uni-stuttgart.de!newsfeed.in-ulm.de!not-for-mail From: Christian Neukirchen Newsgroups: comp.lang.ruby Subject: [ANN] Bacon 1.2, a small RSpec clone Date: Fri, 21 Dec 2012 12:06:46 +0100 Organization: [ posted via ] IN-Ulm Lines: 252 Sender: chris@juno Message-ID: <87wqwboe9l.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain X-Trace: news.in-ulm.de CB1AB8F3960F4CB13AF0B83E04079478 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) Xref: csiph.com comp.lang.ruby:6705 Hello, Today, after over 4 years, I'm proud to release Bacon 1.2. * December 21th, 2012: Fourth public release 1.2.0. * #satisfy will not pass arguments anymore to the block, use lexical scope. * Fixed Context#change?. * Add support for finding specs named like spec/**/*_spec.rb. * Contexts nest properly. * Timer in TestUnitOutput. * Nested output for SpecDoxOutput. * Small cleanups and more tests. = 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. and should.be. * 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.2 at http://chneukirchen.org/releases/bacon-1.2.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. * Gabriel Horner, for many patches. * 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. * December 21th, 2012: Fourth public release 1.2.0. * #satisfy will not pass arguments anymore to the block, use lexical scope. * Fixed Context#change?. * Add support for finding specs named like spec/**/*_spec.rb. * Contexts nest properly. * Timer in TestUnitOutput. * Nested output for SpecDoxOutput. * Small cleanups and more tests. == Contact Please mail bugs, suggestions and patches to . 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, 2012 Christian Neukirchen 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:: RSpec:: test/spec:: Christian Neukirchen:: Happy hacking and have a nice day, Christian Neukirchen -- 309bd2a1be623b90089f50d2e5c3f9cb66995010 bacon-1.2.0.tar.gz 85b19b68a33f1dc0e147ff08bad66f7cfc52de36 bacon-1.2.0.gem