Fixes #506 - Fixed how compiler options are handled by the node-require hook

This commit is contained in:
Patrick Steele-Idem 2017-01-05 17:10:12 -07:00
parent d6719f3ce4
commit 0f3de25560
7 changed files with 59 additions and 7 deletions

View File

@ -13,12 +13,12 @@ function normalizeExtension(extension) {
}
function compile(templatePath, markoCompiler, compilerOptions) {
if (compilerOptions) {
compilerOptions = markoCompiler.defaultOptions;
} else {
compilerOptions = Object.assign({}, markoCompiler.defaultOptions, compilerOptions);
} else {
compilerOptions = markoCompiler.defaultOptions;
}
var writeToDisk = compilerOptions.writeToDisk;
var templateSrc;
@ -124,10 +124,7 @@ function install(options) {
extensions.forEach((extension) => {
extension = normalizeExtension(extension);
if (!requireExtensions[extension]) {
requireExtensions[extension] = markoRequireExtension;
}
requireExtensions[extension] = markoRequireExtension;
});
}

View File

@ -1,3 +1,19 @@
var expect = require('chai').expect;
var fs = require('fs');
function compileAndCheck(path, shouldWriteToDisk) {
var resolved = require.resolve(path);
var compiledFile = resolved + '.js';
try {
fs.unlinkSync(compiledFile);
} catch(e) {}
require(resolved);
expect(fs.existsSync(compiledFile)).to.equal(shouldWriteToDisk);
}
exports.check = function(marko, markoCompiler, expect, done) {
markoCompiler.configure({
writeToDisk: true,
@ -7,6 +23,8 @@ exports.check = function(marko, markoCompiler, expect, done) {
expect(markoCompiler.config.writeToDisk).to.equal(true);
expect(markoCompiler.config.preserveWhitespace).to.equal(true);
compileAndCheck('./a.marko', true /* should write to disk */);
require('marko/node-require').install({
compilerOptions: {
writeToDisk: false,
@ -17,8 +35,41 @@ exports.check = function(marko, markoCompiler, expect, done) {
expect(markoCompiler.config.writeToDisk).to.equal(false);
expect(markoCompiler.config.preserveWhitespace).to.equal(false);
markoCompiler.configure({
writeToDisk: true,
preserveWhitespace: true
});
expect(markoCompiler.config.writeToDisk).to.equal(true);
expect(markoCompiler.config.preserveWhitespace).to.equal(true);
compileAndCheck('./b.marko', false /* should write to disk */);
markoCompiler.configure(); // Reset to defaults
expect(markoCompiler.config.writeToDisk).to.equal(true);
expect(markoCompiler.config.preserveWhitespace).to.equal(false);
require('marko/node-require').install({
compilerOptions: {
writeToDisk: true,
preserveWhitespace: false
}
});
compileAndCheck('./c.marko', true /* should write to disk */);
require('marko/node-require').install({
compilerOptions: {
preserveWhitespace: false
}
});
markoCompiler.configure({
writeToDisk: false,
preserveWhitespace: true
});
compileAndCheck('./d.marko', false /* should write to disk */);
done();
};

View File

@ -4,6 +4,10 @@ var fs = require('fs');
exports.check = function(marko, markoCompiler, expect, done) {
var compiledPath;
require('marko/compiler').configure({
writeToDisk: true
});
try {
var templatePath = nodePath.join(__dirname, 'template.marko');
compiledPath = nodePath.join(__dirname, 'template.marko.js');