Forum: RSpec RSpecing a ‘binary’

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.
Cec345a59245af9d06e4438a413f4eb5?d=identicon&s=25 Shot (Piotr Szotkowski) (Guest)
on 2008-10-25 09:29
(Received via mailing list)
Hello, good folk of rspec-users.

I’m writing my first Ruby ‘binary’ (i.e., a script meant to be used
as a standalone system command) and I’m wondering how to RSpec it.

(Caveat: With all of my other code I almost alwyas do BDD, but as this
was my first ‘binary’ and these were my first Trollop steps, I ended up
writing the code first.)

‘From inside’? This means turning most of the script into one (or few)
callable method(s) and then testing them; the idea of accomodating the
code to be easier to test seems to miss the point, though.

‘From outside’ (i.e., run it with Kernel#` and observe output and
side-effects)? This feels more like behaviour testing, and I’m leaning
towards it, but I have a gut feeling there might be another choice that
I’m missing…

-- Shot
2ce9c0106b5851b2294ba5eb9f5c04bd?d=identicon&s=25 Ashley Moran (Guest)
on 2008-10-25 13:30
(Received via mailing list)
On Oct 25, 2008, at 8:08 am, Shot (Piotr Szotkowski) wrote:

> ‘From outside’ (i.e., run it with Kernel#` and observe output and
> side-effects)? This feels more like behaviour testing, and I’m leaning
> towards it, but I have a gut feeling there might be another choice
> that
> I’m missing…


Hi Shot

When I've written command-line tools, I've done exactly this.  Use
Dir.tmpdir to give you a working space to hold any input/output files,
and call it with Kernel#` to capture its STDOUT.

Doing it this way proves your binary command works, because RSpec (or
Cucumber, which may be more appropriate here) is doing nothing you
can't do in a shell yourself.

Ashley

--
http://www.patchspace.co.uk/
http://aviewfromafar.net/
Cec345a59245af9d06e4438a413f4eb5?d=identicon&s=25 Shot (Piotr Szotkowski) (Guest)
on 2008-11-01 22:44
(Received via mailing list)
Ashley Moran:

> When I've written command-line tools, I've done exactly this. Use
> Dir.tmpdir to give you a working space to hold any input/output files,
> and call it with Kernel#` to capture its STDOUT.

Thanks a lot, Ashley! This is what I’m going to do, then. :)

I’ve just finished watching Rick Bradley’s ‘flog << Test.new’
presentation¹ from Ruby Hoedown 2008, and the first part (past
the introduction) is about how he RSpeced the flog binary – also
most informative!

¹
http://rubyhoedown2008.confreaks.com/11-rick-bradl...

-- Shot
This topic is locked and can not be replied to.