| (function () { |
| var Testem = window.Testem |
| var regex = /^((?:not )?ok) (\d+) (.+)$/ |
| |
| Testem.useCustomAdapter(tapAdapter) |
| |
| function tapAdapter(socket){ |
| var results = { |
| failed: 0 |
| , passed: 0 |
| , total: 0 |
| , tests: [] |
| } |
| |
| socket.emit('tests-start') |
| |
| Testem.handleConsoleMessage = function(msg){ |
| var m = msg.match(regex) |
| if (m) { |
| var passed = m[1] === 'ok' |
| var test = { |
| passed: passed ? 1 : 0, |
| failed: passed ? 0 : 1, |
| total: 1, |
| id: m[2], |
| name: m[3], |
| items: [] |
| } |
| |
| if (passed) { |
| results.passed++ |
| } else { |
| console.error("failure", m) |
| |
| results.failed++ |
| } |
| |
| results.total++ |
| |
| // console.log("emitted test", test) |
| socket.emit('test-result', test) |
| results.tests.push(test) |
| } else if (msg === '# ok' || msg.match(/^# tests \d+/)){ |
| // console.log("emitted all test") |
| socket.emit('all-test-results', results) |
| } |
| |
| // return false if you want to prevent the console message from |
| // going to the console |
| // return false |
| } |
| } |
| }()) |