From eba7859cb1df38474dd98b082c6507e39377a172 Mon Sep 17 00:00:00 2001 From: Aron Date: Sat, 27 Apr 2024 00:33:29 +0800 Subject: [PATCH] Update tests --- packages/cross-import/jest.config.ts | 7 ++- packages/cross-import/package.json | 4 +- packages/cross-import/src/index.ts | 1 - packages/cross-import/tests/external.test.ts | 2 +- .../cross-import/tests/{ => fixtures}/bar.ts | 0 .../tests/{ => fixtures}/config.css.ts | 0 .../tests/{ => fixtures}/export.ts | 0 .../tests/{ => fixtures}/external.ts | 0 .../cross-import/tests/{ => fixtures}/foo.ts | 2 +- .../tests/{ => fixtures}/home-config.ts | 0 packages/cross-import/tests/real.mjs | 45 ------------------- packages/cross-import/tests/test.ts | 23 ++++++---- packages/explore-config/jest.config.ts | 12 +++-- .../{ => tests}/fixtures/card.css.js | 0 .../{ => tests}/fixtures/card.css.mjs | 0 .../{ => tests}/fixtures/card.css.ts | 0 .../{ => tests}/fixtures/master.css.js | 0 .../{ => tests}/fixtures/master.css.mjs | 0 .../{ => tests}/fixtures/master.css.ts | 0 packages/explore-config/tests/test.ts | 9 ++-- pnpm-lock.yaml | 13 ++++-- 21 files changed, 46 insertions(+), 72 deletions(-) rename packages/cross-import/tests/{ => fixtures}/bar.ts (100%) rename packages/cross-import/tests/{ => fixtures}/config.css.ts (100%) rename packages/cross-import/tests/{ => fixtures}/export.ts (100%) rename packages/cross-import/tests/{ => fixtures}/external.ts (100%) rename packages/cross-import/tests/{ => fixtures}/foo.ts (51%) rename packages/cross-import/tests/{ => fixtures}/home-config.ts (100%) delete mode 100644 packages/cross-import/tests/real.mjs rename packages/explore-config/{ => tests}/fixtures/card.css.js (100%) rename packages/explore-config/{ => tests}/fixtures/card.css.mjs (100%) rename packages/explore-config/{ => tests}/fixtures/card.css.ts (100%) rename packages/explore-config/{ => tests}/fixtures/master.css.js (100%) rename packages/explore-config/{ => tests}/fixtures/master.css.mjs (100%) rename packages/explore-config/{ => tests}/fixtures/master.css.ts (100%) diff --git a/packages/cross-import/jest.config.ts b/packages/cross-import/jest.config.ts index 93ee4d5..4a9d415 100644 --- a/packages/cross-import/jest.config.ts +++ b/packages/cross-import/jest.config.ts @@ -1,4 +1,9 @@ /** @type {import('jest').Config} */ export default { - preset: '@techor/jest' + preset: '@techor/jest', + transformIgnorePatterns: [ + 'node_modules/(?!callsites)/', + /* should simulate real node runtime */ + 'fixtures/' + ] } diff --git a/packages/cross-import/package.json b/packages/cross-import/package.json index 930ca2d..b484927 100644 --- a/packages/cross-import/package.json +++ b/packages/cross-import/package.json @@ -6,7 +6,7 @@ "build:type": "tsc --emitDeclarationOnly --preserveWatchOutput", "build": "pnpm run \"/^build:.*/\"", "dev": "pnpm run \"/^build:.*/\" --watch", - "test": "pnpm build:main && node ./tests/real.mjs && jest", + "test": "jest", "type-check": "tsc --noEmit", "lint": "eslint src" }, @@ -64,6 +64,6 @@ }, "devDependencies": { "@master/css": "2.0.0-rc.24", - "pretty-bytes": "^6.1.0" + "nanoid": "^5.0.7" } } \ No newline at end of file diff --git a/packages/cross-import/src/index.ts b/packages/cross-import/src/index.ts index 6f8b654..ab7e526 100644 --- a/packages/cross-import/src/index.ts +++ b/packages/cross-import/src/index.ts @@ -19,7 +19,6 @@ export default function crossImport(modulePath: string): any { console.log('[cross-import] fall back to sucrase runtime transform:', modulePath) } return jiti(__filename, { - interopDefault: true, cache: false, debug: !!process.env.DEBUG, onError(error) { diff --git a/packages/cross-import/tests/external.test.ts b/packages/cross-import/tests/external.test.ts index e0ca07f..7bd72f0 100644 --- a/packages/cross-import/tests/external.test.ts +++ b/packages/cross-import/tests/external.test.ts @@ -3,7 +3,7 @@ import crossImport from '../src' it('read module with third-party deps', () => { expect( - crossImport(resolve(__dirname, 'external.ts')).default + crossImport(resolve(__dirname, 'fixtures/external.ts')).default ) .toBeDefined() }) \ No newline at end of file diff --git a/packages/cross-import/tests/bar.ts b/packages/cross-import/tests/fixtures/bar.ts similarity index 100% rename from packages/cross-import/tests/bar.ts rename to packages/cross-import/tests/fixtures/bar.ts diff --git a/packages/cross-import/tests/config.css.ts b/packages/cross-import/tests/fixtures/config.css.ts similarity index 100% rename from packages/cross-import/tests/config.css.ts rename to packages/cross-import/tests/fixtures/config.css.ts diff --git a/packages/cross-import/tests/export.ts b/packages/cross-import/tests/fixtures/export.ts similarity index 100% rename from packages/cross-import/tests/export.ts rename to packages/cross-import/tests/fixtures/export.ts diff --git a/packages/cross-import/tests/external.ts b/packages/cross-import/tests/fixtures/external.ts similarity index 100% rename from packages/cross-import/tests/external.ts rename to packages/cross-import/tests/fixtures/external.ts diff --git a/packages/cross-import/tests/foo.ts b/packages/cross-import/tests/fixtures/foo.ts similarity index 51% rename from packages/cross-import/tests/foo.ts rename to packages/cross-import/tests/fixtures/foo.ts index 473d838..bd3d244 100644 --- a/packages/cross-import/tests/foo.ts +++ b/packages/cross-import/tests/fixtures/foo.ts @@ -1,3 +1,3 @@ -export { default } from 'pretty-bytes' +export { nanoid as default } from 'nanoid' export * from './bar' export const foo = 'foo' \ No newline at end of file diff --git a/packages/cross-import/tests/home-config.ts b/packages/cross-import/tests/fixtures/home-config.ts similarity index 100% rename from packages/cross-import/tests/home-config.ts rename to packages/cross-import/tests/fixtures/home-config.ts diff --git a/packages/cross-import/tests/real.mjs b/packages/cross-import/tests/real.mjs deleted file mode 100644 index 1b6c070..0000000 --- a/packages/cross-import/tests/real.mjs +++ /dev/null @@ -1,45 +0,0 @@ -import crossImport from '../dist/index.mjs' -import fs from 'fs' -import path, { resolve } from 'path' -import { fileURLToPath } from 'url' - -const __filename = fileURLToPath(import.meta.url) -const __dirname = path.dirname(__filename) - -/** - * 測試 require cache 在真實 Node 環境運作時是否有被正確的清除 - */ -const configPath = path.join(__dirname, 'config.tmp.js') - -fs.writeFileSync(configPath, 'module.exports = { a: 0 }') -const module1 = crossImport(configPath) -if (module1.a !== 0) { - throw new Error(`crossImport(${module1}) module1.a !== 0`) -} - -const externalModule = crossImport(resolve(__dirname, 'external.ts')) -if (!externalModule.default) { - throw new Error(`crossImport(${module1}) external is not defined`) -} - -// fs.writeFileSync(configPath, 'module.exports = { b: 0 }') -// const module2 = crossImport(configPath) -// if (module2.b !== 0) { -// throw new Error(`crossImport(${module1}) module2.b !== 0`) -// } - -// // ts -// const tsConfigPath = path.join(__dirname, 'config.tmp.ts') - -// fs.writeFileSync(tsConfigPath, 'module.exports = { a: 0 }') -// const tsModule1 = crossImport(tsConfigPath) -// if (tsModule1.a !== 0) { -// throw new Error(`crossImport(${tsModule1}) module1.a !== 0`) -// } - -// fs.writeFileSync(tsConfigPath, 'module.exports = { b: 0 }') -// const tsModule2 = crossImport(tsConfigPath) -// if (tsModule2.b !== 0) { -// throw new Error(`crossImport(${module1}) tsModule2.b !== 0`) -// } - diff --git a/packages/cross-import/tests/test.ts b/packages/cross-import/tests/test.ts index 678f6ce..8d50638 100644 --- a/packages/cross-import/tests/test.ts +++ b/packages/cross-import/tests/test.ts @@ -1,13 +1,13 @@ import crossImport from '../src' -import fs from 'fs' import path from 'path' -import prettyBytes from 'pretty-bytes' +import { nanoid } from 'nanoid' +import { writeFileSync } from 'fs' it('import .ts in .js', () => { expect( - crossImport(path.resolve(__dirname, './foo.ts')) + crossImport(path.resolve(__dirname, 'fixtures/foo.ts')) ).toEqual({ - 'default': prettyBytes, + 'default': nanoid, 'bar': 'bar', 'foo': 'foo' }) @@ -15,7 +15,7 @@ it('import .ts in .js', () => { it('read module from file', () => { expect( - crossImport(path.resolve(__dirname, 'home-config.ts'))) + crossImport(path.resolve(__dirname, 'fixtures/home-config.ts'))) .toEqual({ 'default': { 'classes': { 'btn': 'font:12' }, @@ -28,7 +28,7 @@ it('read module from file', () => { it('read module with export .css.ts', () => { expect( - crossImport(path.resolve(__dirname, 'export.ts'))) + crossImport(path.resolve(__dirname, 'fixtures/export.ts'))) .toEqual({ 'default': { 'colors': { @@ -40,9 +40,16 @@ it('read module with export .css.ts', () => { it('read non-existent file', () => { expect(() => { - crossImport(path.resolve(__dirname, 'idontexist.ts')) + crossImport(path.resolve(__dirname, 'fixtures/idontexist.ts')) }) - .toThrowError() + .toThrow() +}) + +it('read module with third-party deps', () => { + const configPath = path.join(__dirname, 'fixtures/config.tmp.js') + writeFileSync(configPath, 'module.exports = { a: 0 }') + const module1 = crossImport(configPath) + expect(module1).toEqual({ a: 0 }) }) // Do not test secondary imports in a test environment, inaccurate. \ No newline at end of file diff --git a/packages/explore-config/jest.config.ts b/packages/explore-config/jest.config.ts index 0e8c952..4a9d415 100644 --- a/packages/explore-config/jest.config.ts +++ b/packages/explore-config/jest.config.ts @@ -1,11 +1,9 @@ /** @type {import('jest').Config} */ export default { preset: '@techor/jest', - transform: { - '^.+\\.(t|j)sx?$': [ - '@swc/jest' - ], - }, - transformIgnorePatterns: ['node_modules/(?!callsites)/'], - extensionsToTreatAsEsm: [] + transformIgnorePatterns: [ + 'node_modules/(?!callsites)/', + /* should simulate real node runtime */ + 'fixtures/' + ] } diff --git a/packages/explore-config/fixtures/card.css.js b/packages/explore-config/tests/fixtures/card.css.js similarity index 100% rename from packages/explore-config/fixtures/card.css.js rename to packages/explore-config/tests/fixtures/card.css.js diff --git a/packages/explore-config/fixtures/card.css.mjs b/packages/explore-config/tests/fixtures/card.css.mjs similarity index 100% rename from packages/explore-config/fixtures/card.css.mjs rename to packages/explore-config/tests/fixtures/card.css.mjs diff --git a/packages/explore-config/fixtures/card.css.ts b/packages/explore-config/tests/fixtures/card.css.ts similarity index 100% rename from packages/explore-config/fixtures/card.css.ts rename to packages/explore-config/tests/fixtures/card.css.ts diff --git a/packages/explore-config/fixtures/master.css.js b/packages/explore-config/tests/fixtures/master.css.js similarity index 100% rename from packages/explore-config/fixtures/master.css.js rename to packages/explore-config/tests/fixtures/master.css.js diff --git a/packages/explore-config/fixtures/master.css.mjs b/packages/explore-config/tests/fixtures/master.css.mjs similarity index 100% rename from packages/explore-config/fixtures/master.css.mjs rename to packages/explore-config/tests/fixtures/master.css.mjs diff --git a/packages/explore-config/fixtures/master.css.ts b/packages/explore-config/tests/fixtures/master.css.ts similarity index 100% rename from packages/explore-config/fixtures/master.css.ts rename to packages/explore-config/tests/fixtures/master.css.ts diff --git a/packages/explore-config/tests/test.ts b/packages/explore-config/tests/test.ts index 3db8490..488dad3 100644 --- a/packages/explore-config/tests/test.ts +++ b/packages/explore-config/tests/test.ts @@ -1,7 +1,10 @@ +import { dirname } from 'path' import exploreConfig from '../src' +const __dirname = dirname(new URL(import.meta.url).pathname) + it('read .js config', () => { - const config = exploreConfig('../fixtures/master.css', { cwd: __dirname, extensions: ['js'] }) + const config = exploreConfig('./fixtures/master.css', { cwd: __dirname, extensions: ['js'] }) expect(config).toEqual({ extends: [ { @@ -15,7 +18,7 @@ it('read .js config', () => { }) it('read .ts config', () => { - const config = exploreConfig('../fixtures/master.css', { cwd: __dirname, extensions: ['ts'] }) + const config = exploreConfig('./fixtures/master.css', { cwd: __dirname, extensions: ['ts'] }) expect(config).toEqual({ extends: [ { @@ -29,7 +32,7 @@ it('read .ts config', () => { }) it('read .mjs config', () => { - const config = exploreConfig('../fixtures/master.css', { cwd: __dirname, extensions: ['mjs'] }) + const config = exploreConfig('./fixtures/master.css', { cwd: __dirname, extensions: ['mjs'] }) expect(config).toEqual({ extends: [ { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b76f245..2821363 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -136,9 +136,9 @@ importers: '@master/css': specifier: 2.0.0-rc.24 version: 2.0.0-rc.24 - pretty-bytes: - specifier: ^6.1.0 - version: 6.1.1 + nanoid: + specifier: ^5.0.7 + version: 5.0.7 packages/eslint-config: dependencies: @@ -5419,6 +5419,12 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 + /nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + engines: {node: ^18 || >=20} + hasBin: true + dev: true + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -5909,6 +5915,7 @@ packages: /pretty-bytes@6.1.1: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} + dev: false /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}