diff --git a/framework/package-lock.json b/framework/package-lock.json index 377784930..35659f0d2 100644 --- a/framework/package-lock.json +++ b/framework/package-lock.json @@ -46,8 +46,7 @@ "@types/mock-fs": "^4.13.4", "@types/needle": "^3.2.3", "c8": "^9.1.0", - "chai": "^4.3.10", - "chai-as-promised": "^7.1.1", + "chai": "^5.0.3", "consolemock": "^1.1.0", "eslint": "^8.55.0", "markdownlint-cli": "^0.39.0", @@ -1459,12 +1458,12 @@ "dev": true }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/async": { @@ -1722,33 +1721,28 @@ ] }, "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.0.3.tgz", + "integrity": "sha512-wKGCtYv2kVY5WEjKqQ3fSIZWtTFveZCtzinhTZbx3/trVkxefiwovhpU9kRVCwxvKKCEjTWXPdM1/T7zPoDgow==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "assertion-error": "^2.0.1", + "check-error": "^2.0.0", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "node_modules/chai/node_modules/check-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz", + "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==", "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "engines": { + "node": ">= 16" } }, "node_modules/chalk": { @@ -1772,18 +1766,6 @@ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.2.tgz", "integrity": "sha512-WB3UiTDpT+vrTilAWaJS4gaIH/jc1He4H9f6erQvraUYas90uWT0JOYFkG1imdNv710XJ6gJvqynrgOHc4ihDA==" }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -2016,13 +1998,10 @@ } }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", + "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -3211,9 +3190,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.0.tgz", + "integrity": "sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==", "dev": true, "dependencies": { "get-func-name": "^2.0.1" @@ -3770,12 +3749,12 @@ } }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/picocolors": { @@ -4425,15 +4404,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", diff --git a/framework/package.json b/framework/package.json index cb5920d9c..0b2fad6ac 100644 --- a/framework/package.json +++ b/framework/package.json @@ -60,8 +60,7 @@ "@types/mock-fs": "^4.13.4", "@types/needle": "^3.2.3", "c8": "^9.1.0", - "chai": "^4.3.10", - "chai-as-promised": "^7.1.1", + "chai": "^5.0.3", "consolemock": "^1.1.0", "eslint": "^8.55.0", "mocha": "^10.2.0", diff --git a/framework/src/cli/make.ts b/framework/src/cli/make.ts index 7c4c207ec..27843b345 100644 --- a/framework/src/cli/make.ts +++ b/framework/src/cli/make.ts @@ -284,7 +284,7 @@ export default (args: string[], cwd: string,) => { () => execSync('npm install', { cwd: root, },), - () => execSync('git init', { + () => execSync('git init --initial-branch=master', { cwd: root, },), ]; diff --git a/framework/src/helper/middleware-loader.ts b/framework/src/helper/middleware-loader.ts index 97383bdec..170c161dd 100644 --- a/framework/src/helper/middleware-loader.ts +++ b/framework/src/helper/middleware-loader.ts @@ -22,7 +22,9 @@ const resolve = (path: string,): string => { return reqlib + '/src/middlewares/' + shortened + '.js'; } if (path[FIRST] === '$') { - return shortened.replace(/\/([^/]+)$/u, '/src/middlewares/$1',) + '.js'; + return reqlib + '/node_modules/' + + shortened.replace(/\/([^/]+)$/u, '/src/middlewares/$1',) + + '.js'; } return path; }; diff --git a/framework/src/storage/mysql-storage.ts b/framework/src/storage/mysql-storage.ts index 908cbd4f4..612c67134 100644 --- a/framework/src/storage/mysql-storage.ts +++ b/framework/src/storage/mysql-storage.ts @@ -19,6 +19,7 @@ const project: string = reqlib export class MysqlStorage implements Storage { private connection: Connection; + // eslint-disable-next-line max-params constructor( host: string, password: string, diff --git a/framework/test/cli/bench.ts b/framework/test/cli/bench.ts index c0b77e60e..b0923def9 100644 --- a/framework/test/cli/bench.ts +++ b/framework/test/cli/bench.ts @@ -1,21 +1,21 @@ import cli from '../../src/cli/bench.js'; import { - use as useChai, expect, } from 'chai'; -import chaiAsPromised from 'chai-as-promised'; import 'mocha'; -useChai(chaiAsPromised,); - describe('cli', () => { it('should be a function', () => { expect(cli,).to.be.a('function',); },); - it('cli() throw when given 0 total tasks', () => { - expect(cli([ - '0', - '0', - ],),).to.eventually.be.rejectedWith(); + it('cli() throw when given 0 total tasks', async() => { + try { + await cli([ + '0', + '0', + ],); + } catch (e) { + expect(e,).to.be.an('Error',); + } },); },); diff --git a/framework/test/cli/make.ts b/framework/test/cli/make.ts index 3148c8a7b..3ecfa7848 100644 --- a/framework/test/cli/make.ts +++ b/framework/test/cli/make.ts @@ -5,7 +5,8 @@ import { import 'mocha'; import { existsSync, - readFileSync, rmdirSync, + readFileSync, + rmdirSync, } from 'fs'; import { tmpdir, diff --git a/framework/test/executor.ts b/framework/test/executor.ts index f587146bc..0cfbfcf64 100644 --- a/framework/test/executor.ts +++ b/framework/test/executor.ts @@ -1,10 +1,8 @@ import executor from '../src/executor.js'; import Thread from '../src/worker/thread.js'; import { - use as chaiUse, expect, } from 'chai'; -import chaiAsPromised from 'chai-as-promised'; import 'mocha'; import { NullLogger, @@ -29,7 +27,6 @@ import Counter from '../src/counter.js'; // eslint-disable-next-line @typescript-eslint/no-empty-function const NOOP = () => {}; const NONE = 0; -chaiUse(chaiAsPromised,); class FakeResult implements Result, ValidationResult, FinishedSet { diff --git a/framework/test/helper/function-analyzer.ts b/framework/test/helper/function-analyzer.ts index b0ca65e2d..08e9600ad 100644 --- a/framework/test/helper/function-analyzer.ts +++ b/framework/test/helper/function-analyzer.ts @@ -24,18 +24,25 @@ describe('helper/function-analyzer', () => { expect(ret,).to.be.an('array',); expect(ret,).to.deep.equal([],); },); - it('should return an empty array when handling no params with wrapped body', () => { - // eslint-disable-next-line @typescript-eslint/no-empty-function - const ret = analyze(() => ({}),); - expect(ret,).to.be.an('array',); - expect(ret,).to.deep.equal([],); - },); - it('should return an empty array when handling no params with direct return body', () => { - // eslint-disable-next-line @typescript-eslint/no-empty-function - const ret = analyze(() => 'test',); - expect(ret,).to.be.an('array',); - expect(ret,).to.deep.equal([],); - },); + it( + 'should return an empty array when handling no params with wrapped body', + () => { + // eslint-disable-next-line @typescript-eslint/no-empty-function + const ret = analyze(() => ({}),); + expect(ret,).to.be.an('array',); + expect(ret,).to.deep.equal([],); + }, + ); + it( + 'should return an empty array when handling ' + + 'no params with direct return body', + () => { + // eslint-disable-next-line @typescript-eslint/no-empty-function + const ret = analyze(() => 'test',); + expect(ret,).to.be.an('array',); + expect(ret,).to.deep.equal([],); + }, + ); it('should return an array of params when handling one typed param', () => { // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars const ret = analyze(function(/*Boolean*/myBoolean,) {},); diff --git a/framework/test/helper/job-creator.ts b/framework/test/helper/job-creator.ts index fbcabd1a9..2ee8afcc6 100644 --- a/framework/test/helper/job-creator.ts +++ b/framework/test/helper/job-creator.ts @@ -1,20 +1,18 @@ import jobCreator from '../../src/helper/job-creator.js'; import { - expect, use as chaiUse, + expect, } from 'chai'; import 'mocha'; import url from 'url'; -import chaiAsPromised from 'chai-as-promised'; const __dirname = url.fileURLToPath(new URL('.', import.meta.url,),); -chaiUse(chaiAsPromised,); describe('helper/job-creator', () => { it('should be a string', () => { expect(jobCreator,).to.be.a('function',); },); - it('should be match expectations', () => { - const result = jobCreator(__dirname + '../../fixtures',); - expect(result,).to.eventually.deep.equal({ + it('should be match expectations', async() => { + const result = await jobCreator(__dirname + '../../fixtures',); + expect(result,).to.deep.equal({ 'after': [], 'afterEach': [], 'afterTask': [], diff --git a/framework/test/helper/middleware-loader.ts b/framework/test/helper/middleware-loader.ts index 96358a3dc..951cb9d1e 100644 --- a/framework/test/helper/middleware-loader.ts +++ b/framework/test/helper/middleware-loader.ts @@ -1,10 +1,8 @@ import loader from '../../src/helper/middleware-loader.js'; import { expect, - use as chaiUse, } from 'chai'; import 'mocha'; -import chaiAsPromised from 'chai-as-promised'; import url from 'url'; import { realpathSync, @@ -12,30 +10,33 @@ import { const __dirname = url.fileURLToPath(new URL('.', import.meta.url,),); const basedir = realpathSync(__dirname + '../..',); -chaiUse(chaiAsPromised,); describe('helper/middleware-loader', () => { it('should be a string', () => { expect(loader,).to.be.a('function',); },); - it('should load by absolute path', () => { - expect(loader(__dirname + '../../src/middlewares/cookie',),) - .to.eventually.be.a('function',); + it('should load by absolute path', async() => { + expect(await loader(__dirname + '../../src/middlewares/cookie',),) + .to.be.a('function',); },); - it('should load by ^-path', () => { - expect(loader('^cookie',),).to.eventually.be.a('function',); + it('should load by ^-path', async() => { + expect(await loader('^cookie',),).to.be.a('function',); },); - it('should load by ^-path and skip the default key', () => { - expect(loader('^../main',),).to.eventually.be.a('function',); + it('should load by ^-path and skip the default key', async() => { + expect(await loader('^encoding',),).to.be.a('function',); },); - it('should load by #-path', () => { - expect(loader('#cookie',),).to.eventually.be.a('function',); + it('should load by #-path', async() => { + expect(await loader('#cookie',),).to.be.a('function',); },); - it('should load by $-path', () => { - expect(loader('$needle/cookie',),).to.be.rejectedWith( - `Cannot find module '${ basedir }` - + '/node_modules/needle/src/middlewares/cookie\' ' - + `imported from ${ basedir }/src/helper/include-default.ts`, - ); + it('should load by $-path', async() => { + try { + await loader('$needle/cookie',); + // eslint-disable-next-line no-unused-expressions + expect(false,).to.be.true; + } catch (e) { + expect(`${ e }`,).to.equal(`Error: Cannot find module '${ basedir }` + + '/node_modules/needle/src/middlewares/cookie.js\' ' + + `imported from ${ basedir }/src/helper/include-default.ts`,); + } },); },); diff --git a/framework/test/main.ts b/framework/test/main.ts index 79102f311..7e71c18cf 100644 --- a/framework/test/main.ts +++ b/framework/test/main.ts @@ -2,22 +2,23 @@ import { run, } from '../src/main.js'; import { - use as chaiUse, expect, } from 'chai'; -import chaiAsPromised from 'chai-as-promised'; import 'mocha'; -chaiUse(chaiAsPromised,); - const ONE = 1; describe('main', () => { it('should be a function', () => { expect(run,).to.be.a('function',); },); - it('can be called with 4 params', () => { - expect(run({}, ONE, ONE, [],),) - .to.be.rejectedWith('Can\'t measure no tasks.',); + it('can be called with 4 params', async() => { + try { + await run({}, ONE, ONE, [],); + // eslint-disable-next-line no-unused-expressions + expect(false,).to.be.true; + } catch (e) { + expect(`${ e }`,).to.equal('Error: Can\'t measure no tasks.',); + } },); },); diff --git a/framework/test/storage/mysql-storage.ts b/framework/test/storage/mysql-storage.ts index 309368aff..c14a40002 100644 --- a/framework/test/storage/mysql-storage.ts +++ b/framework/test/storage/mysql-storage.ts @@ -1,15 +1,13 @@ import MysqlStorage from '../../src/storage/mysql-storage.js'; import { - expect, use as chaiUse, + expect, } from 'chai'; import 'mocha'; import { FinishedSet, } from '../../src/finished-set'; -import chaiAsPromised from 'chai-as-promised'; import getDatabase from '@databases/mysql-test'; -chaiUse(chaiAsPromised,); let database; let port = 3307; const WAIT_MEDIUM = 1000; diff --git a/website/test/loader.ts b/website/test/loader.ts index 50b9e2854..e572233cb 100644 --- a/website/test/loader.ts +++ b/website/test/loader.ts @@ -8,7 +8,9 @@ describe('pages/usage', () => { expect(Loader,).to.be.a('function',); },); it('() should be an object', () => { - const result = Loader({lnkey: 'test-key'}); - expect(result,).to.be.a('object',); + const result = Loader({ + lnkey: 'test-key', + },); + expect(result,).to.be.an('object',); },); },);