bin/marutest in maruku-0.3.0 vs bin/marutest in maruku-0.4.0

- old
+ new

@@ -1,32 +1,50 @@ #!/usr/bin/env ruby require 'maruku' -require 'maruku/parse_span_better' - #MARKER = "\n***EOF***\n" SPLIT = %r{\n\*\*\*[^\*]+\*\*\*\n}m def marker(x) "\n*** Output of #{x} ***\n" end -TOTEST = [:inspect,:to_html,:to_latex,:to_s,:to_s] +def equals(a, b) + a = a.split("\n") + b = b.split("\n") + + for i in 0..([a.size-1,b.size-1].max) + la = a[i] + lb = b[i] + if la != lb + puts "\n" + puts "Line #{i}:\n#{la.inspect}\n" + puts "#{lb.inspect}\n" + return false + end + end + return true +end +TOTEST = [:inspect,:to_html,:to_latex,:to_md,:to_s] + def run_test(filename, its_ok, verbose=true) # read file content input = (f=File.open(filename,'r')).read; f.close + output_html = File.join(File.dirname(filename), + File.basename(filename, File.extname(filename)) + ".html") + # split the input in sections stuff = input.split(SPLIT) comment = stuff.shift params_s = stuff.shift - params = eval(params_s) + params = eval(params_s||'{}') if params == nil raise "Null params? #{params_s.inspect}" end markdown = stuff.shift @@ -53,12 +71,15 @@ crashed << s actual[s] = e.inspect+ "\n"+ e.backtrace.join("\n") puts actual[s] end end - + File.open(output_html, 'w') do |f| + f.write actual[:to_html] + end + begin m = Maruku.new d = m.instance_eval(actual[:inspect]) rescue Exception => e s = e.inspect + e.backtrace.join("\n") @@ -76,31 +97,38 @@ expected[symbol] = stuff[i] # puts "symbol: #{symbol.inspect} = #{stuff[i].inspect}" end end + m = Maruku.new + + if not its_ok.include? :inspect begin - m = Maruku.new d = m.instance_eval(expected[:inspect]) # puts "Eval: #{d.inspect}" expected[:inspect] = d.inspect rescue Exception => e s = e.inspect + e.backtrace.join("\n") raise "Cannot eval user-provided string:\n #{expected[:inspect].to_s}"+ "\n #{s}" end end - +# m.instance_eval(actual[:inspect]) != m.instance_eval(expected[:inspect]) + +# actual[:inspect] = m.instance_eval(actual[:inspect]) +# expected[:inspect] = m.instance_eval(expected[:inspect]) + + TOTEST.each do |x| - if actual[x] != expected[x] + if not equals(actual[x], expected[x]) if its_ok.include? x expected[x] = actual[x] $stdout.write " relax:#{x} " relaxed << x else - actual[x] = "-----| WARNING | -----\n" + actual[x] + actual[x] = "-----| WARNING | -----\n" + actual[x].to_s failed << x end end end