One option is to write your test to execute your script on the command
line. I'm pretty sure this is the piece you're missing:
# asign the shell output of the ls command to a variable
ls_output = `ls`
# Do something semi-useful with it.
items = ls_output.split
puts "There are #{items.size} objects in the directory."
-Simon
Mark Slater wrote:
> I've written a script for use with Nagios (a monitoring tool) that
> I'd like to test. The requirements for the script is that it output a
> single line of text to STDOUT and then exit with a status code (0 -
> 3). My script is designed to monitor a few different services... each
> invocation includes a required command line argument specifying the
> service to monitor in the current invocation. To do that, I created a
> class for each type of service monitor.
>
> I'm now writing unit tests for my script, and I'd like to check that
> the output written to STDOUT by each service monitor class is
> correct. But I'm new to Ruby and I'm not sure how to do that. In
> other languages, I'd simply redefine STDOUT as a stream that goes to
> a large in-memory buffer, but I haven't seen anything that suggests
> that is possible in Ruby. The best I've come up with so far is
> creating a temporary file and calling $stdout.reopen() with the path
> to that temporary file. However, I'd much rather do this in memory
> because then I never have to worry about what file system and
> permissions the user executing the unit test has.
>
> Thanks,
>
> Mark
--
Posted via http://www.ruby-forum.com/.