Add compiled version of mocha-phantomjs.js

This commit is contained in:
Tom Payne
2013-09-18 11:25:25 +01:00
parent c0486f6f65
commit 98ba6b63a4

468
test/mocha-phantomjs.js Normal file
View File

@@ -0,0 +1,468 @@
// Generated by CoffeeScript 1.6.3
(function() {
var Doc, Dot, HtmlCov, Json, JsonCov, List, Min, Reporter, Spec, Tap, Teamcity, USAGE, Xunit, config, error, reporter, reporterKlass, reporterString, s, system, webpage,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
system = require('system');
webpage = require('webpage');
USAGE = "Usage: phantomjs mocha-phantomjs.coffee URL REPORTER [CONFIG]";
Reporter = (function() {
function Reporter(reporter, config) {
this.reporter = reporter;
this.config = config;
this.checkStarted = __bind(this.checkStarted, this);
this.waitForRunMocha = __bind(this.waitForRunMocha, this);
this.waitForInitMocha = __bind(this.waitForInitMocha, this);
this.waitForMocha = __bind(this.waitForMocha, this);
this.url = system.args[1];
this.columns = parseInt(system.env.COLUMNS || 75) * .75 | 0;
this.mochaStarted = false;
this.mochaStartWait = this.config.timeout || 6000;
this.startTime = Date.now();
if (!this.url) {
this.fail(USAGE);
}
}
Reporter.prototype.run = function() {
this.initPage();
return this.loadPage();
};
Reporter.prototype.customizeRunner = function(options) {
return void 0;
};
Reporter.prototype.customizeProcessStdout = function(options) {
return void 0;
};
Reporter.prototype.customizeConsole = function(options) {
return void 0;
};
Reporter.prototype.customizeOptions = function() {
return {
columns: this.columns
};
};
Reporter.prototype.fail = function(msg, errno) {
if (msg) {
console.log(msg);
}
return phantom.exit(errno || 1);
};
Reporter.prototype.finish = function() {
return phantom.exit(this.page.evaluate(function() {
return mochaPhantomJS.failures;
}));
};
Reporter.prototype.initPage = function() {
var name, value, _ref,
_this = this;
this.page = webpage.create({
settings: this.config.settings
});
if (this.config.headers) {
this.page.customHeaders = this.config.headers;
}
_ref = this.config.cookies;
for (name in _ref) {
value = _ref[name];
this.page.addCookie({
name: name,
value: value
});
}
if (this.config.viewportSize) {
this.page.viewportSize = this.config.viewportSize;
}
this.page.onConsoleMessage = function(msg) {
return console.log(msg);
};
return this.page.onInitialized = function() {
return _this.page.evaluate(function() {
return window.mochaPhantomJS = {
failures: 0,
ended: false,
started: false,
run: function() {
mochaPhantomJS.started = true;
return window.callPhantom('mochaPhantomJS.run');
}
};
});
};
};
Reporter.prototype.loadPage = function() {
var _this = this;
this.page.open(this.url);
this.page.onLoadFinished = function(status) {
_this.page.onLoadFinished = function() {};
if (status !== 'success') {
_this.onLoadFailed();
}
return _this.waitForInitMocha();
};
return this.page.onCallback = function(data) {
if (data === 'mochaPhantomJS.run') {
if (_this.injectJS()) {
return _this.waitForRunMocha();
}
}
};
};
Reporter.prototype.onLoadFailed = function() {
return this.fail("Failed to load the page. Check the url: " + this.url);
};
Reporter.prototype.injectJS = function() {
if (this.page.evaluate(function() {
return window.mocha != null;
})) {
this.page.injectJs('mocha-phantomjs/core_extensions.js');
this.page.evaluate(this.customizeProcessStdout, this.customizeOptions());
this.page.evaluate(this.customizeConsole, this.customizeOptions());
return true;
} else {
this.fail("Failed to find mocha on the page.");
return false;
}
};
Reporter.prototype.runMocha = function() {
if (this.config.useColors === false) {
this.page.evaluate(function() {
return Mocha.reporters.Base.useColors = false;
});
}
this.page.evaluate(this.runner, this.reporter);
this.mochaStarted = this.page.evaluate(function() {
return mochaPhantomJS.runner || false;
});
if (this.mochaStarted) {
this.mochaRunAt = new Date().getTime();
this.page.evaluate(this.customizeRunner, this.customizeOptions());
return this.waitForMocha();
} else {
return this.fail("Failed to start mocha.");
}
};
Reporter.prototype.waitForMocha = function() {
var ended;
ended = this.page.evaluate(function() {
return mochaPhantomJS.ended;
});
if (ended) {
return this.finish();
} else {
return setTimeout(this.waitForMocha, 100);
}
};
Reporter.prototype.waitForInitMocha = function() {
if (!this.checkStarted()) {
return setTimeout(this.waitForInitMocha, 100);
}
};
Reporter.prototype.waitForRunMocha = function() {
if (this.checkStarted()) {
return this.runMocha();
} else {
return setTimeout(this.waitForRunMocha, 100);
}
};
Reporter.prototype.checkStarted = function() {
var started;
started = this.page.evaluate(function() {
return mochaPhantomJS.started;
});
if (!started && this.mochaStartWait && this.startTime + this.mochaStartWait < Date.now()) {
this.fail("Failed to start mocha: Init timeout", 255);
}
return started;
};
Reporter.prototype.runner = function(reporter) {
var cleanup, error, _ref, _ref1;
try {
mocha.setup({
reporter: reporter
});
mochaPhantomJS.runner = mocha.run();
if (mochaPhantomJS.runner) {
cleanup = function() {
mochaPhantomJS.failures = mochaPhantomJS.runner.failures;
return mochaPhantomJS.ended = true;
};
if ((_ref = mochaPhantomJS.runner) != null ? (_ref1 = _ref.stats) != null ? _ref1.end : void 0 : void 0) {
return cleanup();
} else {
return mochaPhantomJS.runner.on('end', cleanup);
}
}
} catch (_error) {
error = _error;
return false;
}
};
return Reporter;
})();
Spec = (function(_super) {
__extends(Spec, _super);
function Spec(config) {
Spec.__super__.constructor.call(this, 'spec', config);
}
Spec.prototype.customizeProcessStdout = function(options) {
return process.stdout.write = function(string) {
if (string === process.cursor.deleteLine || string === process.cursor.beginningOfLine) {
return;
}
return console.log(string);
};
};
Spec.prototype.customizeConsole = function(options) {
var origLog;
process.cursor.CRMatcher = /\s+◦\s\S/;
process.cursor.CRCleaner = process.cursor.up + process.cursor.deleteLine;
origLog = console.log;
return console.log = function() {
var string;
string = console.format.apply(console, arguments);
if (string.match(process.cursor.CRMatcher)) {
process.cursor.CRCleanup = true;
} else if (process.cursor.CRCleanup) {
string = process.cursor.CRCleaner + string;
process.cursor.CRCleanup = false;
}
return origLog.call(console, string);
};
};
return Spec;
})(Reporter);
Dot = (function(_super) {
__extends(Dot, _super);
function Dot(config) {
Dot.__super__.constructor.call(this, 'dot', config);
}
Dot.prototype.customizeProcessStdout = function(options) {
process.cursor.margin = 2;
process.cursor.CRMatcher = /\u001b\[\d\dm\\u001b\[0m/;
process.stdout.columns = options.columns;
process.stdout.allowedFirstNewLine = false;
return process.stdout.write = function(string) {
var forward;
if (string === '\n ') {
if (!process.stdout.allowedFirstNewLine) {
process.stdout.allowedFirstNewLine = true;
} else {
return;
}
} else if (string.match(process.cursor.CRMatcher)) {
if (process.cursor.count === process.stdout.columns) {
process.cursor.count = 0;
forward = process.cursor.margin;
string = process.cursor.forwardN(forward) + string;
} else {
forward = process.cursor.margin + process.cursor.count;
string = process.cursor.up + process.cursor.forwardN(forward) + string;
}
++process.cursor.count;
}
return console.log(string);
};
};
return Dot;
})(Reporter);
Tap = (function(_super) {
__extends(Tap, _super);
function Tap(config) {
Tap.__super__.constructor.call(this, 'tap', config);
}
return Tap;
})(Reporter);
List = (function(_super) {
__extends(List, _super);
function List(config) {
List.__super__.constructor.call(this, 'list', config);
}
List.prototype.customizeProcessStdout = function(options) {
return process.stdout.write = function(string) {
if (string === process.cursor.deleteLine || string === process.cursor.beginningOfLine) {
return;
}
return console.log(string);
};
};
List.prototype.customizeProcessStdout = function(options) {
var origLog;
process.cursor.CRMatcher = /\u001b\[90m.*:\s\u001b\[0m/;
process.cursor.CRCleaner = function(string) {
return process.cursor.up + process.cursor.deleteLine + string + process.cursor.up + process.cursor.up;
};
origLog = console.log;
return console.log = function() {
var string;
string = console.format.apply(console, arguments);
if (string.match(/\u001b\[32m\s\s-\u001b\[0m/)) {
string = string;
process.cursor.CRCleanup = false;
}
if (string.match(process.cursor.CRMatcher)) {
process.cursor.CRCleanup = true;
} else if (process.cursor.CRCleanup) {
string = process.cursor.CRCleaner(string);
process.cursor.CRCleanup = false;
}
return origLog.call(console, string);
};
};
return List;
})(Reporter);
Min = (function(_super) {
__extends(Min, _super);
function Min(config) {
Min.__super__.constructor.call(this, 'min', config);
}
return Min;
})(Reporter);
Doc = (function(_super) {
__extends(Doc, _super);
function Doc(config) {
Doc.__super__.constructor.call(this, 'doc', config);
}
return Doc;
})(Reporter);
Teamcity = (function(_super) {
__extends(Teamcity, _super);
function Teamcity(config) {
Teamcity.__super__.constructor.call(this, 'teamcity', config);
}
return Teamcity;
})(Reporter);
Xunit = (function(_super) {
__extends(Xunit, _super);
function Xunit(config) {
Xunit.__super__.constructor.call(this, 'xunit', config);
}
return Xunit;
})(Reporter);
Json = (function(_super) {
__extends(Json, _super);
function Json(config) {
Json.__super__.constructor.call(this, 'json', config);
}
return Json;
})(Reporter);
JsonCov = (function(_super) {
__extends(JsonCov, _super);
function JsonCov(config) {
JsonCov.__super__.constructor.call(this, 'json-cov', config);
}
return JsonCov;
})(Reporter);
HtmlCov = (function(_super) {
__extends(HtmlCov, _super);
function HtmlCov(config) {
HtmlCov.__super__.constructor.call(this, 'html-cov', config);
}
return HtmlCov;
})(Reporter);
reporterString = system.args[2] || 'spec';
reporterString = ((function() {
var _i, _len, _ref, _results;
_ref = reporterString.split('-');
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
s = _ref[_i];
_results.push("" + (s.charAt(0).toUpperCase()) + (s.slice(1)));
}
return _results;
})()).join('');
reporterKlass = (function() {
try {
return eval(reporterString);
} catch (_error) {
error = _error;
return void 0;
}
})();
config = JSON.parse(system.args[3] || '{}');
if (reporterKlass) {
reporter = new reporterKlass(config);
reporter.run();
} else {
console.log("Reporter class not implemented: " + reporterString);
phantom.exit(1);
}
}).call(this);