Merge pull request #147 from MarkDBlackwell/mdb/sh-full-echo-on-error

Sh fully echoes commands which error exit
This commit is contained in:
Hiroshi SHIBATA 2022-08-13 07:00:24 +09:00 committed by GitHub
commit 0157758371
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 2 deletions

View File

@ -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}): " +

View File

@ -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