From 4c5cf91d124d423fe028beecda952125698c1d5d Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 11 Oct 2024 10:26:42 +0900 Subject: [PATCH] test: ssr external / resolveId test (#18327) --- .../src/node/__tests__/environment.spec.ts | 9 ++-- .../entry-with-module.js | 2 + .../test-dep-conditions/dir/index.default.js | 1 + .../test-dep-conditions/dir/index.module.js | 1 + .../fixtures/test-dep-conditions/package.json | 4 ++ .../vite/src/node/__tests__/resolve.spec.ts | 52 +++++++++++++++++++ 6 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 packages/vite/src/node/__tests__/fixtures/test-dep-conditions-app/entry-with-module.js create mode 100644 packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.default.js create mode 100644 packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.module.js create mode 100644 packages/vite/src/node/__tests__/resolve.spec.ts diff --git a/packages/vite/src/node/__tests__/environment.spec.ts b/packages/vite/src/node/__tests__/environment.spec.ts index 991eae3e76961a..6cd24a2ece3c0b 100644 --- a/packages/vite/src/node/__tests__/environment.spec.ts +++ b/packages/vite/src/node/__tests__/environment.spec.ts @@ -2,13 +2,14 @@ import path from 'node:path' import { describe, expect, onTestFinished, test } from 'vitest' import type { RollupOutput } from 'rollup' import { createServer } from '../server' -import { defineConfig } from '../config' +import type { InlineConfig } from '../config' import { createBuilder } from '../build' import { createServerModuleRunner } from '../ssr/runtime/serverModuleRunner' describe('custom environment conditions', () => { - function getConfig() { - return defineConfig({ + function getConfig(): InlineConfig { + return { + configFile: false, root: import.meta.dirname, logLevel: 'error', server: { @@ -116,7 +117,7 @@ describe('custom environment conditions', () => { }, }, }, - }) + } } test('dev', async () => { diff --git a/packages/vite/src/node/__tests__/fixtures/test-dep-conditions-app/entry-with-module.js b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions-app/entry-with-module.js new file mode 100644 index 00000000000000..68a56aa5b2c3c7 --- /dev/null +++ b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions-app/entry-with-module.js @@ -0,0 +1,2 @@ +import dep from '@vitejs/test-dep-conditions/with-module' +export default dep diff --git a/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.default.js b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.default.js new file mode 100644 index 00000000000000..b53352dfdcb5b3 --- /dev/null +++ b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.default.js @@ -0,0 +1 @@ +export default 'dir/index.default.js' diff --git a/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.module.js b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.module.js new file mode 100644 index 00000000000000..f48e4e32b1a8ed --- /dev/null +++ b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/dir/index.module.js @@ -0,0 +1 @@ +export default 'dir/index.module.js' diff --git a/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/package.json b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/package.json index cfed8db16c6bd6..08f9558e16cc65 100644 --- a/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/package.json +++ b/packages/vite/src/node/__tests__/fixtures/test-dep-conditions/package.json @@ -11,6 +11,10 @@ "worker": "./index.worker.js", "browser": "./index.browser.js", "default": "./index.default.js" + }, + "./with-module": { + "module": "./dir/index.module.js", + "default": "./dir/index.default.js" } } } diff --git a/packages/vite/src/node/__tests__/resolve.spec.ts b/packages/vite/src/node/__tests__/resolve.spec.ts new file mode 100644 index 00000000000000..9929b416df744d --- /dev/null +++ b/packages/vite/src/node/__tests__/resolve.spec.ts @@ -0,0 +1,52 @@ +import { describe, expect, onTestFinished, test } from 'vitest' +import { createServer } from '../server' +import { createServerModuleRunner } from '../ssr/runtime/serverModuleRunner' + +describe('import and resolveId', () => { + async function createTestServer() { + const server = await createServer({ + configFile: false, + root: import.meta.dirname, + logLevel: 'error', + server: { + middlewareMode: true, + }, + }) + onTestFinished(() => server.close()) + const runner = createServerModuleRunner(server.environments.ssr, { + hmr: { + logger: false, + }, + sourcemapInterceptor: false, + }) + return { server, runner } + } + + test('import first', async () => { + const { server, runner } = await createTestServer() + const mod = await runner.import( + '/fixtures/test-dep-conditions-app/entry-with-module', + ) + const resolved = await server.environments.ssr.pluginContainer.resolveId( + '@vitejs/test-dep-conditions/with-module', + ) + expect([mod.default, resolved?.id]).toEqual([ + 'dir/index.default.js', + expect.stringContaining('dir/index.module.js'), + ]) + }) + + test('resolveId first', async () => { + const { server, runner } = await createTestServer() + const resolved = await server.environments.ssr.pluginContainer.resolveId( + '@vitejs/test-dep-conditions/with-module', + ) + const mod = await runner.import( + '/fixtures/test-dep-conditions-app/entry-with-module', + ) + expect([mod.default, resolved?.id]).toEqual([ + 'dir/index.default.js', + expect.stringContaining('dir/index.module.js'), + ]) + }) +})