Skip to content

Commit 3fcdc4a

Browse files
committed
test(write): cover base mode and masked file permissions
1 parent 9c611be commit 3fcdc4a

1 file changed

Lines changed: 9 additions & 7 deletions

File tree

packages/opencode/test/tool/write.test.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,10 @@ describe("tool.write", () => {
152152
})
153153

154154
describe("file permissions", () => {
155-
test("sets file permissions when writing sensitive data", async () => {
155+
async function writeAndCheckMode(umask: number, expected: number) {
156156
await using tmp = await tmpdir()
157157
const filepath = path.join(tmp.path, "sensitive.json")
158-
159-
const prevUmask = process.umask(0o022)
158+
const prev = process.umask(umask)
160159
try {
161160
await Instance.provide({
162161
directory: tmp.path,
@@ -170,17 +169,20 @@ describe("tool.write", () => {
170169
ctx,
171170
)
172171

173-
// On Unix systems, check permissions
174172
if (process.platform !== "win32") {
175173
const stats = await fs.stat(filepath)
176-
expect(stats.mode & 0o777).toBe(0o644)
174+
expect(stats.mode & 0o777).toBe(expected)
177175
}
178176
},
179177
})
180178
} finally {
181-
process.umask(prevUmask)
179+
process.umask(prev)
182180
}
183-
})
181+
}
182+
183+
test("base mode is 0o644 before umask masking", () => writeAndCheckMode(0o000, 0o644))
184+
test("respects umask 0o022 → 0o644", () => writeAndCheckMode(0o022, 0o644))
185+
test("respects umask 0o077 → 0o600", () => writeAndCheckMode(0o077, 0o600))
184186
})
185187

186188
describe("content types", () => {

0 commit comments

Comments
 (0)