From 565bcdcb30e5c4e88a1b44efe2eb539c23767c96 Mon Sep 17 00:00:00 2001 From: aamine Date: Sun, 25 Feb 2007 02:10:38 +0000 Subject: * bootstraptest/runner.rb: show source code in error message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bootstraptest/runner.rb | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'bootstraptest/runner.rb') diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb index 8fc3bc2e08..ed2880903c 100644 --- a/bootstraptest/runner.rb +++ b/bootstraptest/runner.rb @@ -9,7 +9,7 @@ $LOAD_PATH.unshift "#{File.dirname($0)}/lib" require 'fileutils' def main - @ruby = nil + @ruby = File.expand_path('miniruby') @verbose = false dir = 'bootstraptest.tmpwd' tests = nil @@ -69,22 +69,37 @@ def exec_test(pathes) end end -def assert_equal(expected, really) +def assert_equal(expected, testsrc) newtest $stderr.puts "\##{@count} #{@location}" if @verbose - restr = get_result_string(really) + result = get_result_string(testsrc) check_coredump - if expected == restr + if expected == result $stderr.print '.' else $stderr.print 'F' - error "expected #{expected.inspect} but is: #{restr.inspect}" + error pretty(testsrc, expected, result) end rescue Exception => err $stderr.print 'E' error err.message end +def pretty(src, ex, result) + (/\n/ =~ src ? "\n#{adjust_indent(src)}" : src) + + " #=> #{result.inspect} (expected #{ex.inspect})" +end + +INDENT = 27 + +def adjust_indent(src) + untabify(src).gsub(/^ {#{INDENT}}/o, '').gsub(/^/, ' ') +end + +def untabify(str) + str.gsub(/^\t+/) {|tabs| ' ' * (8 * tabs.size) } +end + def get_result_string(src) if @ruby File.open('bootstraptest.tmp.rb', 'w') {|f| -- cgit v1.2.3