@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { afterEach, describe, expect, it } from 'vitest'
|
||||
import { simpleGit } from 'simple-git'
|
||||
import { buildTreeFromPaths, readAll, readProjectFile, readTree, writeProjectFile } from '../src/main/fs-service'
|
||||
import { buildTreeFromPaths, createProjectFile, readAll, readProjectFile, readTree, writeProjectFile } from '../src/main/fs-service'
|
||||
|
||||
let dir = ''
|
||||
afterEach(async () => { if (dir) await rm(dir, { recursive: true, force: true }) })
|
||||
@@ -76,3 +76,23 @@ describe('read/write round-trip', () => {
|
||||
expect(await readProjectFile(dir, 'note.txt')).toBe('hello world\n')
|
||||
})
|
||||
})
|
||||
|
||||
describe('createProjectFile', () => {
|
||||
it('creates an empty file and makes missing parent folders', async () => {
|
||||
dir = await mkdtemp(join(tmpdir(), 'helder-fs-'))
|
||||
await createProjectFile(dir, 'src/new/fresh.ts')
|
||||
expect(await readProjectFile(dir, 'src/new/fresh.ts')).toBe('')
|
||||
})
|
||||
|
||||
it('refuses to overwrite an existing file', async () => {
|
||||
dir = await mkdtemp(join(tmpdir(), 'helder-fs-'))
|
||||
await writeProjectFile(dir, 'keep.txt', 'precious\n')
|
||||
await expect(createProjectFile(dir, 'keep.txt')).rejects.toThrow()
|
||||
expect(await readProjectFile(dir, 'keep.txt')).toBe('precious\n')
|
||||
})
|
||||
|
||||
it('refuses to escape the project root', async () => {
|
||||
dir = await mkdtemp(join(tmpdir(), 'helder-fs-'))
|
||||
await expect(createProjectFile(dir, '../escape.txt')).rejects.toThrow()
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user