RubySpec: Exceptions in before/after get lost in output

core/io/close_read_spec.rb does not work on my machine because it has
the following code, but I don’t have “cat” on my machine.

describe “IO#close_read” do

before :each do
@io = IO.popen ‘cat’, “r+”
@path = tmp(‘io.close.txt’)
end

However, running it does not report any errors in the final summary.
There is output indicating that something went bad, but if you run all
the tests together, the output scrolls past, and you won’t realize it.

c:\vsl\Merlin\External\Languages\IronRuby\mspec>c:\vsl\Merlin\Main\test\scripts\ir.cmd
mspec\bin\mspec-run -fd --verbose --excl-tag fails --excl-tag critical
–config default.mspec rubyspec/core/io/close_read_spec.rb

rubyspec/core/io/close_read_spec.rb’cat’ is not recognized as an
internal or external command,
operable program or batch file.
.‘cat’ is not recognized as an internal or external command,
operable program or batch file.
.

Finished in 1.738000 seconds

1 file, 2 examples, 2 expectations, 0 failures, 0 errors

Shouldn’t mspec report this as an error?

Thanks,
Shri

Shri B. wrote:

core/io/close_read_spec.rb does not work on my machine because it has
the following code, but I don’t have “cat” on my machine.

However, running it does not report any errors in the final summary.
There is output indicating that something went bad, but if you run all
the tests together, the output scrolls past, and you won’t realize it.

.‘cat’ is not recognized as an internal or external command,

Shouldn’t mspec report this as an error?

Probably should. The problem is that popen always returns the IO streams
for the subprocess, which may be cmd reporting the ‘cat’ error. I
suppose it could be modified to one of the other popen variants that set
process exit status. You should bring it up on rubyspec ML or on IRC.

  • Charlie

There’s also a dependency on “yes” in the popen specs. However, you can
get “cat” if you install the gnutools for windows, but that definitely
shouldn’t be a requirement on the specs. Especially since “yes” isn’t
included in the gnutools. In both cases you can probably just depend on
the current ruby install to do replicate the behavior of those commands.
Anyway, Jim, can you submit a patch to RubySpec that removes these
dependencies?

~js