diff --git a/README.md b/README.md index 47dc9913..5fabe641 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ _**Note: For versions of node prior to v20.6.0,** "--loader" command line arguments must be used with `esmock` as demonstrated [in the wiki.][4] Current versions of node do not require "--loader"._ -_**Note: Typescript loaders** `ts-node` 👍 and `tsm` 👍 are compatible with other loaders, [including esmock.][3] `swc` 👎 and `tsx` 👎 are demonstrated as **incompatible** with other loaders, including esmock._ +_**Note: TypeScript loaders** `ts-node` 👍, `tsm` 👍 and `tsx` 👍 are compatible with other loaders, [including esmock.][3] `swc-node` has, at time of writing, been demonstrated as **incompatible** with other loaders, including esmock._ `esmock` has the below signature ```js diff --git a/tests/package.json b/tests/package.json index 805efe5f..93f52bd5 100644 --- a/tests/package.json +++ b/tests/package.json @@ -37,6 +37,7 @@ "install:test-ava": "cd tests-ava && npm install", "install:test-uvu": "cd tests-uvu && npm install", "install:test-tsm": "cd tests-tsm && npm install", + "install:test-tsx": "cd tests-tsx && npm install", "install:test-node": "cd tests-node && npm install", "install:test-jest": "cd tests-jest && npm install", "install:test-jest-ts": "cd tests-jest-ts && npm install", @@ -49,8 +50,10 @@ "test:test-uvu": "cd tests-uvu && npm test", "test:test-mocha": "cd tests-mocha && npm test", "test:test-ava": "cd tests-ava && npm test", + "test:test-tsx": "cd tests-tsx && npm test", "test:node19-tsm": " cd tests-tsm && npm test", "test:node18-test-tsm": "npm run isnodenight || npm run test:node19-tsm", + "test:node18-test-tsx": "cd tests-tsx && npm run test", "test:node18-test-node": "cd tests-node && npm test", "test:node18-test-jest": "cd tests-jest && npm test", "test:node18-test-jest-ts": "cd tests-jest-ts && npm test", diff --git a/tests/tests-FAIL-tsx/esmock.node.tsx.test.ts b/tests/tests-FAIL-tsx/esmock.node.tsx.test.ts deleted file mode 100644 index ac032abd..00000000 --- a/tests/tests-FAIL-tsx/esmock.node.tsx.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import test from 'node:test' -import assert from 'assert' -import esmock from 'esmock' - -test('should mock js when using tsx', async () => { - const main = await esmock('../local/main.js', { - path: { - basename: () => 'hellow' - } - }) - - assert.strictEqual(main.pathbasenamewrap(), 'hellow') -}) - -// tsx fails :/ https://github.com/esbuild-kit/tsx/issues/264 -// -// test('should mock ts when using tsx - unknown file extension', async () => { -// const main = await esmock('../local/main-ts.ts', { -// path: { -// basename: () => 'hellow' -// } -// }) -// -// assert.strictEqual(main.pathbasenamewrap(), 'hellow') -// }) diff --git a/tests/tests-FAIL-tsx/package.json b/tests/tests-FAIL-tsx/package.json deleted file mode 100644 index 80ab97dd..00000000 --- a/tests/tests-FAIL-tsx/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "module", - "description": "esmock unit tests, tsx with node", - "repository": { - "type": "git", - "url": "https://github.com/iambumblehead/esmock.git" - }, - "dependencies": { - "esmock": "file:..", - "tsx": "^3.12.7" - }, - "scripts": { - "test": "node --loader=tsx --loader=esmock --test esmock.node.tsx.test.ts" - } -} diff --git a/tests/tests-tsx/esmock.node.tsx.test.ts b/tests/tests-tsx/esmock.node.tsx.test.ts new file mode 100644 index 00000000..558f0a03 --- /dev/null +++ b/tests/tests-tsx/esmock.node.tsx.test.ts @@ -0,0 +1,23 @@ +import test from 'node:test' +import assert from 'assert' +import esmock from 'esmock' + +test('should mock js when using tsx', async () => { + const main = await esmock('../local/main.js', { + path: { + basename: () => 'hellow' + } + }) + + assert.strictEqual(main.pathbasenamewrap(), 'hellow') +}) + +test('should mock ts when using tsx', async () => { + const main = await esmock('../local/main-ts.ts', { + path: { + basename: () => 'hellow' + } + }) + + assert.strictEqual(main.pathbasenamewrap(), 'hellow') +}) diff --git a/tests/tests-tsx/package.json b/tests/tests-tsx/package.json new file mode 100644 index 00000000..3deafcd3 --- /dev/null +++ b/tests/tests-tsx/package.json @@ -0,0 +1,21 @@ +{ + "type": "module", + "description": "esmock unit tests, tsx with node", + "repository": { + "type": "git", + "url": "https://github.com/iambumblehead/esmock.git" + }, + "dependencies": { + "esmock": "file:..", + "tsx": "^4.15.5" + }, + "scripts": { + "isloaderavailable": "node -e \"(([mj, mn]) => (+mj < 18 || (+mj === 20 && +mn < 6) || (+mj === 18 && +mn < 19)))(process.versions.node.split('.')) || process.exit(1)\"", + "test:loader": "node --loader=tsx/esm --loader=esmock --test esmock.node.tsx.test.ts", + "test:current": "node --import=tsx/esm --test esmock.node.tsx.test.ts", + "test": "npm run isloaderavailable && npm run test:loader || npm run test:current" + }, + "devDependencies": { + "@types/node": "^20.14.2" + } +} diff --git a/tests/tests-FAIL-tsx/tsconfig.json b/tests/tests-tsx/tsconfig.json similarity index 67% rename from tests/tests-FAIL-tsx/tsconfig.json rename to tests/tests-tsx/tsconfig.json index 5b17f4eb..266f26f0 100644 --- a/tests/tests-FAIL-tsx/tsconfig.json +++ b/tests/tests-tsx/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "allowSyntheticDefaultImports": true, "module": "ESNext", - "moduleResolution": "node" + "moduleResolution": "node", + "lib": ["ES2015"] } }