Forum: Ruby Bacon 0.9, 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-01-07 20:50
(Received via mailing list)
Hello,

Today I'm proud to release Bacon 0.9.

= Bacon -- a small RSpec clone.

   "Truth will sooner come out from error than from confusion."
                                               ---Francis Bacon

Bacon is a small RSpec clone weighing less than 300 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/)

== 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 ...]

== Object#should

You can use Object#should outside of contexts, where the result of
assertion will be returned as a boolean.  This is nice for
demonstrations, quick checks and doctest tests.

    >> require 'bacon'
    >> (1 + 1).should.equal 2
    => true
    >> (6*9).should.equal 42
    => false

== Where can I get it?

You can download Bacon 0.2 at

        http://chneukirchen.org/releases/bacon-0.9.0.tar.gz
                http://rubyforge.org/projects/testspec

Alternatively, you can checkout from the development repository with:

           darcs get http://chneukirchen.org/repos/bacon

(Patches using "darcs send" 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

== Contact

Please mail bugs, suggestions and patches to
<mailto:chneukirchen@gmail.com>.

Darcs repository ("darcs send" is welcome for patches):
http://chneukirchen.org/repos/bacon

== 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
87e41d0d468ad56a3b07d9a6482fd6d5?d=identicon&s=25 Hemant Kumar (gnufied)
on 2008-01-07 20:59
(Received via mailing list)
Hi Chris,

On Jan 8, 2008 1:20 AM, Christian Neukirchen <chneukirchen@gmail.com>
wrote:
> nevertheless providing all essential features.
>       it 'should be empty' do
>         lambda { @ary.fetch 0 }.
>
>     end
>     - should have super powers [FAILED]
>     $ bacon -q whirlwind.rb
>     $ bacon -p whirlwind.rb
>     1..6
>
>
>
>     => false
>            darcs get http://chneukirchen.org/repos/bacon
> at my site:
>
>     gem install bacon --source http://chneukirchen.org/releases/gems
>

Is it compatible with Test::Unit like Test/Spec ?



--
Let them talk of their oriental summer climes of everlasting
conservatories; give me the privilege of making my own summer with my
own coals.

http://gnufied.org
Df5e7adb20adae6c120b04e7cafb15a0?d=identicon&s=25 Rob Sanheim (rsanheim)
on 2008-01-07 21:24
(Received via mailing list)
On Jan 7, 2008 2:50 PM, Christian Neukirchen <chneukirchen@gmail.com>
wrote:
> nevertheless providing all essential features.
>       it 'should be empty' do
>         lambda { @ary.fetch 0 }.
>
>     end
>     - should have super powers [FAILED]
>     $ bacon -q whirlwind.rb
>     $ bacon -p whirlwind.rb
>     1..6
>
>
>
>     => false
>            darcs get http://chneukirchen.org/repos/bacon
> at my site:
>
> RSpec:: <http://rspec.rubyforge.org/>
> test/spec:: <http://test-spec.rubyforge.org/>
>
> Christian Neukirchen:: <http://chneukirchen.org/>
>

Is this a replacement for test/spec, or is test/spec bacon's big
brother?

- rob
7264fb16beeea92b89bb42023738259d?d=identicon&s=25 Christian Neukirchen (Guest)
on 2008-01-07 21:50
(Received via mailing list)
On 2008-01-07, Rob Sanheim <rsanheim@gmail.com> wrote:
>> Today I'm proud to release Bacon 0.9.
>>
>> = Bacon -- a small RSpec clone.
>>
>> Bacon is a small RSpec clone weighing less than 300 LoC but
>> nevertheless providing all essential features.
>
> Is this a replacement for test/spec, or is test/spec bacon's big brother?

It is not a replacement for test/spec, but a reimplementation of the
ideas behind it in a compact way.

It does not use Test::Unit.

It is not completely compatible to test/spec or RSpec, but suites are
reasonably easy to port.
6d3c187a8b3ef53b08e3e7e8572c4fea?d=identicon&s=25 Jeremy McAnally (Guest)
on 2008-01-07 22:01
(Received via mailing list)
It's unfortunate you didn't name contexts strips and examples bits.
You really could've played up this bacon thing. :)

I like the way this looks.  It plays nice with some specs I was working
on.

--Jeremy

On Jan 7, 2008 3:50 PM, Christian Neukirchen <chneukirchen@gmail.com>
wrote:
> It is not a replacement for test/spec, but a reimplementation of the
> ideas behind it in a compact way.
>
> It does not use Test::Unit.
>
> It is not completely compatible to test/spec or RSpec, but suites are
> reasonably easy to port.
>
> > - rob
>
>



--
http://www.jeremymcanally.com/

My books:
Ruby in Practice
http://www.manning.com/mcanally/

My free Ruby e-book
http://www.humblelittlerubybook.com/

My blogs:
http://www.mrneighborly.com/
http://www.rubyinpractice.com/
7264fb16beeea92b89bb42023738259d?d=identicon&s=25 Christian Neukirchen (Guest)
on 2008-01-07 22:16
(Received via mailing list)
On 2008-01-07, Jeremy McAnally <jeremymcanally@gmail.com> wrote:
> It's unfortunate you didn't name contexts strips and examples bits.
> You really could've played up this bacon thing. :)

:D
Lovely idea.

> I like the way this looks.  It plays nice with some specs I was working on.

Thank you.
47b1910084592eb77a032bc7d8d1a84e?d=identicon&s=25 Joel VanderWerf (Guest)
on 2008-01-07 22:46
(Received via mailing list)
Christian Neukirchen wrote:
> On 2008-01-07, Jeremy McAnally <jeremymcanally@gmail.com> wrote:
>> It's unfortunate you didn't name contexts strips and examples bits.
>> You really could've played up this bacon thing. :)
>
> :D
> Lovely idea.

mmmm, chunky!
B6861bc75bff3c594212338a914a39ad?d=identicon&s=25 Matt Todd (maraby)
on 2008-01-07 22:51
(Received via mailing list)
Thanks for finally gemming it up! I just started writing the specs for
Halcyon and was really distraught over using RSpec or Bacon. Very cool
and very good timing.

Also, again, I think this is a very cool name considering its
inspiration.

Cheers,
Matt
7264fb16beeea92b89bb42023738259d?d=identicon&s=25 Christian Neukirchen (Guest)
on 2008-01-07 23:16
(Received via mailing list)
On 2008-01-07, Matt Todd <chiology@gmail.com> wrote:
> Thanks for finally gemming it up! I just started writing the specs for
> Halcyon and was really distraught over using RSpec or Bacon. Very cool
> and very good timing.
>
> Also, again, I think this is a very cool name considering its inspiration.

Okay, time to admit that quote was not *really* the inspiration... :-)

Bacon in German is Speck, which is written and sounds like spec.
Df5e7adb20adae6c120b04e7cafb15a0?d=identicon&s=25 Rob Sanheim (rsanheim)
on 2008-01-07 23:23
(Received via mailing list)
On Jan 7, 2008 3:50 PM, Christian Neukirchen <chneukirchen@gmail.com>
wrote:
> It is not a replacement for test/spec, but a reimplementation of the
> ideas behind it in a compact way.
>
> It does not use Test::Unit.
>
> It is not completely compatible to test/spec or RSpec, but suites are
> reasonably easy to port.
>
> > - rob

Neat...I checked out the code and it looks very nice and slim.

My only concern is converting our many thousands of lines of specs
written in test/spec if bacon is where all the goodness is going to be
happening =).

- Rob

http://robsanheim.com
http://thinkrelevance.com
B6861bc75bff3c594212338a914a39ad?d=identicon&s=25 Matt Todd (maraby)
on 2008-01-08 00:25
(Received via mailing list)
> Okay, time to admit that quote was not *really* the inspiration... :-)
>
> Bacon in German is Speck, which is written and sounds like spec.

That makes it even better! :D
7264fb16beeea92b89bb42023738259d?d=identicon&s=25 Christian Neukirchen (Guest)
on 2008-01-08 11:37
(Received via mailing list)
On 2008-01-07, Rob Sanheim <rsanheim@gmail.com> wrote:
> Neat...I checked out the code and it looks very nice and slim.
>
> My only concern is converting our many thousands of lines of specs
> written in test/spec if bacon is where all the goodness is going to be
> happening =).

test/spec has a bigger userbase already, and I try to keep bacon
rather small.  (Still, it has everything you need, really.)

IMO, a stable spec API is more useful than a featureful, but always
moving one.

I'll make test/spec bacon compatible in the long term, not the other
way round.  (That is, bacon-the-API will be really stable, so you can
run your specs with test/spec, bacon or taptap (to be released).)
86e33dee4a89a8879a26487051c216a8?d=identicon&s=25 Michael Fellinger (Guest)
on 2008-01-08 11:56
(Received via mailing list)
On Jan 8, 2008 4:50 AM, Christian Neukirchen <chneukirchen@gmail.com>
wrote:
[snip]
> Happy hacking and have a nice day,

Thanks a lot, bacon rocks!

^ manveru
This topic is locked and can not be replied to.