diff --git a/ChangeLog b/ChangeLog index 5fd9c8c3ff..72c323bd4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Sun Feb 25 11:09:16 2007 Minero Aoki + + * bootstraptest/runner.rb: show source code in error message. + Sun Feb 25 09:39:50 2007 Koichi Sasada * yarvcore.h: 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|