Skip to content

Commit

Permalink
ci,test: add TAP suite execution for node
Browse files Browse the repository at this point in the history
  • Loading branch information
panva committed Nov 2, 2022
1 parent e04e30d commit 01871f4
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 21 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ jobs:
- name: Test with Node.js Web API
run: npm run test-webapi
if: ${{ !startsWith(steps.node.outputs.node-version, 'v14') && !startsWith(steps.node.outputs.node-version, 'v12') }}
- name: TAP Suite with Node.js Web API
run: npm run tap:node
if: ${{ !startsWith(steps.node.outputs.node-version, 'v14') && !startsWith(steps.node.outputs.node-version, 'v12') }}

deno:
needs:
Expand Down
8 changes: 8 additions & 0 deletions .node_flags.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
NODE_VERSION=$(node -v)
export NODE_OPTIONS='--no-warnings'

if [[ $NODE_VERSION == "v16."* ]]; then
export NODE_OPTIONS+=' --experimental-global-webcrypto --experimental-fetch'
elif [[ "$NODE_VERSION" == "v18."* ]]; then
export NODE_OPTIONS+=' --experimental-global-webcrypto'
fi
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,11 @@
"test-webapi": "npm test -- --config ava.webapi.config.cjs",
"test-webcrypto": "npm test -- --config ava.webcrypto.config.cjs",
"format": "prettier --loglevel silent --write ./test ./tap ./src ./tools ./cookbook",
"tap:browsers": "./tap/.browsers.sh",
"tap:deno": "./tap/.deno.sh",
"tap:edge-runtime": "./tap/.edge-runtime.sh",
"tap:workers": "./tap/.workers.sh",
"tap:browsers": "./tap/.browsers.sh"
"tap:node": "bash -c './tap/.node.sh'",
"tap:workers": "./tap/.workers.sh"
},
"devDependencies": {
"@types/node": "^18.11.9",
Expand Down
12 changes: 12 additions & 0 deletions tap/.node.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
./node_modules/.bin/esbuild \
--log-level=warning \
--format=esm \
--bundle \
--minify-syntax \
--target=esnext \
--outfile=tap/run-node.js \
tap/run-node.ts

source .node_flags.sh
node tap/run-node.js
2 changes: 1 addition & 1 deletion tap/cookbook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default (QUnit: QUnit) => {
return !env.isDeno
}
if (vector.input.alg === 'EdDSA') {
return env.isDeno || env.isWorkers
return env.isDeno || env.isWorkers || env.isNode
}
return true
}
Expand Down
4 changes: 2 additions & 2 deletions tap/ecdh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ export default (QUnit: QUnit) => {
['ECDH-ES', { crv: 'P-384' }, true],
['ECDH-ES', { crv: 'P-521' }, !env.isDeno],
['ECDH-ES', { crv: 'secp256k1' }, false],
['ECDH-ES', { crv: 'X25519' }, false],
['ECDH-ES', { crv: 'X448' }, false],
['ECDH-ES', { crv: 'X25519' }, env.isNode],
['ECDH-ES', { crv: 'X448' }, env.isNode],
]

function title(vector: Vector) {
Expand Down
2 changes: 2 additions & 0 deletions tap/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import Bowser from 'bowser'
export const isBun = typeof Bun !== 'undefined'
// @ts-ignore
export const isDeno = typeof Deno !== 'undefined'
// @ts-expect-error
export const isNode = !isBun && typeof process !== 'undefined'
// @ts-ignore
export const isEdgeRuntime = typeof EdgeRuntime !== 'undefined'
export const isBrowser =
Expand Down
8 changes: 4 additions & 4 deletions tap/jwk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ export default (QUnit: QUnit) => {
['ECDH-ES', KEYS.P256.jwk, true],
['ECDH-ES', KEYS.P384.jwk, true],
['ECDH-ES', KEYS.P521.jwk, !env.isDeno],
['ECDH-ES', KEYS.X25519.jwk, env.isDeno],
['ECDH-ES', KEYS.X448.jwk, false],
['EdDSA', KEYS.Ed25519.jwk, env.isDeno || env.isWorkers],
['EdDSA', KEYS.Ed448.jwk, false],
['ECDH-ES', KEYS.X25519.jwk, env.isDeno || env.isNode],
['ECDH-ES', KEYS.X448.jwk, env.isNode],
['EdDSA', KEYS.Ed25519.jwk, env.isDeno || env.isNode || env.isWorkers],
['EdDSA', KEYS.Ed448.jwk, env.isNode],
['ES256', KEYS.P256.jwk, true],
['ES256K', KEYS.secp256k1.jwk, false],
['ES384', KEYS.P384.jwk, true],
Expand Down
4 changes: 2 additions & 2 deletions tap/jws.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ export default (QUnit: QUnit) => {

type Vector = [string, undefined | lib.GenerateKeyPairOptions, boolean]
const algorithms: Vector[] = [
['EdDSA', { crv: 'Ed25519' }, env.isDeno || env.isWorkers],
['EdDSA', { crv: 'Ed448' }, false],
['EdDSA', { crv: 'Ed25519' }, env.isDeno || env.isWorkers || env.isNode],
['EdDSA', { crv: 'Ed448' }, env.isNode],
['ES256', undefined, true],
['ES256K', undefined, false],
['ES384', undefined, true],
Expand Down
20 changes: 10 additions & 10 deletions tap/pem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,16 @@ export default (QUnit: QUnit) => {
[['ECDH-ES', 'secp256k1'], KEYS.secp256k1.pkcs8, false],
[['ECDH-ES', 'secp256k1'], KEYS.secp256k1.spki, false],
[['ECDH-ES', 'secp256k1'], KEYS.secp256k1.x509, false],
[['ECDH-ES', 'X25519'], KEYS.X25519.pkcs8, env.isDeno],
[['ECDH-ES', 'X25519'], KEYS.X25519.spki, env.isDeno],
[['ECDH-ES', 'X448'], KEYS.X448.pkcs8, false],
[['ECDH-ES', 'X448'], KEYS.X448.spki, false],
[['EdDSA', 'Ed25519'], KEYS.Ed25519.pkcs8, env.isWorkers || env.isDeno],
[['EdDSA', 'Ed25519'], KEYS.Ed25519.spki, env.isWorkers || env.isDeno],
[['EdDSA', 'Ed25519'], KEYS.Ed25519.x509, env.isWorkers || env.isDeno],
[['EdDSA', 'Ed448'], KEYS.Ed448.pkcs8, false],
[['EdDSA', 'Ed448'], KEYS.Ed448.spki, false],
[['EdDSA', 'Ed448'], KEYS.Ed448.x509, false],
[['ECDH-ES', 'X25519'], KEYS.X25519.pkcs8, env.isDeno || env.isNode],
[['ECDH-ES', 'X25519'], KEYS.X25519.spki, env.isDeno || env.isNode],
[['ECDH-ES', 'X448'], KEYS.X448.pkcs8, env.isNode],
[['ECDH-ES', 'X448'], KEYS.X448.spki, env.isNode],
[['EdDSA', 'Ed25519'], KEYS.Ed25519.pkcs8, env.isWorkers || env.isDeno || env.isNode],
[['EdDSA', 'Ed25519'], KEYS.Ed25519.spki, env.isWorkers || env.isDeno || env.isNode],
[['EdDSA', 'Ed25519'], KEYS.Ed25519.x509, env.isWorkers || env.isDeno || env.isNode],
[['EdDSA', 'Ed448'], KEYS.Ed448.pkcs8, env.isNode],
[['EdDSA', 'Ed448'], KEYS.Ed448.spki, env.isNode],
[['EdDSA', 'Ed448'], KEYS.Ed448.x509, env.isNode],
]

function title(alg: string, crv: string | undefined, pem: string, works: boolean) {
Expand Down
9 changes: 9 additions & 0 deletions tap/run-node.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import QUnit from 'qunit'
import run from './run.js'

run(QUnit, (stats) => {
if (stats?.failed !== 0) {
// @ts-ignore
process.exitCode = 1
}
})

0 comments on commit 01871f4

Please sign in to comment.