diff options
Diffstat (limited to 'spec/spec_helper.rb')
-rw-r--r-- | spec/spec_helper.rb | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb deleted file mode 100644 index eb2f26a..0000000 --- a/spec/spec_helper.rb +++ /dev/null @@ -1,132 +0,0 @@ -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 - - def self.remove_exports(string) - match = string.match(%r{\A(.*?)^// BEGIN\(BROWSER\)\n(.*)\n^// END\(BROWSER\)(.*?)\Z}m) - prelines = match ? match[1].count("\n") + 1 : 0 - ret = match ? match[2] : string - ("\n" * prelines) + ret - end - - def self.load_helpers(context) - context["exports"] = nil - - context["p"] = proc do |this, val| - p val if ENV["DEBUG_JS"] - end - - context["puts"] = proc do |this, val| - puts val if ENV["DEBUG_JS"] - end - - context["puts_node"] = proc do |this, 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 - - def self.js_load(context, file) - str = File.read(file) - context.eval(remove_exports(str), file) - end - - CONTEXT = V8::Context.new - CONTEXT.instance_eval do |context| - Handlebars::Spec.load_helpers(context); - - Handlebars::Spec.js_load(context, 'dist/handlebars.js'); - - context["CompilerContext"] = {} - CompilerContext = context["CompilerContext"] - CompilerContext["compile"] = proc do |this, *args| - template, options = args[0], args[1] || nil - templateSpec = COMPILE_CONTEXT["Handlebars"]["precompile"].call(template, options); - context["Handlebars"]["template"].call(context.eval("(#{templateSpec})")); - end - CompilerContext["compileWithPartial"] = proc do |this, *args| - template, options = args[0], args[1] || nil - context["Handlebars"]["compile"].call(template, options); - end - end - - PARSER_CONTEXT = V8::Context.new - PARSER_CONTEXT.instance_eval do |context| - Handlebars::Spec.load_helpers(context); - - Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/parser.js'); - end - - COMPILE_CONTEXT = V8::Context.new - COMPILE_CONTEXT.instance_eval do |context| - Handlebars::Spec.load_helpers(context); - - Handlebars::Spec.js_load(context, 'dist/handlebars.js'); - Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/visitor.js'); - Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/printer.js'); - - context["Handlebars"]["logger"]["level"] = ENV["DEBUG_JS"] ? context["Handlebars"]["logger"][ENV["DEBUG_JS"]] : 4 - - context["Handlebars"]["logger"]["log"] = proc do |this, level, str| - logger_level = context["Handlebars"]["logger"]["level"].to_i - - if logger_level <= level - puts str - end - end - end - end -end - - -require "test/unit/assertions" - -RSpec.configure do |config| - config.include Test::Unit::Assertions - - # Each is required to allow classes to mark themselves as compiler tests - config.before(:each) do - @context = @compiles ? Handlebars::Spec::COMPILE_CONTEXT : Handlebars::Spec::CONTEXT - end -end |