|
1 | | -import { describe, expect, test } from 'vitest' |
| 1 | +import { beforeAll, describe, expect, test } from 'vitest' |
2 | 2 | import { assertTypes, deepClone, objectAttr, toArray } from '@vitest/utils' |
3 | 3 | import { deepMerge, resetModules } from '../../../packages/vitest/src/utils' |
4 | 4 | import { deepMergeSnapshot } from '../../../packages/vitest/src/integrations/snapshot/port/utils' |
5 | | -import type { ModuleCacheMap } from '../../../packages/vite-node/src/types' |
| 5 | +import type { EncodedSourceMap } from '../../../packages/vite-node/src/types' |
| 6 | +import { ModuleCacheMap } from '../../../packages/vite-node/dist/client' |
6 | 7 |
|
7 | 8 | describe('assertTypes', () => { |
8 | 9 | test('the type of value should be number', () => { |
@@ -151,36 +152,44 @@ describe('deepClone', () => { |
151 | 152 | }) |
152 | 153 |
|
153 | 154 | describe('resetModules doesn\'t resets only user modules', () => { |
154 | | - test('resets user modules', () => { |
155 | | - const moduleCache = new Map() as ModuleCacheMap |
156 | | - moduleCache.set('/some-module.ts', {}) |
157 | | - moduleCache.set('/@fs/some-path.ts', {}) |
158 | | - |
159 | | - resetModules(moduleCache) |
160 | | - |
161 | | - expect(moduleCache.size).toBe(0) |
162 | | - }) |
163 | | - |
164 | | - test('doesn\'t reset vitest modules', () => { |
165 | | - const moduleCache = new Map() as ModuleCacheMap |
166 | | - moduleCache.set('/node_modules/vitest/dist/index.js', {}) |
167 | | - moduleCache.set('/node_modules/vitest-virtual-da9876a/dist/index.js', {}) |
168 | | - moduleCache.set('/node_modules/some-module@vitest/dist/index.js', {}) |
169 | | - moduleCache.set('/packages/vitest/dist/index.js', {}) |
170 | | - |
| 155 | + const mod = () => ({ evaluated: true, promise: Promise.resolve({}), resolving: false, exports: {}, map: {} as EncodedSourceMap }) |
| 156 | + |
| 157 | + const moduleCache = new ModuleCacheMap() |
| 158 | + const modules = [ |
| 159 | + ['/some-module.ts', true], |
| 160 | + ['/@fs/some-path.ts', true], |
| 161 | + ['/node_modules/vitest/dist/index.js', false], |
| 162 | + ['/node_modules/vitest-virtual-da9876a/dist/index.js', false], |
| 163 | + ['/node_modules/some-module@vitest/dist/index.js', false], |
| 164 | + ['/packages/vitest/dist/index.js', false], |
| 165 | + ['mock:/some-module.ts', false], |
| 166 | + ['mock:/@fs/some-path.ts', false], |
| 167 | + ] as const |
| 168 | + |
| 169 | + beforeAll(() => { |
| 170 | + modules.forEach(([path]) => { |
| 171 | + moduleCache.set(path, mod()) |
| 172 | + }) |
171 | 173 | resetModules(moduleCache) |
172 | | - |
173 | | - expect(moduleCache.size).toBe(4) |
174 | 174 | }) |
175 | 175 |
|
176 | | - test('doesn\'t reset mocks', () => { |
177 | | - const moduleCache = new Map() as ModuleCacheMap |
178 | | - moduleCache.set('mock:/some-module.ts', {}) |
179 | | - moduleCache.set('mock:/@fs/some-path.ts', {}) |
| 176 | + test.each(modules)('Cashe for %s is reseted (%s)', (path, reset) => { |
| 177 | + const cached = moduleCache.get(path) |
180 | 178 |
|
181 | | - resetModules(moduleCache) |
| 179 | + if (reset) { |
| 180 | + expect(cached).not.toHaveProperty('evaluated') |
| 181 | + expect(cached).not.toHaveProperty('resolving') |
| 182 | + expect(cached).not.toHaveProperty('exports') |
| 183 | + expect(cached).not.toHaveProperty('promise') |
| 184 | + } |
| 185 | + else { |
| 186 | + expect(cached).toHaveProperty('evaluated') |
| 187 | + expect(cached).toHaveProperty('resolving') |
| 188 | + expect(cached).toHaveProperty('exports') |
| 189 | + expect(cached).toHaveProperty('promise') |
| 190 | + } |
182 | 191 |
|
183 | | - expect(moduleCache.size).toBe(2) |
| 192 | + expect(cached).toHaveProperty('map') |
184 | 193 | }) |
185 | 194 | }) |
186 | 195 |
|
|
0 commit comments