Merge pull request #147 from MarkDBlackwell/mdb/sh-full-echo-on-error
Sh fully echoes commands which error exit
This commit is contained in:
commit
0157758371
|
@ -60,8 +60,6 @@ module FileUtils
|
|||
|
||||
def create_shell_runner(cmd) # :nodoc:
|
||||
show_command = sh_show_command cmd
|
||||
show_command = show_command[0, 42] + "..." unless $trace
|
||||
|
||||
lambda do |ok, status|
|
||||
ok or
|
||||
fail "Command failed with status (#{status.exitstatus}): " +
|
||||
|
|
|
@ -313,6 +313,49 @@ class TestRakeFileUtils < Rake::TestCase # :nodoc:
|
|||
assert_equal expected_cmd, show_cmd
|
||||
end
|
||||
|
||||
def test_sh_if_a_command_exits_with_error_status_its_full_output_is_printed
|
||||
verbose false do
|
||||
standard_output = 'Some output'
|
||||
standard_error = 'Some error'
|
||||
shell_command = "ruby -e\"puts '#{standard_output}';STDERR.puts '#{standard_error}';exit false\""
|
||||
actual_both = capture_subprocess_io do
|
||||
begin
|
||||
sh shell_command
|
||||
rescue
|
||||
else
|
||||
flunk
|
||||
end
|
||||
end
|
||||
actual = actual_both.join
|
||||
assert_match standard_output, actual
|
||||
assert_match standard_error, actual
|
||||
end
|
||||
end
|
||||
|
||||
def test_sh_if_a_command_exits_with_error_status_sh_echoes_it_fully
|
||||
verbose true do
|
||||
assert_echoes_fully
|
||||
end
|
||||
verbose false do
|
||||
assert_echoes_fully
|
||||
end
|
||||
end
|
||||
|
||||
def assert_echoes_fully
|
||||
long_string = '1234567890' * 10
|
||||
shell_command = "ruby -e\"'#{long_string}';exit false\""
|
||||
capture_subprocess_io do
|
||||
begin
|
||||
sh shell_command
|
||||
rescue => ex
|
||||
assert_match 'Command failed with status', ex.message
|
||||
assert_match shell_command, ex.message
|
||||
else
|
||||
flunk
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_ruby_with_multiple_arguments
|
||||
skip if jruby9? # https://github.com/jruby/jruby/issues/3653
|
||||
|
||||
|
|
Loading…
Reference in New Issue