提交 557ae604 编写于 作者: M Mislav Marohnić

test debug: show output of unsuccessful commands

References #216
上级 d7d954a8
require 'aruba/cucumber' require 'aruba/cucumber'
require 'fileutils' require 'fileutils'
require 'hub/context' require 'hub/context'
require 'forwardable'
# needed to avoid "Too many open files" on 1.8.7 # needed to avoid "Too many open files" on 1.8.7
Aruba::Process.class_eval do Aruba::Process.class_eval do
...@@ -51,6 +52,45 @@ After do ...@@ -51,6 +52,45 @@ After do
processes.each {|_, p| p.close_streams } processes.each {|_, p| p.close_streams }
end end
RSpec::Matchers.define :be_successful_command do
match do |cmd|
cmd.success?
end
failure_message_for_should do |cmd|
%(command "#{cmd}" exited with status #{cmd.status}:) <<
cmd.output.gsub(/^/, ' ' * 2)
end
end
class SimpleCommand
attr_reader :output
extend Forwardable
def_delegator :@status, :exitstatus, :status
def_delegators :@status, :success?
def initialize cmd
@cmd = cmd
end
def to_s
@cmd
end
def self.run cmd
command = new(cmd)
command.run
command
end
def run
@output = `#{@cmd} 2>&1`.chomp
@status = $?
$?.success?
end
end
World Module.new { World Module.new {
def history def history
histfile = File.join(ENV['HOME'], '.history') histfile = File.join(ENV['HOME'], '.history')
...@@ -80,9 +120,9 @@ World Module.new { ...@@ -80,9 +120,9 @@ World Module.new {
def run_silent cmd def run_silent cmd
in_current_dir do in_current_dir do
output = `#{cmd} 2>&1`.chomp command = SimpleCommand.run(cmd)
$?.should be_success command.should be_successful_command
output command.output
end end
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册