|
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