mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
* when writing a TemplateLiteral, it should not transpile unless generated * proper escaping for template literals * add printing test for TemplateLiteral node
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
"use strict";
|
|
|
|
require("../__util__/test-init");
|
|
|
|
var chai = require("chai");
|
|
chai.config.includeStack = true;
|
|
var expect = require("chai").expect;
|
|
|
|
var path = require("path");
|
|
var compiler = require("../../compiler");
|
|
var builder = compiler.createBuilder();
|
|
var autotest = require("../autotest");
|
|
|
|
var CompileContext = require("marko/compiler/CompileContext");
|
|
var CodeGenerator = require("marko/compiler/CodeGenerator");
|
|
var CodeWriter = require("marko/compiler/CodeWriter");
|
|
|
|
function createCodeGenerator(context) {
|
|
return new CodeGenerator(context);
|
|
}
|
|
|
|
function createCodeWriter(context) {
|
|
return new CodeWriter(context, builder);
|
|
}
|
|
|
|
autotest("fixtures", fixture => {
|
|
let test = fixture.test;
|
|
let resolve = fixture.resolve;
|
|
let snapshot = fixture.snapshot;
|
|
test(done => {
|
|
var main = require(resolve("index.js"));
|
|
var generateCodeFunc = main;
|
|
var skipCodegen = main.skipCodegen === true;
|
|
|
|
var context = new CompileContext(
|
|
"dummy",
|
|
resolve("dummy.marko"),
|
|
builder
|
|
);
|
|
var codegen = createCodeGenerator(context);
|
|
var codeWriter = createCodeWriter(context);
|
|
|
|
var ast = generateCodeFunc(builder, codegen);
|
|
var finalAST = skipCodegen ? ast : codegen.generateCode(ast);
|
|
|
|
codeWriter.write(finalAST);
|
|
|
|
var actualSrc = codeWriter.getCode();
|
|
actualSrc = actualSrc.replace(/marko\/dist\//g, "marko/src/");
|
|
|
|
snapshot(actualSrc, { ext: ".js" });
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe("codegen", function() {
|
|
it("should not allow a return outside a function", function() {
|
|
let builder = compiler.createBuilder();
|
|
|
|
var context = new CompileContext(
|
|
"dummy",
|
|
path.join(__dirname, "dummy.marko"),
|
|
builder
|
|
);
|
|
var codegen = createCodeGenerator(context);
|
|
|
|
var rootNode = builder.program([builder.returnStatement("foo")]);
|
|
|
|
expect(function() {
|
|
codegen.generateCode(rootNode);
|
|
}).to.throw('"return" not allowed outside a function body');
|
|
});
|
|
});
|