Skip to content

Commit ce6b3b6

Browse files
authored
Use node test runner (#1845)
## Checklist use `node --test` instead of `jest` See: #1837 (comment) - [X] I have ensured my pull request is not behind the main or master branch of the original repository. - [X] I have rebased all commits where necessary so that reviewing this pull request can be done without having to merge it first. - [X] I have written a commit message that passes commitlint linting. - [X] I have ensured that my code changes pass linting tests. - [X] I have ensured that my code changes pass unit tests. - [X] I have described my pull request and the reasons for code changes along with context if necessary.
1 parent 988ebec commit ce6b3b6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1842
-4828
lines changed

.github/workflows/node.js.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ jobs:
2323
node-version: ${{ matrix.node-version }}
2424
- run: npm ci
2525
- run: npm run lint
26-
- run: npm test -- --coverage --maxWorkers 2
26+
- run: npm run test:coverage
2727
- run: npx codecov
2828
continue-on-error: true

__tests__/application/compose.js __tests__/application/compose.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/application/context.js __tests__/application/context.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/application/currentContext.js __tests__/application/currentContext.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/application/index.js __tests__/application/index.test.js

+3-24
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')
67

78
describe('app', () => {
89
// ignore test on Node.js v18
9-
(/^v18\./.test(process.version) ? it.skip : it)('should handle socket errors', done => {
10+
(/^v18\./.test(process.version) ? it.skip : it)('should handle socket errors', (t, done) => {
1011
const app = new Koa()
1112

1213
app.use((ctx, next) => {
@@ -24,28 +25,6 @@ describe('app', () => {
2425
.end(() => {})
2526
})
2627

27-
it('should not .writeHead when !socket.writable', done => {
28-
const app = new Koa()
29-
30-
app.use((ctx, next) => {
31-
// set .writable to false
32-
ctx.socket.writable = false
33-
ctx.status = 204
34-
// throw if .writeHead or .end is called
35-
ctx.res.writeHead =
36-
ctx.res.end = () => {
37-
throw new Error('response sent')
38-
}
39-
})
40-
41-
// hackish, but the response should occur in a single tick
42-
setImmediate(done)
43-
44-
request(app.callback())
45-
.get('/')
46-
.end(() => {})
47-
})
48-
4928
it('should set development env when NODE_ENV missing', () => {
5029
const NODE_ENV = process.env.NODE_ENV
5130
process.env.NODE_ENV = ''
@@ -80,7 +59,7 @@ describe('app', () => {
8059

8160
it('should set compose from the constructor', () => {
8261
const compose = () => (ctx) => {}
83-
const app = new Koa({ compose })
62+
const app = new Koa.default({ compose }) // eslint-disable-line new-cap
8463
assert.strictEqual(app.compose, compose)
8564
})
8665

__tests__/application/inspect.js __tests__/application/inspect.test.js

+3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const util = require('util')
56
const Koa = require('../..')
7+
8+
process.env.NODE_ENV = 'test'
69
const app = new Koa()
710

811
describe('app.inspect()', () => {

__tests__/application/onerror.js __tests__/application/onerror.test.js

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it, mock } = require('node:test')
34
const assert = require('assert')
45
const Koa = require('../..')
56

@@ -30,21 +31,21 @@ describe('app.onerror(err)', () => {
3031

3132
err.status = 404
3233

33-
const spy = jest.spyOn(console, 'error')
34+
const spy = mock.method(console, 'error', () => {})
3435
app.onerror(err)
35-
expect(spy).not.toHaveBeenCalled()
36-
spy.mockRestore()
36+
assert.strictEqual(spy.mock.calls.length, 0)
37+
spy.mock.restore()
3738
})
3839

3940
it('should do nothing if .silent', () => {
4041
const app = new Koa()
4142
app.silent = true
4243
const err = new Error()
4344

44-
const spy = jest.spyOn(console, 'error')
45+
const spy = mock.method(console, 'error', () => {})
4546
app.onerror(err)
46-
expect(spy).not.toHaveBeenCalled()
47-
spy.mockRestore()
47+
assert.strictEqual(spy.mock.calls.length, 0)
48+
spy.mock.restore()
4849
})
4950

5051
it('should log the error to stderr', () => {
@@ -54,9 +55,9 @@ describe('app.onerror(err)', () => {
5455
const err = new Error()
5556
err.stack = 'Foo'
5657

57-
const spy = jest.spyOn(console, 'error')
58+
const spy = mock.method(console, 'error', () => {})
5859
app.onerror(err)
59-
expect(spy).toHaveBeenCalled()
60-
spy.mockRestore()
60+
assert.notStrictEqual(spy.mock.calls.length, 0)
61+
spy.mock.restore()
6162
})
6263
})

__tests__/application/request.js __tests__/application/request.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/application/respond.js __tests__/application/respond.test.js

+21-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const statuses = require('statuses')
56
const assert = require('assert')
@@ -555,6 +556,20 @@ describe('app.respond', () => {
555556
.expect(200)
556557
.expect('content-type', 'application/octet-stream')
557558
})
559+
560+
it('should respond hello', async () => {
561+
const app = new Koa()
562+
563+
app.use(async ctx => {
564+
ctx.body = new Blob(['hello']).stream()
565+
})
566+
567+
return request(app.callback())
568+
.get('/')
569+
.expect(200)
570+
.expect('content-type', 'application/octet-stream')
571+
.expect(Buffer.from('hello'))
572+
})
558573
})
559574

560575
describe('when .body is a Response', () => {
@@ -577,13 +592,14 @@ describe('app.respond', () => {
577592

578593
app.use(ctx => {
579594
ctx.body = new Response(null, { status: 200, statusText: 'OK' })
595+
console.log(ctx)
580596
})
581597

582598
return request(app.callback())
583-
.head('/')
599+
.get('/')
584600
.expect(200)
585601
.expect('content-type', 'application/octet-stream')
586-
.expect('content-length', '2')
602+
.expect(Buffer.from([]))
587603
})
588604
})
589605

@@ -662,7 +678,7 @@ describe('app.respond', () => {
662678
assert.deepStrictEqual(res.body, pkg)
663679
})
664680

665-
it('should handle errors', done => {
681+
it('should handle errors', (t, done) => {
666682
const app = new Koa()
667683

668684
app.use(ctx => {
@@ -690,7 +706,7 @@ describe('app.respond', () => {
690706
.expect(204)
691707
})
692708

693-
it('should handle all intermediate stream body errors', done => {
709+
it('should handle all intermediate stream body errors', (t, done) => {
694710
const app = new Koa()
695711

696712
app.use(ctx => {
@@ -742,7 +758,7 @@ describe('app.respond', () => {
742758
})
743759

744760
describe('when an error occurs', () => {
745-
it('should emit "error" on the app', done => {
761+
it('should emit "error" on the app', (t, done) => {
746762
const app = new Koa()
747763

748764
app.use(ctx => {

__tests__/application/response.js __tests__/application/response.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/application/toJSON.js __tests__/application/toJSON.test.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const Koa = require('../..')
56

67
describe('app.toJSON()', () => {
78
it('should work', () => {
8-
const app = new Koa()
9+
const app = new Koa({ env: 'test' })
910
const obj = app.toJSON()
1011

1112
assert.deepStrictEqual({

__tests__/application/use.js __tests__/application/use.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/context/assert.js __tests__/context/assert.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const context = require('../../test-helpers/context')
45
const assert = require('assert')
56

__tests__/context/cookies.js __tests__/context/cookies.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const request = require('supertest')
56
const Koa = require('../..')

__tests__/context/inspect.js __tests__/context/inspect.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const prototype = require('../../lib/context')
45
const assert = require('assert')
56
const util = require('util')

__tests__/context/onerror.js __tests__/context/onerror.test.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const request = require('supertest')
56
const Koa = require('../..')
@@ -70,12 +71,13 @@ describe('ctx.onerror(err)', () => {
7071
assert.strictEqual(Object.prototype.hasOwnProperty.call(res.headers, 'x-csrf-token'), false)
7172
})
7273

73-
it('should ignore error after headerSent', done => {
74+
it('should ignore error after headerSent', (t, done) => {
7475
const app = new Koa()
7576

76-
app.on('error', err => {
77+
app.on('error', (err, { res }) => {
7778
assert.strictEqual(err.message, 'mock error')
7879
assert.strictEqual(err.headerSent, true)
80+
res.end()
7981
done()
8082
})
8183

@@ -252,7 +254,7 @@ describe('ctx.onerror(err)', () => {
252254
assert.strictEqual(removed, 2)
253255
})
254256

255-
it('should stringify error if it is an object', done => {
257+
it('should stringify error if it is an object', (t, done) => {
256258
const app = new Koa()
257259

258260
app.on('error', err => {

__tests__/context/state.js __tests__/context/state.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('supertest')
45
const assert = require('assert')
56
const Koa = require('../..')

__tests__/context/throw.js __tests__/context/throw.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const context = require('../../test-helpers/context')
45
const assert = require('assert')
56

__tests__/context/toJSON.js __tests__/context/toJSON.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/lib/search-params.js __tests__/lib/search-params.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const { describe, it } = require('node:test')
12
const sp = require('../../lib/search-params')
23
const assert = require('assert')
34

__tests__/load-with-esm.js __tests__/load-with-esm.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const { describe, it, beforeAll } = require('node:test')
12
const assert = require('assert')
23

34
let importESM = () => {}

__tests__/request/accept.js __tests__/request/accept.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const Accept = require('accepts')
45
const assert = require('assert')
56
const context = require('../../test-helpers/context')

__tests__/request/accepts.js __tests__/request/accepts.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/request/acceptsCharsets.js __tests__/request/acceptsCharsets.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/request/acceptsEncodings.js __tests__/request/acceptsEncodings.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/request/acceptsLanguages.js __tests__/request/acceptsLanguages.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/request/charset.js __tests__/request/charset.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const request = require('../../test-helpers/context').request
45
const assert = require('assert')
56

__tests__/request/fresh.js __tests__/request/fresh.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/request/get.js __tests__/request/get.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const context = require('../../test-helpers/context')
56

__tests__/request/header.js __tests__/request/header.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { describe, it } = require('node:test')
34
const assert = require('assert')
45
const request = require('../../test-helpers/context').request
56

0 commit comments

Comments
 (0)