chocolate
Version:
A full stack Node.js web framework built using Coffeescript
229 lines (212 loc) • 7.83 kB
JavaScript
// Generated by CoffeeScript 1.12.6
(function() {
var Specolate, _module, available, finished, log,
hasProp = {}.hasOwnProperty;
log = [];
available = true;
finished = true;
Specolate = (function() {
function Specolate() {}
Specolate.html_reporter = function(module_filename, options, callback) {
var j, len, line, needs_refresh, result;
if (available) {
Specolate.report(module_filename, options, callback);
}
needs_refresh = !finished ? '<head>\n<meta http-equiv="refresh" content="1">\n</head>' : '';
available = finished;
result = '<html>\n' + needs_refresh + '\n<body>\n';
for (j = 0, len = log.length; j < len; j++) {
line = log[j];
result += '<div>' + line.replace(/\ /g, ' ') + '</div>';
}
return result += '</body>\n</html>';
};
Specolate.json_reporter = function(module_filename, options, callback) {
var event;
if (available) {
event = Specolate.report(module_filename, options, callback != null ? (function() {
available = finished;
return callback.apply(null, arguments);
}) : void 0);
if (event != null) {
event.on('end', function() {
return available = finished;
});
}
return event;
} else {
return '';
}
};
Specolate.get_extension = function(path) {
if ((path = path.substr(1 + path.lastIndexOf('/'))).indexOf('.') === -1) {
return '';
} else {
return '.' + path.split('.').slice(-1)[0];
}
};
Specolate.get_spec_filename = function(path) {
var ext, ref;
if (path === '') {
return '';
}
if ((ref = (ext = Specolate.get_extension(path))) !== '' && ref !== '.') {
return path.replace(ext, '.spec' + ext);
}
return path + '.spec';
};
Specolate.inspect = function(reporter, module_filename, options, callback) {
var report;
if ((report = Specolate[reporter + '_reporter']) != null) {
return report(module_filename, options, callback);
}
};
Specolate.report = function(module_filename, options, callback) {
var context, error, event, host, k, reporter, result, specolate_filename, stack, v, vm;
if (!finished) {
return '';
}
host = typeof window !== "undefined" && window !== null ? window : {
__: options
};
event = null;
log = [];
log.failedCount = 0;
log.totalCount = 0;
available = false;
finished = false;
specolate_filename = Specolate.get_spec_filename(module_filename);
reporter = {
log: function() {},
reportSpecStarting: function(runner) {},
reportRunnerStarting: function(runner) {},
reportSuiteResults: function(suite) {},
reportSpecResults: function(spec) {},
reportRunnerResults: function(runner) {
var _log, cache, count, description, i, j, k, l, len, len1, len2, m, one_log, path, ref, ref1, ref2, ref3, result, spaces, spec, specResults, suite;
ref = runner.suites();
for (j = 0, len = ref.length; j < len; j++) {
suite = ref[j];
specResults = suite.results();
path = [];
while (suite) {
path.unshift(suite.description);
suite = suite.parentSuite;
}
description = path.join('.');
spaces = ((function() {
var l, ref1, results;
results = [];
for (i = l = 0, ref1 = 2 * path.length; 0 <= ref1 ? l < ref1 : l > ref1; i = 0 <= ref1 ? ++l : --l) {
results.push(' ');
}
return results;
})()).join('');
one_log = [];
one_log.push(spaces + 'spec : ' + description);
ref1 = specResults.items_;
for (l = 0, len1 = ref1.length; l < len1; l++) {
spec = ref1[l];
if (spec.description) {
one_log.push(spaces + ' it ' + spec.description + ': ');
ref2 = spec.items_;
for (i = m = 0, len2 = ref2.length; m < len2; i = ++m) {
result = ref2[i];
[].splice.apply(one_log, [-1, 9e9].concat(ref3 = one_log.slice(-1) + (i > 0 ? ',' : '') + ' ' + result.message)), ref3;
if (!result.passed_) {
log.failedCount += 1;
}
log.totalCount += 1;
}
}
}
log.push.apply(log, one_log);
}
_log = ['results : ' + log.failedCount + ' failed out of ' + log.totalCount, '', 'started at ' + new Date(), '', 'finished at ' + new Date()];
[].splice.apply(_log, [3, -4].concat(log)), log;
count = {
failed: log.failedCount,
total: log.totalCount
};
log = _log;
finished = true;
cache = typeof window !== "undefined" && window !== null ? window.modules : require.cache;
for (k in cache) {
if (!hasProp.call(cache, k)) continue;
if (!(k.indexOf('.spec') !== -1)) {
continue;
}
delete cache[k];
cache[k] = null;
}
result = {
log: log,
count: count
};
if (callback != null) {
callback(result);
} else {
process.nextTick(function() {
return event != null ? event.emit('end', result) : void 0;
});
}
return runner.suites().length = 0;
}
};
try {
if (typeof window === "undefined" || window === null) {
vm = require('vm');
context = vm.createContext({
reporter: reporter,
host: host
});
for (k in global) {
if (!hasProp.call(global, k)) continue;
v = global[k];
context[k] = v;
}
context.module = module;
context.require = require;
context.global = context;
context.global.global = context;
event = vm.runInContext("var Events, event, k;\nEvents = require('events');\nevent = new Events.EventEmitter;\nhost.jasmine = require('jasmine-node');\ntry { require('" + specolate_filename + "'); } catch (_error) {}\nhost.jasmine.getEnv().reporter = reporter;\nhost.jasmine.getEnv().__ = host.__;\ntry { host.jasmine.getEnv().execute(); } catch (_error) { process.nextTick(function() {event.emit('end', {count:{failed:1,total:1},log:[\"\", \"\", _error.toString()]});}) }\nevent;", context, specolate_filename);
} else {
require('../' + specolate_filename, {
use_cache: false
});
host.jasmine.getEnv().reporter = reporter;
host.jasmine.getEnv().execute();
}
} catch (error1) {
error = error1;
finished = true;
try {
stack = error.stack;
} catch (error1) {
stack = error.toString();
}
result = {
log: ['', '', '', stack],
count: {
failed: 1,
total: 1
}
};
if (callback != null) {
callback(result);
} else {
process.nextTick(function() {
return event != null ? event.emit('end', result) : void 0;
});
}
}
return event;
};
Specolate.has_finished = function() {
return finished;
};
return Specolate;
})();
_module = typeof window !== "undefined" && window !== null ? window : module;
_module[_module.exports != null ? "exports" : "Specolate"] = Specolate;
}).call(this);