Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: tests for composes #1102

Merged
merged 1 commit into from
Jul 7, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions test/__snapshots__/modules-option.test.js.snap
Original file line number Diff line number Diff line change
@@ -1042,6 +1042,116 @@ Array [

exports[`"modules" option should should work with two leading underscore: warnings 1`] = `Array []`;

exports[`"modules" option should support resolving in composes preprocessor files with extensions: errors 1`] = `Array []`;

exports[`"modules" option should support resolving in composes preprocessor files with extensions: module 1`] = `
"// Imports
var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\");
var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./values.css\\");
var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../src/index.js??[ident]!./less-file.less\\");
var ___CSS_LOADER_ICSS_IMPORT_2___ = require(\\"-!../../../../src/index.js??[ident]!./scss-file.scss\\");
var ___CSS_LOADER_ICSS_IMPORT_3___ = require(\\"-!../../../../src/index.js??[ident]!./sass-file.sass\\");
exports = ___CSS_LOADER_API_IMPORT___(false);
exports.i(___CSS_LOADER_ICSS_IMPORT_0___, \\"\\", true);
exports.i(___CSS_LOADER_ICSS_IMPORT_1___, \\"\\", true);
exports.i(___CSS_LOADER_ICSS_IMPORT_2___, \\"\\", true);
exports.i(___CSS_LOADER_ICSS_IMPORT_3___, \\"\\", true);
// Module
exports.push([module.id, \\".globalClassName {\\\\n color: orange;\\\\n}\\\\n\\\\n._2vZioV5tEV-AlqaI8c_mtN {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n}\\\\n\\\\n.YX1POP6L7ESwR7pdtyRna {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"v-foo\\"] + \\";\\\\n}\\\\n\\\\n._1578mz8iEiOG2qNa19R11c {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_2___.locals[\\"v-bar\\"] + \\";\\\\n}\\\\n\\\\n._1yWiOyfH6HuDl7TOzpnWkK {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_3___.locals[\\"v-baz\\"] + \\";\\\\n}\\\\n\\\\n.OVj95yO5B9JEdIo3xDMtO {\\\\n background: #000;\\\\n}\\\\n\\", \\"\\"]);
// Exports
exports.locals = {
\\"v-def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\"\\",
\\"v-foo\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"v-foo\\"] + \\"\\",
\\"v-bar\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_2___.locals[\\"v-bar\\"] + \\"\\",
\\"v-baz\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_3___.locals[\\"v-baz\\"] + \\"\\",
\\"globalClassName\\": \\"globalClassName\\",
\\"ghi\\": \\"_2vZioV5tEV-AlqaI8c_mtN\\",
\\"class\\": \\"YX1POP6L7ESwR7pdtyRna \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"lessClass\\"] + \\"\\",
\\"other\\": \\"_1578mz8iEiOG2qNa19R11c \\" + ___CSS_LOADER_ICSS_IMPORT_2___.locals[\\"scssClass\\"] + \\"\\",
\\"last\\": \\"_1yWiOyfH6HuDl7TOzpnWkK \\" + ___CSS_LOADER_ICSS_IMPORT_3___.locals[\\"sassClass\\"] + \\"\\",
\\"otherClassName\\": \\"OVj95yO5B9JEdIo3xDMtO globalClassName\\"
};
module.exports = exports;
"
`;

exports[`"modules" option should support resolving in composes preprocessor files with extensions: result 1`] = `
Array [
Array [
"../../src/index.js?[ident]!./modules/composes/values.css",
"
",
"",
],
Array [
"../../src/index.js?[ident]!./modules/composes/less-file.less",
"._3lZeyjNxPePITWh1xVieTf {
padding: 5px;
}
",
"",
],
Array [
"../../src/index.js?[ident]!./modules/composes/scss-file.scss",
"._228B9eI0iy8oD-AJowJJdF {
padding: 15px;
}
",
"",
],
Array [
"../../src/index.js?[ident]!./modules/composes/sass-file.sass",
"

",
"",
],
Array [
"./modules/composes/composes-preprocessors.css",
".globalClassName {
color: orange;
}

._2vZioV5tEV-AlqaI8c_mtN {
color: red;
}

.YX1POP6L7ESwR7pdtyRna {
color: green;
}

._1578mz8iEiOG2qNa19R11c {
color: white;
}

._1yWiOyfH6HuDl7TOzpnWkK {
color: undefined;
}

.OVj95yO5B9JEdIo3xDMtO {
background: #000;
}
",
"",
],
]
`;

exports[`"modules" option should support resolving in composes preprocessor files with extensions: warnings 1`] = `
Array [
"ModuleWarning: Module Warning (from \`replaced original path\`):
Warning

Invalid value definition: v-def: red
@value v-foo: green
@value v-bar: white
@value v-baz: coral

.sassClass
padding: 10px",
]
`;

exports[`"modules" option should support resolving in composes: errors 1`] = `Array []`;

exports[`"modules" option should support resolving in composes: module 1`] = `
32 changes: 32 additions & 0 deletions test/fixtures/modules/composes/composes-preprocessors.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
@value v-def from './values.css';
@value v-foo from './less-file.less';
@value v-bar from './scss-file.scss';
@value v-baz from './sass-file.sass';

:global(.globalClassName) {
color: orange;
}

.ghi {
color: v-def;
}

.class {
color: v-foo;
composes: lessClass from "less-file.less";
}

.other {
color: v-bar;
composes: scssClass from "scss-file.scss";
}

.last {
color: v-baz;
composes: sassClass from "sass-file.sass";
}

.otherClassName {
composes: globalClassName from global;
background: #000;
}
5 changes: 5 additions & 0 deletions test/fixtures/modules/composes/composes-preprocessors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import css from './composes-preprocessors.css';

__export__ = css;

export default css;
8 changes: 8 additions & 0 deletions test/fixtures/modules/composes/less-file.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@value v-def: red;
@value v-foo: green;
@value v-bar: white;
@value v-baz: coral;

.lessClass {
padding: 5px;
}
8 changes: 8 additions & 0 deletions test/fixtures/modules/composes/sass-file.sass
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@value v-def: red
@value v-foo: green
@value v-bar: white
@value v-baz: coral

.sassClass
padding: 10px

8 changes: 8 additions & 0 deletions test/fixtures/modules/composes/scss-file.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@value v-def: red;
@value v-foo: green;
@value v-bar: white;
@value v-baz: coral;

.scssClass {
padding: 15px;
}
22 changes: 22 additions & 0 deletions test/modules-option.test.js
Original file line number Diff line number Diff line change
@@ -328,6 +328,28 @@ describe('"modules" option', () => {
expect(getErrors(stats)).toMatchSnapshot('errors');
});

it('should support resolving in composes preprocessor files with extensions', async () => {
const compiler = getCompiler(
'./modules/composes/composes-preprocessors.js',
{
modules: {
mode: 'local',
exportGlobals: true,
},
}
);
const stats = await compile(compiler);

expect(
getModuleSource('./modules/composes/composes-preprocessors.css', stats)
).toMatchSnapshot('module');
expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot(
'result'
);
expect(getWarnings(stats)).toMatchSnapshot('warnings');
expect(getErrors(stats)).toMatchSnapshot('errors');
});

it('issue #286', async () => {
const compiler = getCompiler(
'./modules/issue-286/source.js',