Split the tests into compiler and vm tests

This commit is contained in:
kpdecker
2011-07-30 15:26:21 -05:00
parent 3d9e5070f5
commit aaec001931
3 changed files with 44 additions and 19 deletions
+4
View File
@@ -3,6 +3,10 @@ require "spec_helper"
describe "Parser" do
let(:handlebars) { @context["Handlebars"] }
before(:all) do
@compiles = true
end
def program(&block)
ASTBuilder.build do
program do
+37 -19
View File
@@ -44,13 +44,7 @@ module Handlebars
("\n" * prelines) + ret
end
def self.js_load(file)
str = File.read(file)
CONTEXT.eval(remove_exports(str), file)
end
CONTEXT = V8::Context.new
CONTEXT.instance_eval do |context|
def self.load_helpers(context)
context["exports"] = nil
context["p"] = proc do |val|
@@ -71,17 +65,40 @@ module Handlebars
puts Handlebars::Spec.js_backtrace(context)
puts
end
end
Handlebars::Spec.js_load('lib/handlebars/base.js');
Handlebars::Spec.js_load('lib/handlebars/compiler/parser.js')
Handlebars::Spec.js_load('lib/handlebars/compiler/base.js');
Handlebars::Spec.js_load('lib/handlebars/compiler/ast.js');
Handlebars::Spec.js_load('lib/handlebars/compiler/visitor.js');
Handlebars::Spec.js_load('lib/handlebars/compiler/printer.js')
Handlebars::Spec.js_load('lib/handlebars/utils.js')
Handlebars::Spec.js_load('lib/handlebars/compiler/compiler.js')
Handlebars::Spec.js_load('lib/handlebars/vm.js')
Handlebars::Spec.js_load('lib/handlebars.js')
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, 'lib/handlebars/base.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/utils.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/vm.js');
context["Handlebars"]["compile"] = proc do |*args|
template, options = args[0], args[1] || nil
templateSpec = COMPILE_CONTEXT["Handlebars"]["precompile"].call(template, options);
context["Handlebars"]["template"].call(context.eval("(#{templateSpec})"));
end
end
COMPILE_CONTEXT = V8::Context.new
COMPILE_CONTEXT.instance_eval do |context|
Handlebars::Spec.load_helpers(context);
Handlebars::Spec.js_load(context, 'lib/handlebars/base.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/utils.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/parser.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/base.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/ast.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/visitor.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/printer.js');
Handlebars::Spec.js_load(context, 'lib/handlebars/compiler/compiler.js');
context["Handlebars"]["logger"]["level"] = ENV["DEBUG_JS"] ? context["Handlebars"]["logger"][ENV["DEBUG_JS"]] : 4
@@ -102,7 +119,8 @@ require "test/unit/assertions"
RSpec.configure do |config|
config.include Test::Unit::Assertions
config.before(:all) do
@context = Handlebars::Spec::CONTEXT
# 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
+3
View File
@@ -5,6 +5,9 @@ describe "Tokenizer" do
let(:parser) { @context["handlebars"] }
let(:lexer) { @context["handlebars"]["lexer"] }
before(:all) do
@compiles = true
end
Token = Struct.new(:name, :text)
def tokenize(string)