Skip to content

Commit 7406aa6

Browse files
committed
fix: add tests for package.json loading
1 parent c3b8c4f commit 7406aa6

3 files changed

Lines changed: 47 additions & 4 deletions

File tree

packages/openapi-code-generator/src/core/file-system/node-fs-adaptor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ export class NodeFsAdaptor implements IFsAdaptor {
1717
const stat = await fs.stat(path)
1818
return stat.isFile()
1919
} catch (err) {
20-
if (err instanceof Error && Reflect.get(err, "code") === "ENOENT") {
20+
if (
21+
typeof err === "object" &&
22+
err !== null &&
23+
Reflect.get(err, "code") === "ENOENT"
24+
) {
2125
return false
2226
}
2327
throw err
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import path from "node:path"
2+
import {describe, expect, it} from "@jest/globals"
3+
import {NodeFsAdaptor} from "../file-system/node-fs-adaptor"
4+
import {loadPackageJson} from "./package.json.loader"
5+
6+
describe("core/loaders/package.json.loader", () => {
7+
const fsAdaptor = new NodeFsAdaptor()
8+
9+
it("should load the nearest package.json (commonjs)", async () => {
10+
const actual = await loadPackageJson(__dirname, fsAdaptor)
11+
12+
expect(actual).toEqual({
13+
type: "commonjs",
14+
})
15+
})
16+
17+
it("should load the nearest package.json (esm)", async () => {
18+
const actual = await loadPackageJson(
19+
path.join(__dirname, "../../../../../e2e"),
20+
fsAdaptor,
21+
)
22+
expect(actual).toEqual({
23+
type: "module",
24+
})
25+
})
26+
27+
it("should default to commonjs if no package.json is found", async () => {
28+
const actual = await loadPackageJson("/tmp/foo/bla", fsAdaptor)
29+
expect(actual).toEqual({
30+
type: "commonjs",
31+
})
32+
})
33+
})
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json5 from "json5"
22
import {z} from "zod/v4"
33
import type {IFsAdaptor} from "../file-system/fs-adaptor"
4+
import {logger} from "../logger"
45
import {loadFileUp} from "./utils"
56

67
const schema = z.object({
@@ -11,9 +12,14 @@ export async function loadPackageJson(
1112
outputPath: string,
1213
fsAdaptor: IFsAdaptor,
1314
) {
14-
const packageJson = json5.parse(
15-
(await loadFileUp("package.json", outputPath, fsAdaptor)) ?? "{}",
16-
)
15+
let rawJson = await loadFileUp("package.json", outputPath, fsAdaptor)
16+
17+
if (!rawJson) {
18+
logger.warn("no package.json found, using defaults")
19+
rawJson = "{}"
20+
}
21+
22+
const packageJson = json5.parse(rawJson)
1723

1824
return schema.parse(packageJson)
1925
}

0 commit comments

Comments
 (0)