aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--bootstraptest/runner.rb25
2 files changed, 24 insertions, 5 deletions
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 <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: show source code in error message.
+
Sun Feb 25 09:39:50 2007 Koichi Sasada <ko1@atdot.net>
* 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|