def match(command, expect, options={})
expect = Regexp.new(Regexp.escape(expect.to_s)) unless expect.is_a?(Regexp)
output_per_server = {}
try("#{command} ", options) do |ch, stream, out|
output_per_server[ch[:server]] ||= ''
output_per_server[ch[:server]] += out
end
@success = true
errored_hosts = []
output_per_server.each_pair do |server, output|
next if output =~ expect
errored_hosts << server
end
if errored_hosts.any?
@hosts = errored_hosts.join(', ')
output = output_per_server[errored_hosts.first]
@message = "the output #{output.inspect} from #{command.inspect} did not match #{expect.inspect}"
@success = false
end
self
end