UNPKG

ares-ide

Version:

A browser-based code editor and UI designer for Enyo 2 projects

68 lines (66 loc) 2.24 kB
// UI kind responsible for creating test component, running tests, receiving & displaying test results. enyo.kind({ name: "enyo.TestReporter", kind: enyo.Control, published: { results: null }, events: { onFinishAll: "" }, components: [ {name: "title", classes: "enyo-testcase-title"}, {name: "group", classes: "enyo-testcase-group"} ], classes: "enyo-testcase", timeout: 3000, create: function() { this.inherited(arguments); this.$.title.setContent(this.name); }, initComponents: function() { this.inherited(arguments); this.createComponent({name: "testSuite", kind: this.name, onBegin: "testBegun", onFinish: "updateTestDisplay"}); }, runTests: function() { this.$.testSuite.runAllTests(); }, testBegun: function(inSender, inEvent) { this.$.group.createComponent({name: inEvent.testName, classes: "enyo-testcase-running", content: inEvent.testName + ": running", allowHtml: true}).render(); }, formatStackTrace: function(inStack) { var stack = inStack.split("\n"); var out = ['']; for (var i=0, s; (s=stack[i]); i++) { if (s.indexOf(" at Object.do") === 0 || s.indexOf(" at Object.dispatch") === 0 || s.indexOf("TestSuite.js") != -1) { continue; } out.push(s); } return out.join("<br/>"); }, updateTestDisplay: function(inSender, inEvent) { var results = inEvent.results; var e = results.exception; var info = this.$.group.$[results.name]; var content = "<b>" + results.name + "</b>: " + (results.passed ? "PASSED" : results.message); if (e) { // If we have an exception include the stack trace or file/line number. if (e.stack) { content += this.formatStackTrace(e.stack); } else if (e.sourceURL && e.line) { content += "<br/>" + e.sourceURL + ":" + e.line; } // if fail was called with an object, show the JSON. This is likely a service request error or somesuch. if (results.failValue) { content += "<br/>" + enyo.json.stringify(results.failValue).replace(/\\n/g, "<br/>"); } } // Show logs if we have any. if (!results.passed && results.logs) { content += "<br/>" + results.logs.join("<br/>"); } info.setContent(content); info.setClasses("enyo-testcase-" + (results.passed ? "passed" : "failed")); } });