Forum: Ruby Bacon 1.1, a small RSpec clone

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7264fb16beeea92b89bb42023738259d?d=identicon&s=25 Christian Neukirchen (Guest)
on 2008-11-30 11:35
(Received via mailing list)
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
703fbc991fd63e0e1db54dca9ea31b53?d=identicon&s=25 Robert Dober (Guest)
on 2008-11-30 11:59
(Received via mailing list)
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
7264fb16beeea92b89bb42023738259d?d=identicon&s=25 Christian Neukirchen (Guest)
on 2008-11-30 14:45
(Received via mailing list)
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.
B1b1d33e0655e841d4fd8467359c58d0?d=identicon&s=25 Yossef Mendelssohn (Guest)
on 2008-11-30 17:54
(Received via mailing list)
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.
50b2daf0e7666574579b9edaf8f2b69a?d=identicon&s=25 Pit Capitain (Guest)
on 2008-12-01 12:58
(Received via mailing list)
Christian, could you talk a little bit about the relation between
Bacon and test/spec and the future of test/spec?

Regards,
Pit
This topic is locked and can not be replied to.