diff --git a/eslint.config.mjs b/eslint.config.mjs index da993ad2..867645eb 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -4,7 +4,7 @@ import unjs from "eslint-config-unjs"; export default unjs({ ignores: [ ".git", - "test/fixture/dist" + "test/fixtures/**/dist" ], rules: { "unicorn/no-null": 0, diff --git a/test/__snapshots__/build.test.ts.snap b/test/__snapshots__/build.test.ts.snap new file mode 100644 index 00000000..2c538bab --- /dev/null +++ b/test/__snapshots__/build.test.ts.snap @@ -0,0 +1,102 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Build fixtures > declaration (mkdist) > a.d.ts 1`] = ` +"export declare function foo(): number; +" +`; + +exports[`Build fixtures > declaration (mkdist) > a.mjs 1`] = ` +"export function foo() { + return 42; +} +" +`; + +exports[`Build fixtures > declaration (mkdist) > index.d.ts 1`] = ` +"export { foo } from "./a.js"; +" +`; + +exports[`Build fixtures > declaration (mkdist) > index.mjs 1`] = ` +"export { foo } from "./a.js"; +" +`; + +exports[`Build fixtures > declaration (rollup) > index.cjs 1`] = ` +"'use strict'; + +function foo() { + return 42; +} + +exports.foo = foo; +" +`; + +exports[`Build fixtures > declaration (rollup) > index.d.cts 1`] = ` +"declare function foo(): number; + +export { foo }; +" +`; + +exports[`Build fixtures > declaration (rollup) > index.d.mts 1`] = ` +"declare function foo(): number; + +export { foo }; +" +`; + +exports[`Build fixtures > declaration (rollup) > index.d.ts 1`] = ` +"declare function foo(): number; + +export { foo }; +" +`; + +exports[`Build fixtures > declaration (rollup) > index.mjs 1`] = ` +"function foo() { + return 42; +} + +export { foo }; +" +`; + +exports[`Build fixtures > sourcemap (mkdist) > a.mjs 1`] = ` +"export function foo() { + return 42; +} +" +`; + +exports[`Build fixtures > sourcemap (mkdist) > index.mjs 1`] = ` +"export { foo } from "./a.js"; +" +`; + +exports[`Build fixtures > sourcemap (rollup) > index.cjs 1`] = ` +"'use strict'; + +function foo() { + return 42; +} + +exports.foo = foo; +//# sourceMappingURL=index.cjs.map +" +`; + +exports[`Build fixtures > sourcemap (rollup) > index.cjs.map 1`] = `"{"version":3,"file":"index.cjs","sources":["../src/a.ts"],"sourcesContent":["export function foo(): number {\\n return 42;\\n}\\n"],"names":[],"mappings":";;AAAO,SAAS,GAAc,GAAA;AAC5B,EAAO,OAAA,EAAA;AACT;;;;"}"`; + +exports[`Build fixtures > sourcemap (rollup) > index.mjs 1`] = ` +"function foo() { + return 42; +} + +export { foo }; +//# sourceMappingURL=index.mjs.map +" +`; + +exports[`Build fixtures > sourcemap (rollup) > index.mjs.map 1`] = `"{"version":3,"file":"index.mjs","sources":["../src/a.ts"],"sourcesContent":["export function foo(): number {\\n return 42;\\n}\\n"],"names":[],"mappings":"AAAO,SAAS,GAAc,GAAA;AAC5B,EAAO,OAAA,EAAA;AACT;;;;"}"`; diff --git a/test/build.test.ts b/test/build.test.ts new file mode 100644 index 00000000..5d8f776f --- /dev/null +++ b/test/build.test.ts @@ -0,0 +1,51 @@ +import { describe, it, expect } from "vitest"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { build } from "../src/index.js"; + +type BuildConfig = Parameters[2]; + +describe("Build fixtures", () => { + const tests: [string, BuildConfig & { dir: string }][] = [ + [ + "declaration (mkdist)", + { + dir: "fixtures/mkdist-declaration", + }, + ], + [ + "sourcemap (mkdist)", + { + dir: "fixtures/mkdist-sourcemap", + }, + ], + [ + "declaration (rollup)", + { + dir: "fixtures/rollup-declaration", + }, + ], + [ + "sourcemap (rollup)", + { + dir: "fixtures/rollup-sourcemap", + }, + ], + ]; + + it.each(tests)("%s", async (_, { dir, ...buildOptions }) => { + const cwd = new URL(dir.replace(/\/?$/, "/"), import.meta.url); + await build(fileURLToPath(cwd), false, buildOptions); + for (const file of fs.readdirSync(new URL("dist/", cwd), { + recursive: true, + withFileTypes: true, + })) { + if (file.isFile()) { + expect( + fs.readFileSync(path.join(file.parentPath, file.name), "utf8"), + ).toMatchSnapshot(file.name); + } + } + }); +}); diff --git a/test/fixture/bin/cli.mjs b/test/fixtures/default/bin/cli.mjs similarity index 100% rename from test/fixture/bin/cli.mjs rename to test/fixtures/default/bin/cli.mjs diff --git a/test/fixture/build.config.ts b/test/fixtures/default/build.config.ts similarity index 94% rename from test/fixture/build.config.ts rename to test/fixtures/default/build.config.ts index 985309b5..27b1726f 100644 --- a/test/fixture/build.config.ts +++ b/test/fixtures/default/build.config.ts @@ -1,4 +1,4 @@ -import { defineBuildConfig } from "../../src"; +import { defineBuildConfig } from "../../../src"; export default defineBuildConfig([ // Auto preset diff --git a/test/fixture/build.preset.ts b/test/fixtures/default/build.preset.ts similarity index 85% rename from test/fixture/build.preset.ts rename to test/fixtures/default/build.preset.ts index 60db3f07..36bc5f11 100644 --- a/test/fixture/build.preset.ts +++ b/test/fixtures/default/build.preset.ts @@ -1,4 +1,4 @@ -import { definePreset } from "../../src"; +import { definePreset } from "../../../src"; export default definePreset({ declaration: "compatible", diff --git a/test/fixture/package.json b/test/fixtures/default/package.json similarity index 100% rename from test/fixture/package.json rename to test/fixtures/default/package.json diff --git a/test/fixture/src/index.mts b/test/fixtures/default/src/index.mts similarity index 100% rename from test/fixture/src/index.mts rename to test/fixtures/default/src/index.mts diff --git a/test/fixture/src/nested/subpath.ts b/test/fixtures/default/src/nested/subpath.ts similarity index 100% rename from test/fixture/src/nested/subpath.ts rename to test/fixtures/default/src/nested/subpath.ts diff --git a/test/fixture/src/runtime/foo.ts b/test/fixtures/default/src/runtime/foo.ts similarity index 100% rename from test/fixture/src/runtime/foo.ts rename to test/fixtures/default/src/runtime/foo.ts diff --git a/test/fixture/src/schema.ts b/test/fixtures/default/src/schema.ts similarity index 100% rename from test/fixture/src/schema.ts rename to test/fixtures/default/src/schema.ts diff --git a/test/fixture/src/test.json b/test/fixtures/default/src/test.json similarity index 100% rename from test/fixture/src/test.json rename to test/fixtures/default/src/test.json diff --git a/test/fixtures/mkdist-declaration/build.config.ts b/test/fixtures/mkdist-declaration/build.config.ts new file mode 100644 index 00000000..84ece834 --- /dev/null +++ b/test/fixtures/mkdist-declaration/build.config.ts @@ -0,0 +1,12 @@ +import { defineBuildConfig } from "../../../src/index.js"; + +export default defineBuildConfig({ + entries: [ + { + input: "./src/", + builder: "mkdist", + }, + ], + outDir: "./dist/", + declaration: true, +}); diff --git a/test/fixtures/mkdist-declaration/src/a.ts b/test/fixtures/mkdist-declaration/src/a.ts new file mode 100644 index 00000000..01e79f43 --- /dev/null +++ b/test/fixtures/mkdist-declaration/src/a.ts @@ -0,0 +1,3 @@ +export function foo(): number { + return 42; +} diff --git a/test/fixtures/mkdist-declaration/src/index.ts b/test/fixtures/mkdist-declaration/src/index.ts new file mode 100644 index 00000000..df65760a --- /dev/null +++ b/test/fixtures/mkdist-declaration/src/index.ts @@ -0,0 +1 @@ +export { foo } from "./a.js"; diff --git a/test/fixtures/mkdist-sourcemap/build.config.ts b/test/fixtures/mkdist-sourcemap/build.config.ts new file mode 100644 index 00000000..b68e0b0d --- /dev/null +++ b/test/fixtures/mkdist-sourcemap/build.config.ts @@ -0,0 +1,12 @@ +import { defineBuildConfig } from "../../../src/index.js"; + +export default defineBuildConfig({ + entries: [ + { + input: "./src/", + builder: "mkdist", + }, + ], + outDir: "./dist/", + sourcemap: true, +}); diff --git a/test/fixtures/mkdist-sourcemap/src/a.ts b/test/fixtures/mkdist-sourcemap/src/a.ts new file mode 100644 index 00000000..01e79f43 --- /dev/null +++ b/test/fixtures/mkdist-sourcemap/src/a.ts @@ -0,0 +1,3 @@ +export function foo(): number { + return 42; +} diff --git a/test/fixtures/mkdist-sourcemap/src/index.ts b/test/fixtures/mkdist-sourcemap/src/index.ts new file mode 100644 index 00000000..df65760a --- /dev/null +++ b/test/fixtures/mkdist-sourcemap/src/index.ts @@ -0,0 +1 @@ +export { foo } from "./a.js"; diff --git a/test/fixtures/rollup-declaration/build.config.ts b/test/fixtures/rollup-declaration/build.config.ts new file mode 100644 index 00000000..1592426c --- /dev/null +++ b/test/fixtures/rollup-declaration/build.config.ts @@ -0,0 +1,15 @@ +import { defineBuildConfig } from "../../../src/index.js"; + +export default defineBuildConfig({ + entries: [ + { + input: "./src/index.ts", + builder: "rollup", + }, + ], + outDir: "./dist/", + declaration: true, + rollup: { + emitCJS: true, + }, +}); diff --git a/test/fixtures/rollup-declaration/src/a.ts b/test/fixtures/rollup-declaration/src/a.ts new file mode 100644 index 00000000..01e79f43 --- /dev/null +++ b/test/fixtures/rollup-declaration/src/a.ts @@ -0,0 +1,3 @@ +export function foo(): number { + return 42; +} diff --git a/test/fixtures/rollup-declaration/src/index.ts b/test/fixtures/rollup-declaration/src/index.ts new file mode 100644 index 00000000..df65760a --- /dev/null +++ b/test/fixtures/rollup-declaration/src/index.ts @@ -0,0 +1 @@ +export { foo } from "./a.js"; diff --git a/test/fixtures/rollup-sourcemap/build.config.ts b/test/fixtures/rollup-sourcemap/build.config.ts new file mode 100644 index 00000000..cc4b3ab7 --- /dev/null +++ b/test/fixtures/rollup-sourcemap/build.config.ts @@ -0,0 +1,15 @@ +import { defineBuildConfig } from "../../../src/index.js"; + +export default defineBuildConfig({ + entries: [ + { + input: "./src/index.ts", + builder: "rollup", + }, + ], + outDir: "./dist/", + sourcemap: true, + rollup: { + emitCJS: true, + }, +}); diff --git a/test/fixtures/rollup-sourcemap/src/a.ts b/test/fixtures/rollup-sourcemap/src/a.ts new file mode 100644 index 00000000..01e79f43 --- /dev/null +++ b/test/fixtures/rollup-sourcemap/src/a.ts @@ -0,0 +1,3 @@ +export function foo(): number { + return 42; +} diff --git a/test/fixtures/rollup-sourcemap/src/index.ts b/test/fixtures/rollup-sourcemap/src/index.ts new file mode 100644 index 00000000..df65760a --- /dev/null +++ b/test/fixtures/rollup-sourcemap/src/index.ts @@ -0,0 +1 @@ +export { foo } from "./a.js"; diff --git a/test/validate.test.ts b/test/validate.test.ts index ddf4f11b..318e5ac5 100644 --- a/test/validate.test.ts +++ b/test/validate.test.ts @@ -23,7 +23,7 @@ describe("validatePackage", () => { ".": { node: "./src/index.mts" }, }, }, - join(fileURLToPath(import.meta.url), "../fixture"), + join(fileURLToPath(import.meta.url), "../fixtures/default"), buildContext, ); diff --git a/tsconfig.json b/tsconfig.json index 06c6a5ee..a7502439 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,5 +17,6 @@ "noImplicitOverride": true, "noEmit": true }, - "include": ["src", "test"] + "include": ["src", "test"], + "exclude": ["test/fixtures/**/dist"] }