Skip to content

Commit 6c1a26a

Browse files
authoredJan 16, 2023
fix: mock css files imported with "require" (#2679)
This is usually happens inside UI libraries
1 parent f22ca93 commit 6c1a26a

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed
 

‎packages/vitest/src/runtime/setup.ts

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/* eslint-disable n/no-deprecated-api */
2+
13
import { installSourcemapsSupport } from 'vite-node/source-map'
24
import { environments } from '../integrations/env'
35
import type { Environment, ResolvedConfig } from '../types'
@@ -23,6 +25,11 @@ export async function setupGlobalEnv(config: ResolvedConfig) {
2325
if (globalSetup)
2426
return
2527

28+
// always mock "required" `css` files, because we cannot process them
29+
require.extensions['.css'] = () => ({})
30+
require.extensions['.scss'] = () => ({})
31+
require.extensions['.sass'] = () => ({})
32+
2633
globalSetup = true
2734

2835
if (isNode) {

‎test/core/src/file-css.css

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.red {
2+
color: red;
3+
}

‎test/core/src/file-sass.sass

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.red
2+
color: red;

‎test/core/src/file-scss.scss

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.red {
2+
color: red;
3+
}

‎test/core/test/require.test.ts

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { describe, expect, it } from 'vitest'
2+
3+
const _require = require
4+
5+
describe('using "require" to import a module', () => {
6+
it('importing css files works, but doesn\'t process them', () => {
7+
const css = _require('./../src/file-css.css')
8+
const sass = _require('./../src/file-sass.sass')
9+
const scss = _require('./../src/file-scss.scss')
10+
11+
expect(css).toEqual({})
12+
expect(sass).toEqual({})
13+
expect(scss).toEqual({})
14+
})
15+
})

0 commit comments

Comments
 (0)
Please sign in to comment.