rjk
rjk

Reputation: 1472

Testing the $? global variable in a ruby rspec

I have a piece of code like:

output = `shell-command-to-run`
unless $?.success?
  raise "Failure running shell command!"
end

I've mocked the backtick method to prevent the external shell command from running during my specs, but I've not found a way to set the $? global variable to exercise the failure side of the spec.

Upvotes: 1

Views: 337

Answers (1)

tadman
tadman

Reputation: 211580

Maybe you should have a script that returns the sorts of errors you're expecting to uncover so you can test a variety of conditions. For example:

#!/usr/bin/env ruby

exit(ARGV[0].to_i)

You can then pass in the exit code you want to trap.

Instead of mocking the call, you just run a different script entirely to validate it handles errors correctly.

Upvotes: 1

Related Questions