change behaviour of tests and browser testing/build

This commit is contained in:
Sebastian McKenzie
2014-11-04 08:03:52 +11:00
parent 225754ae12
commit 2a0efceef5
15 changed files with 143 additions and 167 deletions

View File

@@ -1,3 +1,6 @@
var transform = require("./transform");
Error.captureStackTrace = Error.captureStackTrace || function (obj) {
obj.stack = [{ toString: null }];
};
module.exports = transform;
exports.generate = require("./generator");
exports.transform = require("./transform");

View File

@@ -1,10 +1,11 @@
module.exports = transform;
var Transformer = require("./transformer");
var sourceMap = require("source-map");
var generate = require("./generator");
var assert = require("assert");
var File = require("./file");
var util = require("./util");
var chai = require("chai");
var _ = require("lodash");
function transform(code, opts) {
@@ -15,66 +16,6 @@ function transform(code, opts) {
return file.parse(code);
}
transform.test = function (task, assert) {
var actual = task.actual;
var expect = task.expect;
var opts = task.options;
var exec = task.exec;
var getOpts = function (filename) {
return _.merge({
whtiespace: true,
filename: filename
}, opts);
};
var execCode = exec.code.trim();
var result;
if (execCode) {
result = transform(execCode, getOpts(exec.filename));
execCode = result.code;
require("./polyfill");
try {
var fn = new Function("assert", execCode);
fn(assert);
} catch (err) {
err.message += util.codeFrame(execCode);
throw err;
}
} else {
var actualCode = actual.code.trim();
var expectCode = expect.code.trim();
result = transform(actualCode, getOpts(actual.filename));
actualCode = result.code;
try {
assert.equal(actualCode, expectCode);
} catch (err) {
err.showDiff = true;
throw err;
}
}
if (task.sourceMap) {
assert.deepEqual(task.sourceMap, result.map);
}
if (task.sourceMappings) {
var consumer = new sourceMap.SourceMapConsumer(result.map);
_.each(task.sourceMappings, function (mapping, i) {
var expect = mapping.original;
var actual = consumer.originalPositionFor(mapping.generated);
assert.equal(actual.line + ":" + actual.column, expect.line + ":" + expect.column);
});
}
};
transform._ensureTransformerNames = function (type, keys) {
_.each(keys, function (key) {
if (!_.has(transform.transformers, key)) {