import { __unstable__loadDesignSystem } from '@tailwindcss/node' import dedent from 'dedent' import postcss from 'postcss' import { expect, it } from 'vitest' import type { UserConfig } from '../../../tailwindcss/src/compat/config/types' import { migrateImport } from './migrate-import' const css = dedent async function migrate(input: string, userConfig: UserConfig = {}) { return postcss() .use( migrateImport({ designSystem: await __unstable__loadDesignSystem(`@import 'tailwindcss';`, { base: __dirname, }), userConfig, }), ) .process(input, { from: expect.getState().testPath }) .then((result) => result.css) } it('prints relative file imports as relative paths', async () => { expect( await migrate(css` @import 'fixtures/test'; @import 'fixtures/test.css'; @import './fixtures/test.css'; @import './fixtures/test'; @import 'fixtures/test' screen; @import 'fixtures/test.css' screen; @import './fixtures/test.css' screen; @import './fixtures/test' screen; @import 'fixtures/test' supports(display: grid); @import 'fixtures/test.css' supports(display: grid); @import './fixtures/test.css' supports(display: grid); @import './fixtures/test' supports(display: grid); @import 'fixtures/test' layer(utilities); @import 'fixtures/test.css' layer(utilities); @import './fixtures/test.css' layer(utilities); @import './fixtures/test' layer(utilities); @import 'fixtures/test' theme(inline); @import 'fixtures/test.css' theme(inline); @import './fixtures/test.css' theme(inline); @import './fixtures/test' theme(inline); @import 'fixtures/test' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import 'fixtures/test.css' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import './fixtures/test.css' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import './fixtures/test' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import 'tailwindcss'; @import 'tailwindcss/theme.css'; @import 'tailwindcss/theme'; `), ).toMatchInlineSnapshot(` "@import './fixtures/test.css'; @import './fixtures/test.css'; @import './fixtures/test.css'; @import './fixtures/test.css'; @import './fixtures/test.css' screen; @import './fixtures/test.css' screen; @import './fixtures/test.css' screen; @import './fixtures/test.css' screen; @import './fixtures/test.css' supports(display: grid); @import './fixtures/test.css' supports(display: grid); @import './fixtures/test.css' supports(display: grid); @import './fixtures/test.css' supports(display: grid); @import './fixtures/test.css' layer(utilities); @import './fixtures/test.css' layer(utilities); @import './fixtures/test.css' layer(utilities); @import './fixtures/test.css' layer(utilities); @import './fixtures/test.css' theme(inline); @import './fixtures/test.css' theme(inline); @import './fixtures/test.css' theme(inline); @import './fixtures/test.css' theme(inline); @import './fixtures/test.css' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import './fixtures/test.css' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import './fixtures/test.css' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import './fixtures/test.css' layer(utilities) supports(display: grid) screen and (min-width: 600px); @import 'tailwindcss'; @import 'tailwindcss/theme.css'; @import 'tailwindcss/theme';" `) })