Fixed it, I was missing the lambda:
it "should raise exception if response does not match expected" do
lambda{ @connection.remote_command('server', 'root', [{:command =>
'ls /', :expects => /blah/}]) }.
should raise_error(Ssh::CommandError, 'command did not return
expected result')
end
On 21/04/2008, Jamie D <[EMAIL PROTECTED]> wrote:
> Thanks for the info Aslak, I have rewritten my code like you suggest
> but have one issue with raising an exception. When I try the code in
> the console an exception is raised correctly but in my test code I get
> a message "command did not return expected result"
>
> # test
> describe Ssh, "Remote" do
>
> before(:each) do
> @ssh = mock(Net::SSH)
> @response = mock(Net::SSH)
> @connection = Ssh::Remote.new
> @connection.should_receive(:start).with('server', 'root').and_return(@ssh)
> @connection.should_receive(:close)
> @ssh.should_receive(:send_command).with('ls /').and_return(@response)
> @response.should_receive(:stdout).and_return('a list')
> end
>
> it "should raise exception if response does not match expected" do
> @connection.remote_command('server', 'root', [{:command => 'ls /',
> :expects => /blah/}]).
> should raise_error(Ssh::CommandError, 'command did not return
> expected result')
> end
>
> end
>
> # code exception.rb
> module Ssh
> class CommandError < Exception
> end
> end
>
> # ssh.rb
> require 'net/ssh'
> require 'ssh/exception'
>
>
> module Ssh
> class Remote
>
> def remote_command(server, user, commands=[])
>
> shell = start(server, user)
>
> commands.each do |command|
> out = shell.send_command command[:command]
>
> unless out.stdout =~ command[:expects] or command[:expects].blank?
> close
> raise(CommandError.new, 'command did not return expected result')
> end
> end
> close
> return true
> end
>
> def start(server, user)
> @session = Net::SSH.start(server, user)
> @session.shell.sync
> end
>
> def close()
> @session.close
> end
>
> end
> end
>
> Thanks
>
> Jamie
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users