diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index bd9a3ec..704b77e 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -392,6 +392,37 @@ exports[`loader should resolve nested imports: errors 1`] = `[]`; exports[`loader should resolve nested imports: warnings 1`] = `[]`; +exports[`loader should resolve nested package #2: css 1`] = ` +".less-package-1-nested { + background: red; +} +.less-package-2 { + background: red; +} +.top { + color: red; +} +" +`; + +exports[`loader should resolve nested package #2: errors 1`] = `[]`; + +exports[`loader should resolve nested package #2: warnings 1`] = `[]`; + +exports[`loader should resolve nested package: css 1`] = ` +".less-package-1-nested { + background: red; +} +.less-package-2 { + background: red; +} +" +`; + +exports[`loader should resolve nested package: errors 1`] = `[]`; + +exports[`loader should resolve nested package: warnings 1`] = `[]`; + exports[`loader should resolve non-less import with alias: css 1`] = ` ".some-file { background: hotpink; diff --git a/test/fixtures/less-package.less b/test/fixtures/less-package.less new file mode 100644 index 0000000..e920723 --- /dev/null +++ b/test/fixtures/less-package.less @@ -0,0 +1,5 @@ +@import "less-package-2"; + +.top { + color: red; +} diff --git a/test/fixtures/node_modules/less-package-1/index.less b/test/fixtures/node_modules/less-package-1/index.less new file mode 100644 index 0000000..09416fa --- /dev/null +++ b/test/fixtures/node_modules/less-package-1/index.less @@ -0,0 +1,3 @@ +.less-package-1 { + background: red; +} diff --git a/test/fixtures/node_modules/less-package-1/package.json b/test/fixtures/node_modules/less-package-1/package.json new file mode 100644 index 0000000..27fba25 --- /dev/null +++ b/test/fixtures/node_modules/less-package-1/package.json @@ -0,0 +1,4 @@ +{ + "name": "less-package-1", + "version": "1.0.0" +} diff --git a/test/fixtures/node_modules/less-package-2/index.less b/test/fixtures/node_modules/less-package-2/index.less new file mode 100644 index 0000000..4fe1119 --- /dev/null +++ b/test/fixtures/node_modules/less-package-2/index.less @@ -0,0 +1,5 @@ +@import "less-package-1/index.less"; + +.less-package-2 { + background: red; +} diff --git a/test/fixtures/node_modules/less-package-2/node_modules/less-package-1/index.less b/test/fixtures/node_modules/less-package-2/node_modules/less-package-1/index.less new file mode 100644 index 0000000..3fc9484 --- /dev/null +++ b/test/fixtures/node_modules/less-package-2/node_modules/less-package-1/index.less @@ -0,0 +1,3 @@ +.less-package-1-nested { + background: red; +} diff --git a/test/fixtures/node_modules/less-package-2/node_modules/less-package-1/package.json b/test/fixtures/node_modules/less-package-2/node_modules/less-package-1/package.json new file mode 100644 index 0000000..b0f032f --- /dev/null +++ b/test/fixtures/node_modules/less-package-2/node_modules/less-package-1/package.json @@ -0,0 +1,4 @@ +{ + "name": "less-package-1", + "version": "2.0.0" +} diff --git a/test/fixtures/node_modules/less-package-2/package.json b/test/fixtures/node_modules/less-package-2/package.json new file mode 100644 index 0000000..aa58e1d --- /dev/null +++ b/test/fixtures/node_modules/less-package-2/package.json @@ -0,0 +1,4 @@ +{ + "name": "less-package-2", + "version": "1.0.0" +} diff --git a/test/helpers/getCodeFromLess.js b/test/helpers/getCodeFromLess.js index 5cc5511..2301619 100644 --- a/test/helpers/getCodeFromLess.js +++ b/test/helpers/getCodeFromLess.js @@ -115,6 +115,24 @@ const pathMap = { "custom-main-files", "custom.less" ), + "less-package-1/index.less": path.resolve( + __dirname, + "..", + "fixtures", + "node_modules", + "less-package-2", + "node_modules", + "less-package-1", + "index.less" + ), + "less-package-2": path.resolve( + __dirname, + "..", + "fixtures", + "node_modules", + "less-package-2", + "index.less" + ), }; class ResolvePlugin extends less.FileManager { diff --git a/test/loader.test.js b/test/loader.test.js index 9190e1e..a37914c 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -843,6 +843,32 @@ describe("loader", () => { expect(getErrors(stats)).toMatchSnapshot("errors"); }); + it("should resolve nested package", async () => { + const testId = "./node_modules/less-package-2/index.less"; + const compiler = getCompiler(testId); + const stats = await compile(compiler); + const codeFromBundle = getCodeFromBundle(stats, compiler); + const codeFromLess = await getCodeFromLess(testId); + + expect(codeFromBundle.css).toBe(codeFromLess.css); + expect(codeFromBundle.css).toMatchSnapshot("css"); + expect(getWarnings(stats)).toMatchSnapshot("warnings"); + expect(getErrors(stats)).toMatchSnapshot("errors"); + }); + + it("should resolve nested package #2", async () => { + const testId = "./less-package.less"; + const compiler = getCompiler(testId); + const stats = await compile(compiler); + const codeFromBundle = getCodeFromBundle(stats, compiler); + const codeFromLess = await getCodeFromLess(testId); + + expect(codeFromBundle.css).toBe(codeFromLess.css); + expect(codeFromBundle.css).toMatchSnapshot("css"); + expect(getWarnings(stats)).toMatchSnapshot("warnings"); + expect(getErrors(stats)).toMatchSnapshot("errors"); + }); + // TODO bug on windows it.skip("should work with circular imports", async () => { const testId = "./circular.less";