summaryrefslogtreecommitdiff
path: root/bootstraptest/runner.rb
diff options
context:
space:
mode:
authoraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-25 02:10:38 +0000
committeraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-25 02:10:38 +0000
commit565bcdcb30e5c4e88a1b44efe2eb539c23767c96 (patch)
treeb927c261c83ff0280b2bde69e49a78caf05a0ad4 /bootstraptest/runner.rb
parent71986ef6bc232455deca67017873fff0c3cbd860 (diff)
* 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
Diffstat (limited to 'bootstraptest/runner.rb')
-rw-r--r--bootstraptest/runner.rb25
1 files changed, 20 insertions, 5 deletions
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
index 8fc3bc2..ed28809 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|