Files
handlebars.js/spec/spec_helper.rb
T
wycats f205cec745 Finish compatibility with the old handlebars:
* foo"bar" is an invalid param
* {{foo}}bar{{/baz}} is invalid
* fix a number of issues with inverse sections
* add partials
2010-12-03 16:49:04 -05:00

82 lines
1.9 KiB
Ruby

require "v8"
# Monkey patches due to bugs in RubyRacer
class V8::JSError
def initialize(try, to)
@to = to
begin
super(initialize_unsafe(try))
rescue Exception => e
# Original code does not make an Array here
@boundaries = [Boundary.new(:rbframes => e.backtrace)]
@value = e
super("BUG! please report. JSError#initialize failed!: #{e.message}")
end
end
def parse_js_frames(try)
raw = @to.rb(try.StackTrace())
if raw && !raw.empty?
raw.split("\n")[1..-1].tap do |frames|
# Original code uses strip!, and the frames are not guaranteed to be strippable
frames.each {|frame| frame.strip.chomp!(",")}
end
else
[]
end
end
end
module Handlebars
module Spec
def self.js_backtrace(context)
begin
context.eval("throw")
rescue V8::JSError => e
return e.backtrace(:javascript)
end
end
CONTEXT = V8::Context.new
CONTEXT.instance_eval do |context|
context.eval("exports = null")
context.eval("Handlebars = {}")
context.load('lib/handlebars/ast.js')
context.load('lib/handlebars/jison_ext.js')
context.load('lib/handlebars/handlebars_lexer.js')
context.load('lib/handlebars/printer.js')
context.load('lib/handlebars/parser.js')
context.load('lib/handlebars/runtime.js')
context.load('lib/handlebars/utils.js')
context.load('lib/handlebars.js')
context["p"] = proc do |val|
p val
end
context["puts"] = proc do |val|
puts context["Handlebars"]["PrintVisitor"].new.accept(val)
puts
end
context["puts_caller"] = proc do
puts "BACKTRACE:"
puts Handlebars::Spec.js_backtrace(context)
puts
end
end
end
end
require "test/unit/assertions"
RSpec.configure do |config|
config.include Test::Unit::Assertions
config.before(:all) do
@context = Handlebars::Spec::CONTEXT
end
end