Files
oh-my-pi/packages/coding-agent/test/config-spacing.test.ts
T
can1357 f1f6516056 refactor: reorganized exports and removed obsolete helper branches
- Removed export leakage by demoting many helper and const symbols to module-local scope.
- Renamed underscore-prefixed internals and cache fields, then updated related references and `satisfies never` checks.
- Deleted obsolete logic branches and helpers, including harmony-stream interruption flow and unused benchmark runtime helpers.
- Updated Biome config and manifests by broadening lint coverage and removing an unused `@napi-rs/cli` dev dependency.
- Adjusted tests and utilities to use renamed test helpers and remove redundant private test-only helpers/locals.
2026-05-14 04:36:19 +02:00

55 lines
2.1 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it } from "bun:test";
import * as fs from "node:fs/promises";
import * as os from "node:os";
import * as path from "node:path";
import { resetSettingsForTest, Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
import { getDefaultTabWidth, getIndentation, Snowflake, setDefaultTabWidth } from "@oh-my-pi/pi-utils";
describe("indentation resolver", () => {
let tempDir = "";
beforeEach(async () => {
resetSettingsForTest();
setDefaultTabWidth(3);
tempDir = path.join(os.tmpdir(), "pi-spacing", Snowflake.next());
await fs.mkdir(tempDir, { recursive: true });
});
afterEach(async () => {
resetSettingsForTest();
setDefaultTabWidth(3);
await fs.rm(tempDir, { recursive: true, force: true });
});
it("applies current display tab width during initial settings load", async () => {
await Settings.init({ inMemory: true, cwd: tempDir, overrides: { "display.tabWidth": 7 } });
expect(getDefaultTabWidth()).toBe(7);
expect(getIndentation()).toBe(7);
});
it("applies nearest editorconfig rules for the target file", async () => {
const filePath = path.join(tempDir, "src", "feature.ts");
await fs.mkdir(path.dirname(filePath), { recursive: true });
await fs.writeFile(filePath, "\tconst x = 1;\n");
await fs.writeFile(
path.join(tempDir, ".editorconfig"),
["root = true", "", "[*]", "indent_size = 2", "", "[*.md]", "indent_size = 4"].join("\n"),
);
expect(getIndentation(filePath)).toBe(2);
expect(getIndentation(path.join(tempDir, "README.md"))).toBe(4);
});
it("merges editorconfig files from root to leaf", async () => {
const nestedDir = path.join(tempDir, "packages", "feature");
const filePath = path.join(nestedDir, "index.ts");
await fs.mkdir(nestedDir, { recursive: true });
await fs.writeFile(filePath, "\tconst y = 2;\n");
await fs.writeFile(path.join(tempDir, ".editorconfig"), ["root = true", "", "[*]", "indent_size = 2"].join("\n"));
await fs.writeFile(path.join(tempDir, "packages", ".editorconfig"), ["[*.ts]", "indent_size = 6"].join("\n"));
expect(getIndentation(filePath)).toBe(6);
});
});