Skip to content

Commit

Permalink
[IMP] js testing
Browse files Browse the repository at this point in the history
- output "error" if any qunit tests failed
- failed js tests are logged as errors
- when running phantomjs considere empty waiting condition or initialisation code as "true"
- lint phantomtest.js file
  • Loading branch information
KangOl committed Jun 22, 2014
1 parent e7ccf52 commit 4cd699d
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 12 deletions.
2 changes: 2 additions & 0 deletions addons/web/views/webclient_templates.xml
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,8 @@
QUnit.done(function(result) {
if (result.failed === 0) {
console.log('ok');
} else {
console.log('error');
}
});
openerp.web.qweb.add_template("/web/webclient/qweb");
Expand Down
5 changes: 3 additions & 2 deletions openerp/modules/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,11 +384,12 @@ def write(self, s):
if self.r.match(s):
return
first = True
for c in s.split('\n'):
level = logging.ERROR if s.startswith(('ERROR', 'FAIL', 'Traceback')) else logging.INFO
for c in s.splitlines():
if not first:
c = '` ' + c
first = False
self.logger.info(c)
self.logger.log(level, c)

current_test = None

Expand Down
23 changes: 13 additions & 10 deletions openerp/tests/phantomtest.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
// Phantomjs openerp helper
// Phantomjs odoo helper
// jshint evil: true, loopfunc: true

function waitFor (ready, callback, timeout, timeoutMessageCallback) {
function waitFor (condition, callback, timeout, timeoutMessageCallback) {
timeout = timeout || 10000;
var start = new Date;
var start = new Date();

(function waitLoop() {
if(new Date - start > timeout) {
if(new Date() - start > timeout) {
console.log('error', timeoutMessageCallback ? timeoutMessageCallback() : "Timeout after "+timeout+" ms");
phantom.exit(1);
} else if (ready()) {
} else if (condition()) {
callback();
} else {
setTimeout(waitLoop, 250);
Expand Down Expand Up @@ -44,7 +45,7 @@ function PhantomTest() {
}
return result.join('');
}));
msg.push('(leaf frame on top)')
msg.push('(leaf frame on top)');
}
console.log('error', JSON.stringify(msg.join('\n')));
phantom.exit(1);
Expand Down Expand Up @@ -86,9 +87,9 @@ function PhantomTest() {
};
setTimeout(function () {
self.page.evaluate(function () {
var message = ("Timeout\nhref: " + window.location.href
+ "\nreferrer: " + document.referrer
+ "\n\n" + (document.body && document.body.innerHTML)).replace(/[^a-z0-9\s~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, "*");
var message = ("Timeout\nhref: " + window.location.href +
"\nreferrer: " + document.referrer +
"\n\n" + (document.body && document.body.innerHTML)).replace(/[^a-z0-9\s~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, "*");
console.log('error', message);
phantom.exit(1);
});
Expand All @@ -107,6 +108,8 @@ function PhantomTest() {
url_path = "/login?" + qp.join('&');
}
var url = self.origin + url_path;
code = code || "true";
ready = ready || "true";
self.page.open(url, function(status) {
if (status !== 'success') {
console.log('error', "failed to load " + url);
Expand All @@ -115,7 +118,7 @@ function PhantomTest() {
console.log('loaded', url, status);
// process ready
waitFor(function() {
console.log("PhantomTest.run: wait for condition: " + ready);
console.log("PhantomTest.run: wait for condition:", ready);
return self.page.evaluate(function (ready) {
var r = false;
try {
Expand Down

0 comments on commit 4cd699d

Please sign in to comment.