mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-13 15:44:56 +00:00
52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import path from "path"
|
|
import { describe, expect, test } from "bun:test"
|
|
import { Effect } from "effect"
|
|
import { NpmConfig } from "@opencode-ai/core/npm-config"
|
|
import { tmpdir } from "./fixture/tmpdir"
|
|
|
|
describe("NpmConfig.load", () => {
|
|
test("reads registry from project .npmrc", async () => {
|
|
await using tmp = await tmpdir()
|
|
await Bun.write(path.join(tmp.path, ".npmrc"), "registry=https://registry.example.test/\n")
|
|
|
|
const config = await Effect.runPromise(NpmConfig.load(tmp.path))
|
|
|
|
expect(config.registry).toBe("https://registry.example.test/")
|
|
})
|
|
|
|
test("reads scoped registries from project .npmrc", async () => {
|
|
await using tmp = await tmpdir()
|
|
await Bun.write(path.join(tmp.path, ".npmrc"), "@acme:registry=https://npm.acme.test/\n")
|
|
|
|
const config = await Effect.runPromise(NpmConfig.load(tmp.path))
|
|
|
|
expect(config["@acme:registry"]).toBe("https://npm.acme.test/")
|
|
})
|
|
|
|
test("flattens boolean and list options", async () => {
|
|
await using tmp = await tmpdir()
|
|
await Bun.write(path.join(tmp.path, ".npmrc"), "ignore-scripts=true\nomit[]=dev\nomit[]=optional\n")
|
|
|
|
const config = await Effect.runPromise(NpmConfig.load(tmp.path))
|
|
|
|
expect(config.ignoreScripts).toBe(true)
|
|
expect(config.omit).toEqual(["dev", "optional"])
|
|
})
|
|
})
|
|
|
|
describe("NpmConfig.registry", () => {
|
|
test("normalizes configured registry without trailing slash", async () => {
|
|
await using tmp = await tmpdir()
|
|
await Bun.write(path.join(tmp.path, ".npmrc"), "registry=https://registry.example.test/\n")
|
|
|
|
await expect(Effect.runPromise(NpmConfig.registry(tmp.path))).resolves.toBe("https://registry.example.test")
|
|
})
|
|
|
|
test("leaves configured registry without trailing slash unchanged", async () => {
|
|
await using tmp = await tmpdir()
|
|
await Bun.write(path.join(tmp.path, ".npmrc"), "registry=https://registry.example.test\n")
|
|
|
|
await expect(Effect.runPromise(NpmConfig.registry(tmp.path))).resolves.toBe("https://registry.example.test")
|
|
})
|
|
})
|