[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] Bacon 0.9, a small RSpec clone

Christian Neukirchen

1/7/2008 7:45:00 PM

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/rep...)

== 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....
http://rubyforge.org/project...

Alternatively, you can checkout from the development repository with:

darcs get http://chneukirchen.org/r...

(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/rel...

== Contact

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

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

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

== Links

Behavior-Driven Development:: <http://behaviour-drive...
RSpec:: <http://rspec.rubyforg...
test/spec:: <http://test-spec.rubyforg...

Christian Neukirchen:: <http://chneukirche...


Happy hacking and have a nice day,
Christian Neukirchen
--
a954aeccc86fd0d5efae824516de15b64b834a2f bacon-0.9.0.tar.gz
7d9de531251342da11af7d67522b018b248707b4 bacon-0.9.0.gem
12 Answers

hemant

1/7/2008 7:59:00 PM

0

Hi Chris,

On Jan 8, 2008 1:20 AM, Christian Neukirchen <chneukirchen@gmail.com> wrote:
> 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/rep...)
>
> == 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....
> http://rubyforge.org/project...
>
> Alternatively, you can checkout from the development repository with:
>
> darcs get http://chneukirchen.org/r...
>
> (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/rel...
>

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://g...

Rob Sanheim

1/7/2008 8:24:00 PM

0

On Jan 7, 2008 2:50 PM, Christian Neukirchen <chneukirchen@gmail.com> wrote:
> 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/rep...)
>
> == 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....
> http://rubyforge.org/project...
>
> Alternatively, you can checkout from the development repository with:
>
> darcs get http://chneukirchen.org/r...
>
> (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/rel...
>
> == Contact
>
> Please mail bugs, suggestions and patches to
> <mailto:chneukirchen@gmail.com>.
>
> Darcs repository ("darcs send" is welcome for patches):
> http://chneukirchen.org/r...
>
> == 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-l....
>
> == Links
>
> Behavior-Driven Development:: <http://behaviour-drive...
> RSpec:: <http://rspec.rubyforg...
> test/spec:: <http://test-spec.rubyforg...
>
> Christian Neukirchen:: <http://chneukirche...
>

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

- rob

Christian Neukirchen

1/7/2008 8:40:00 PM

0

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.

> - rob

Jeremy McAnally

1/7/2008 9:01:00 PM

0

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:
> 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.
>
> > - rob
>
>



--
http://www.jeremymca...

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

My free Ruby e-book
http://www.humblelittlerub...

My blogs:
http://www.mrneigh...
http://www.rubyinpra...

Christian Neukirchen

1/7/2008 9:07:00 PM

0

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.

> --Jeremy

Joel VanderWerf

1/7/2008 9:46:00 PM

0

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!

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Matt Todd

1/7/2008 9:48:00 PM

0

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

Christian Neukirchen

1/7/2008 10:06:00 PM

0

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.

> Cheers,
> Matt

Rob Sanheim

1/7/2008 10:22:00 PM

0

On Jan 7, 2008 3:50 PM, Christian Neukirchen <chneukirchen@gmail.com> wrote:
> 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.
>
> > - 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://robs...
http://thinkrel...

Matt Todd

1/7/2008 11:25:00 PM

0

> 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