chore(vendor): import pi 0.85.1
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
This commit is contained in:
1 parent
5ebc7018c3
commit
4def357d09
1669 files changed
+397627
No files matched your search
+49
@@ -0,0 +1,49 @@
|
||||
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
||||
import { SettingsManager } from "../../../src/core/settings-manager.ts";
|
||||
import { parseFrontmatter } from "../../../src/utils/frontmatter.ts";
|
||||
import { splitBom } from "../../../src/utils/text.ts";
|
||||
|
||||
describe("issue #8337 UTF-8 BOM parsing", () => {
|
||||
let testDir: string;
|
||||
|
||||
beforeEach(() => {
|
||||
testDir = mkdtempSync(join(tmpdir(), "pi-8337-"));
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
if (existsSync(testDir)) {
|
||||
rmSync(testDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
it("loads frontmatter and settings with a leading BOM", async () => {
|
||||
expect(splitBom("\uFEFFcontent")).toEqual({ bom: "\uFEFF", text: "content" });
|
||||
const document = "---\nname: demo\ndescription: Test\n---\nBody";
|
||||
expect(parseFrontmatter(`\uFEFF${document}`)).toEqual({
|
||||
frontmatter: { name: "demo", description: "Test" },
|
||||
body: "Body",
|
||||
});
|
||||
|
||||
const agentDir = join(testDir, "agent");
|
||||
const projectDir = join(testDir, "project");
|
||||
mkdirSync(join(projectDir, ".pi"), { recursive: true });
|
||||
mkdirSync(agentDir, { recursive: true });
|
||||
const globalSettingsPath = join(agentDir, "settings.json");
|
||||
writeFileSync(globalSettingsPath, `\uFEFF${JSON.stringify({ defaultModel: "global-model" })}`);
|
||||
writeFileSync(
|
||||
join(projectDir, ".pi", "settings.json"),
|
||||
`\uFEFF${JSON.stringify({ defaultProvider: "project-provider" })}`,
|
||||
);
|
||||
|
||||
const settings = SettingsManager.create(projectDir, agentDir);
|
||||
expect(settings.getDefaultModel()).toBe("global-model");
|
||||
expect(settings.getDefaultProvider()).toBe("project-provider");
|
||||
|
||||
settings.setTheme("dark");
|
||||
await settings.flush();
|
||||
expect(readFileSync(globalSettingsPath, "utf-8")).not.toMatch(/^\uFEFF/);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user