diff options
Diffstat (limited to 'bootstraptest')
-rwxr-xr-x | bootstraptest/runner.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb index eef8a20d19..c885b7e98c 100755 --- a/bootstraptest/runner.rb +++ b/bootstraptest/runner.rb @@ -223,8 +223,9 @@ end def assert_check(testsrc, message = '', opt = '') show_progress(message) { - result = get_result_string(testsrc, opt) + result, errout = with_stderr {get_result_string(testsrc, opt)} check_coredump + error "stderr output is not empty\n", adjust_indent(errout) unless errout.empty? yield(result) } end @@ -396,6 +397,23 @@ def get_result_string(src, opt = '') end end +def with_stderr + out = err = nil + IO.pipe do |r, w| + stderr = $stderr.dup + $stderr.reopen(w) + w.close + reader = Thread.start {r.read} + begin + out = yield + ensure + $stderr.reopen(stderr) + err = reader.value + end + end + return out, err +end + def newtest @location = File.basename(caller(2).first) @count += 1 |