expose stub calls and remove logging on before/after code
All checks were successful
continuous-integration/appveyor/branch AppVeyor build succeeded
All checks were successful
continuous-integration/appveyor/branch AppVeyor build succeeded
This commit is contained in:
parent
15d1ba43f4
commit
17d7bb862c
4 changed files with 135 additions and 22 deletions
|
@ -117,6 +117,7 @@ process.on('uncaughtException', function(err) {
|
||||||
})
|
})
|
||||||
|
|
||||||
function Eltro() {
|
function Eltro() {
|
||||||
|
this.process = process
|
||||||
this.__timeout = 2000
|
this.__timeout = 2000
|
||||||
this.hasExclusive = false
|
this.hasExclusive = false
|
||||||
this.reporter = 'list'
|
this.reporter = 'list'
|
||||||
|
@ -159,8 +160,8 @@ Eltro.prototype.begin = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Eltro.prototype.__runTest = async function(stats, test, prefix = 'Test', child = null) {
|
Eltro.prototype.__runTest = async function(stats, test, prefix = 'Test', child = null) {
|
||||||
if (this.reporter === 'list') {
|
if (this.reporter === 'list' && prefix === 'Test') {
|
||||||
process.stdout.write(' \x1b[90m? ' + test.name + '\x1b[0m')
|
this.process.stdout.write(' \x1b[90m? ' + test.name + '\x1b[0m')
|
||||||
}
|
}
|
||||||
|
|
||||||
let markRealTest = child || test
|
let markRealTest = child || test
|
||||||
|
@ -279,24 +280,24 @@ Eltro.prototype.__runTest = async function(stats, test, prefix = 'Test', child =
|
||||||
this.captureOutsideExceptions = null
|
this.captureOutsideExceptions = null
|
||||||
|
|
||||||
if (this.reporter === 'list') {
|
if (this.reporter === 'list') {
|
||||||
readline.clearLine(process.stdout, 0)
|
readline.clearLine(this.process.stdout, 0)
|
||||||
readline.cursorTo(process.stdout, 0, null)
|
readline.cursorTo(this.process.stdout, 0, null)
|
||||||
if (markRealTest.skipTest) {
|
if (markRealTest.skipTest) {
|
||||||
process.stdout.write(' \x1b[94m- ' + markRealTest.name + '\x1b[0m\n')
|
this.process.stdout.write(' \x1b[94m- ' + markRealTest.name + '\x1b[0m\n')
|
||||||
} else if (!markRealTest.error) {
|
} else if (!markRealTest.error) {
|
||||||
if (!test.name.startsWith('~')) {
|
if (!test.name.startsWith('~')) {
|
||||||
process.stdout.write(' \x1b[32m√\x1b[90m ' + markRealTest.name + ' (' + markRealTest.totalTime + 'ms)\x1b[0m\n')
|
this.process.stdout.write(' \x1b[32m√\x1b[90m ' + markRealTest.name + ' (' + markRealTest.totalTime + 'ms)\x1b[0m\n')
|
||||||
}
|
}
|
||||||
} else if (prefix === 'Test') {
|
} else if (prefix === 'Test') {
|
||||||
process.stdout.write(' \x1b[31m' + this.failedTests.length + ') ' + markRealTest.name + ' (' + markRealTest.totalTime + 'ms)\x1b[0m\n')
|
this.process.stdout.write(' \x1b[31m' + this.failedTests.length + ') ' + markRealTest.name + ' (' + markRealTest.totalTime + 'ms)\x1b[0m\n')
|
||||||
}
|
}
|
||||||
} else if (this.reporter === 'dot') {
|
} else if (this.reporter === 'dot') {
|
||||||
if (markRealTest.skipTest) {
|
if (markRealTest.skipTest) {
|
||||||
process.stdout.write('\x1b[94m.\x1b[0m')
|
this.process.stdout.write('\x1b[94m.\x1b[0m')
|
||||||
} else if (!markRealTest.error) {
|
} else if (markRealTest.error) {
|
||||||
process.stdout.write('\x1b[32m.\x1b[0m')
|
this.process.stdout.write('\x1b[31m.\x1b[0m')
|
||||||
} else if (prefix === 'Test') {
|
} else if (prefix === 'Test') {
|
||||||
process.stdout.write('\x1b[31m.\x1b[0m')
|
this.process.stdout.write('\x1b[32m.\x1b[0m')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,7 +305,7 @@ Eltro.prototype.__runTest = async function(stats, test, prefix = 'Test', child =
|
||||||
Eltro.prototype.__runGroup = async function(g, stats) {
|
Eltro.prototype.__runGroup = async function(g, stats) {
|
||||||
if (g.tests.length) {
|
if (g.tests.length) {
|
||||||
if (this.reporter === 'list') {
|
if (this.reporter === 'list') {
|
||||||
console.log(' ' + g.name)
|
this.process.stdout.write(' ' + g.name + '\n')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (g.before) {
|
if (g.before) {
|
||||||
|
@ -351,8 +352,8 @@ Eltro.prototype.__runGroup = async function(g, stats) {
|
||||||
|
|
||||||
Eltro.prototype.run = async function() {
|
Eltro.prototype.run = async function() {
|
||||||
if (this.reporter && this.reporter !== 'test') {
|
if (this.reporter && this.reporter !== 'test') {
|
||||||
console.log('')
|
this.process.stdout.write('' + '\n')
|
||||||
console.log('')
|
this.process.stdout.write('' + '\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
captureUnknownErrors(this)
|
captureUnknownErrors(this)
|
||||||
|
@ -381,23 +382,23 @@ Eltro.prototype.run = async function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (this.reporter) {
|
} else if (this.reporter) {
|
||||||
console.log('')
|
this.process.stdout.write('' + '\n')
|
||||||
console.log('')
|
this.process.stdout.write('' + '\n')
|
||||||
if (stats.passed) {
|
if (stats.passed) {
|
||||||
console.log(' \x1b[32m' + stats.passed + ' passing \x1b[90m(' + (end[0] * 1000 + Math.round(end[1] / 1000000)) + 'ms)\x1b[0m')
|
this.process.stdout.write(' \x1b[32m' + stats.passed + ' passing \x1b[90m(' + (end[0] * 1000 + Math.round(end[1] / 1000000)) + 'ms)\x1b[0m' + '\n')
|
||||||
}
|
}
|
||||||
if (stats.failed) {
|
if (stats.failed) {
|
||||||
console.log(' \x1b[31m' + stats.failed + ' failing\x1b[0m')
|
this.process.stdout.write(' \x1b[31m' + stats.failed + ' failing\x1b[0m' + '\n')
|
||||||
}
|
}
|
||||||
if (stats.skipped) {
|
if (stats.skipped) {
|
||||||
console.log(' \x1b[94m' + stats.skipped + ' pending\x1b[0m')
|
this.process.stdout.write(' \x1b[94m' + stats.skipped + ' pending\x1b[0m' + '\n')
|
||||||
}
|
}
|
||||||
console.log('')
|
this.process.stdout.write('' + '\n')
|
||||||
|
|
||||||
if (this.failedTests.length) {
|
if (this.failedTests.length) {
|
||||||
for (let x = 0; x < this.failedTests.length; x++) {
|
for (let x = 0; x < this.failedTests.length; x++) {
|
||||||
let test = this.failedTests[x];
|
let test = this.failedTests[x];
|
||||||
console.log(' ' + (x + 1) + ') ' + test.name + ':')
|
this.process.stdout.write(' ' + (x + 1) + ') ' + test.name + ':' + '\n')
|
||||||
printError(test.error)
|
printError(test.error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ export function stub(returnFunc = null) {
|
||||||
func.lastCall = null
|
func.lastCall = null
|
||||||
func.called = false
|
func.called = false
|
||||||
func.callCount = 0
|
func.callCount = 0
|
||||||
|
func.calls = calls
|
||||||
|
|
||||||
func.findCall = function(fn) {
|
func.findCall = function(fn) {
|
||||||
for (let call of calls) {
|
for (let call of calls) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "eltro",
|
"name": "eltro",
|
||||||
"version": "1.4.5",
|
"version": "1.4.6",
|
||||||
"description": "Eltro is a tiny no-dependancy test framework for node",
|
"description": "Eltro is a tiny no-dependancy test framework for node",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -8,6 +8,9 @@ function CreateT() {
|
||||||
t.logger = {
|
t.logger = {
|
||||||
log: stub()
|
log: stub()
|
||||||
}
|
}
|
||||||
|
t.process = {
|
||||||
|
stdout: { write: stub() }
|
||||||
|
}
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,6 +287,60 @@ e.describe('#beforeEach()', function() {
|
||||||
assert.match(t.logger.log.getCallN(4)[0], /DDDD/)
|
assert.match(t.logger.log.getCallN(4)[0], /DDDD/)
|
||||||
assert.match(t.logger.log.getCallN(4)[0], /BBBB/)
|
assert.match(t.logger.log.getCallN(4)[0], /BBBB/)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
e.describe('reporter', function() {
|
||||||
|
e.test('should not log before each with reporter list', async function() {
|
||||||
|
const t = CreateT()
|
||||||
|
t.reporter = 'list'
|
||||||
|
t.begin()
|
||||||
|
t.describe('BBBB', function() {
|
||||||
|
t.beforeEach(function() {})
|
||||||
|
|
||||||
|
t.describe('CCCC', function() {
|
||||||
|
t.test('c1', function() { })
|
||||||
|
t.test('c2', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.describe('DDDD', function() {
|
||||||
|
t.test('d1', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('AAAA', function() { })
|
||||||
|
})
|
||||||
|
await t.run()
|
||||||
|
for (let row of t.process.stdout.write.calls) {
|
||||||
|
assert.notMatch(row.filter(x => x).join(' '), /before each/i)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
e.test('should not log success before each with reporter dot', async function() {
|
||||||
|
const t = CreateT()
|
||||||
|
t.reporter = 'dot'
|
||||||
|
t.begin()
|
||||||
|
t.describe('BBBB', function() {
|
||||||
|
t.beforeEach(function() {})
|
||||||
|
|
||||||
|
t.describe('CCCC', function() {
|
||||||
|
t.test('c1', function() { })
|
||||||
|
t.test('c2', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.describe('DDDD', function() {
|
||||||
|
t.test('d1', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('AAAA', function() { })
|
||||||
|
})
|
||||||
|
await t.run()
|
||||||
|
let total = 0
|
||||||
|
for (let row of t.process.stdout.write.calls) {
|
||||||
|
if (row.filter(x => x).join(' ').match(/\[32m\./)) {
|
||||||
|
total++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert.strictEqual(total, 4)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
e.describe('#after()', function() {
|
e.describe('#after()', function() {
|
||||||
|
@ -679,6 +736,60 @@ e.describe('#afterEach()', function() {
|
||||||
assert.match(t.logger.log.getCallN(5)[0], /JJJJ/)
|
assert.match(t.logger.log.getCallN(5)[0], /JJJJ/)
|
||||||
assert.match(t.logger.log.getCallN(5)[0], /YYYY/)
|
assert.match(t.logger.log.getCallN(5)[0], /YYYY/)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
e.describe('reporter', function() {
|
||||||
|
e.test('should not log before each with reporter list', async function() {
|
||||||
|
const t = CreateT()
|
||||||
|
t.reporter = 'list'
|
||||||
|
t.begin()
|
||||||
|
t.describe('BBBB', function() {
|
||||||
|
t.afterEach(function() {})
|
||||||
|
|
||||||
|
t.describe('CCCC', function() {
|
||||||
|
t.test('c1', function() { })
|
||||||
|
t.test('c2', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.describe('DDDD', function() {
|
||||||
|
t.test('d1', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('AAAA', function() { })
|
||||||
|
})
|
||||||
|
await t.run()
|
||||||
|
for (let row of t.process.stdout.write.calls) {
|
||||||
|
assert.notMatch(row.filter(x => x).join(' '), /after each/i)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
e.test('should not log success before each with reporter dot', async function() {
|
||||||
|
const t = CreateT()
|
||||||
|
t.reporter = 'dot'
|
||||||
|
t.begin()
|
||||||
|
t.describe('BBBB', function() {
|
||||||
|
t.afterEach(function() {})
|
||||||
|
|
||||||
|
t.describe('CCCC', function() {
|
||||||
|
t.test('c1', function() { })
|
||||||
|
t.test('c2', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.describe('DDDD', function() {
|
||||||
|
t.test('d1', function() { })
|
||||||
|
})
|
||||||
|
|
||||||
|
t.test('AAAA', function() { })
|
||||||
|
})
|
||||||
|
await t.run()
|
||||||
|
let total = 0
|
||||||
|
for (let row of t.process.stdout.write.calls) {
|
||||||
|
if (row.filter(x => x).join(' ').match(/\[32m\./)) {
|
||||||
|
total++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert.strictEqual(total, 4)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
let commonBeforeTests = ['before', 'beforeEach']
|
let commonBeforeTests = ['before', 'beforeEach']
|
||||||
|
|
Loading…
Reference in a new issue