From 7d4961d3ddc4d369a19e81f4f4308e1759decac2 Mon Sep 17 00:00:00 2001 From: David Worms Date: Mon, 13 May 2024 17:21:31 +0200 Subject: [PATCH] test: skip test ability --- demo/cjs/test/samples.coffee | 28 ++++++------ demo/esm/test/samples.coffee | 34 ++++++++------- demo/issues-cjs/test/samples.coffee | 23 +++++----- demo/issues-esm/test/samples.coffee | 35 ++++++++------- demo/ts-esm-node16/test/samples.coffee | 34 ++++++++------- packages/csv-generate/test/samples.coffee | 37 ++++++++++------ packages/csv-parse/test/samples.coffee | 43 ++++++++++++------- packages/csv-stringify/test/samples.coffee | 37 ++++++++++------ packages/csv/test/samples.coffee | 37 ++++++++++------ packages/stream-transform/test/samples.coffee | 37 ++++++++++------ 10 files changed, 213 insertions(+), 132 deletions(-) diff --git a/demo/cjs/test/samples.coffee b/demo/cjs/test/samples.coffee index 438a2b5b5..8100e2a2d 100644 --- a/demo/cjs/test/samples.coffee +++ b/demo/cjs/test/samples.coffee @@ -1,7 +1,7 @@ -fs = require 'fs' -path = require 'path' -{ exec } = require 'child_process' +fs = require 'node:fs' +path = require 'node:path' +{ spawn } = require 'node:child_process' dir = path.resolve __dirname, '../lib' samples = fs.readdirSync dir @@ -12,12 +12,16 @@ describe 'Samples', -> return false unless /\.(js|ts)?$/.test sample true .map (sample) -> - it "Sample #{sample}", (callback) -> - ext = /\.(\w+)?$/.exec(sample)[0] - bin = switch ext - when '.js' - 'node' - when '.ts' - 'ts-node' # Also works with: `node --loader ts-node/esm` - exec "#{bin} #{path.resolve dir, sample}", (err, stdout, stderr) -> - callback err + it "Sample #{sample}", () -> + data = await fs.promises.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['ts-node', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/demo/esm/test/samples.coffee b/demo/esm/test/samples.coffee index 0a2b28d54..dc01ee520 100644 --- a/demo/esm/test/samples.coffee +++ b/demo/esm/test/samples.coffee @@ -1,12 +1,11 @@ -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../lib' -samples = fs.readdirSync dir +samples = await fs.readdir dir describe 'Samples', -> @@ -15,12 +14,17 @@ describe 'Samples', -> return false unless /\.(js|ts)?$/.test sample true .map (sample) -> - it "Sample #{sample}", (callback) -> - ext = /\.(\w+)?$/.exec(sample)[0] - bin = switch ext - when '.js' - 'node' - when '.ts' - 'node --loader ts-node/esm' - exec "#{bin} #{path.resolve dir, sample}", (err, stdout, stderr) -> - callback err + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/demo/issues-cjs/test/samples.coffee b/demo/issues-cjs/test/samples.coffee index ae6c7736e..5435e5dfb 100644 --- a/demo/issues-cjs/test/samples.coffee +++ b/demo/issues-cjs/test/samples.coffee @@ -12,13 +12,16 @@ describe 'Samples', -> return false unless /\.(js|ts)?$/.test sample true .map (sample) -> - it "Sample #{sample}", (callback) -> - ext = /\.(\w+)?$/.exec(sample)[0] - cmd = switch ext - when '.js' - 'node' - when '.ts' - 'ts-node' # Also works with: `node --loader ts-node/esm` - spawn(cmd, [path.resolve dir, sample]) - .on 'close', (code) -> callback(code isnt 0 and new Error 'Failure') - .stdout.on 'data', (->) + it "Sample #{sample}", () -> + data = await fs.promises.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/demo/issues-esm/test/samples.coffee b/demo/issues-esm/test/samples.coffee index 55679c433..dc01ee520 100644 --- a/demo/issues-esm/test/samples.coffee +++ b/demo/issues-esm/test/samples.coffee @@ -1,12 +1,11 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import { spawn } from 'node:child_process'; -import { dirname } from 'dirname-filename-esm'; +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -__dirname = dirname import.meta +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../lib' -samples = fs.readdirSync dir +samples = await fs.readdir dir describe 'Samples', -> @@ -15,13 +14,17 @@ describe 'Samples', -> return false unless /\.(js|ts)?$/.test sample true .map (sample) -> - it "Sample #{sample}", (callback) -> - ext = /\.(\w+)?$/.exec(sample)[0] - [cmd, ...args] = switch ext - when '.js' - ['node', path.resolve dir, sample] - when '.ts' - ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] - spawn(cmd, args) - .on 'close', (code) -> callback(code isnt 0 and new Error 'Failure') - .stdout.on 'data', (->) + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/demo/ts-esm-node16/test/samples.coffee b/demo/ts-esm-node16/test/samples.coffee index 0a2b28d54..dc01ee520 100644 --- a/demo/ts-esm-node16/test/samples.coffee +++ b/demo/ts-esm-node16/test/samples.coffee @@ -1,12 +1,11 @@ -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../lib' -samples = fs.readdirSync dir +samples = await fs.readdir dir describe 'Samples', -> @@ -15,12 +14,17 @@ describe 'Samples', -> return false unless /\.(js|ts)?$/.test sample true .map (sample) -> - it "Sample #{sample}", (callback) -> - ext = /\.(\w+)?$/.exec(sample)[0] - bin = switch ext - when '.js' - 'node' - when '.ts' - 'node --loader ts-node/esm' - exec "#{bin} #{path.resolve dir, sample}", (err, stdout, stderr) -> - callback err + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/packages/csv-generate/test/samples.coffee b/packages/csv-generate/test/samples.coffee index bba779de1..500e7525f 100644 --- a/packages/csv-generate/test/samples.coffee +++ b/packages/csv-generate/test/samples.coffee @@ -1,17 +1,30 @@ -import each from 'each' -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../samples' -samples = fs.readdirSync(dir).filter (sample) -> /\.js$/.test sample +samples = await fs.readdir dir describe 'Samples', -> - - each samples, (sample) -> - it "Sample #{sample}", (callback) -> - exec "node #{path.resolve dir, sample}", (err) -> - callback err + + samples + .filter (sample) -> + return false unless /\.(js|ts)?$/.test sample + true + .map (sample) -> + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/packages/csv-parse/test/samples.coffee b/packages/csv-parse/test/samples.coffee index 4fbab7a6b..7f52fbf2f 100644 --- a/packages/csv-parse/test/samples.coffee +++ b/packages/csv-parse/test/samples.coffee @@ -1,20 +1,31 @@ +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import each from 'each' -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' - -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url -dir = path.resolve __dirname, '../samples' [_, major] = process.version.match(/(\d+)\.\d+\.\d+/) -samples = fs.readdirSync(dir) -.filter (sample) -> ! (major < 16 && sample is 'recipe.promises.js') -.filter (sample) -> /\.js$/.test sample +__dirname = new URL( '.', import.meta.url).pathname +dir = path.resolve __dirname, '../samples' +samples = await fs.readdir dir describe 'Samples', -> - - each samples, (sample) -> - it "Sample #{sample}", (callback) -> - exec "node #{path.resolve dir, sample}", (err) -> - callback err + + samples + .filter (sample) -> ! (major < 16 && sample is 'recipe.promises.js') + .filter (sample) -> + return false unless /\.(js|ts)?$/.test sample + true + .map (sample) -> + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/packages/csv-stringify/test/samples.coffee b/packages/csv-stringify/test/samples.coffee index bba779de1..500e7525f 100644 --- a/packages/csv-stringify/test/samples.coffee +++ b/packages/csv-stringify/test/samples.coffee @@ -1,17 +1,30 @@ -import each from 'each' -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../samples' -samples = fs.readdirSync(dir).filter (sample) -> /\.js$/.test sample +samples = await fs.readdir dir describe 'Samples', -> - - each samples, (sample) -> - it "Sample #{sample}", (callback) -> - exec "node #{path.resolve dir, sample}", (err) -> - callback err + + samples + .filter (sample) -> + return false unless /\.(js|ts)?$/.test sample + true + .map (sample) -> + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/packages/csv/test/samples.coffee b/packages/csv/test/samples.coffee index bba779de1..500e7525f 100644 --- a/packages/csv/test/samples.coffee +++ b/packages/csv/test/samples.coffee @@ -1,17 +1,30 @@ -import each from 'each' -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../samples' -samples = fs.readdirSync(dir).filter (sample) -> /\.js$/.test sample +samples = await fs.readdir dir describe 'Samples', -> - - each samples, (sample) -> - it "Sample #{sample}", (callback) -> - exec "node #{path.resolve dir, sample}", (err) -> - callback err + + samples + .filter (sample) -> + return false unless /\.(js|ts)?$/.test sample + true + .map (sample) -> + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->) diff --git a/packages/stream-transform/test/samples.coffee b/packages/stream-transform/test/samples.coffee index bba779de1..500e7525f 100644 --- a/packages/stream-transform/test/samples.coffee +++ b/packages/stream-transform/test/samples.coffee @@ -1,17 +1,30 @@ -import each from 'each' -import fs from 'fs' -import path from 'path' -import { exec } from 'child_process' +import fs from 'node:fs/promises' +import path from 'node:path' +import { spawn } from 'node:child_process' -import { fileURLToPath } from 'url' -__dirname = path.dirname fileURLToPath import.meta.url +__dirname = new URL( '.', import.meta.url).pathname dir = path.resolve __dirname, '../samples' -samples = fs.readdirSync(dir).filter (sample) -> /\.js$/.test sample +samples = await fs.readdir dir describe 'Samples', -> - - each samples, (sample) -> - it "Sample #{sample}", (callback) -> - exec "node #{path.resolve dir, sample}", (err) -> - callback err + + samples + .filter (sample) -> + return false unless /\.(js|ts)?$/.test sample + true + .map (sample) -> + + it "Sample #{sample}", () -> + data = await fs.readFile path.resolve(dir, sample), 'utf8' + return if /^["|']skip test["|']/.test data + new Promise (resolve, reject) -> + ext = /\.(\w+)?$/.exec(sample)[0] + [cmd, ...args] = switch ext + when '.js' + ['node', path.resolve dir, sample] + when '.ts' + ['node', '--loader', 'ts-node/esm', path.resolve dir, sample] + spawn(cmd, args) + .on 'close', (code) -> if code is 0 then resolve() else reject(new Error 'Failure') + .stdout.on 'data', (->)