Files
2026-07-13 12:47:58 +08:00

73 lines
2.3 KiB
TypeScript

import { assert } from 'vitest'
import { expect } from 'vitest'
import { FileNotFoundError } from '../../../src/errors.js'
import { sandboxTest } from '../../setup.js'
sandboxTest('get info of a file', async ({ sandbox }) => {
const filename = 'test_file.txt'
await sandbox.files.write(filename, 'test')
const info = await sandbox.files.getInfo(filename)
const { stdout: currentPath } = await sandbox.commands.run('pwd')
assert.equal(info.name, filename)
assert.equal(info.type, 'file')
assert.equal(info.path, currentPath.trim() + '/' + filename)
assert.equal(info.size, 4)
assert.equal(info.mode, 0o644)
assert.equal(info.permissions, '-rw-r--r--')
assert.equal(info.owner, 'user')
assert.equal(info.group, 'user')
assert.property(info, 'modifiedTime')
})
sandboxTest('get info of a file that does not exist', async ({ sandbox }) => {
const filename = 'test_does_not_exist.txt'
await expect(sandbox.files.getInfo(filename)).rejects.toThrow(
FileNotFoundError
)
})
sandboxTest('get info of a directory', async ({ sandbox }) => {
const dirname = 'test_dir'
await sandbox.files.makeDir(dirname)
const info = await sandbox.files.getInfo(dirname)
const { stdout: currentPath } = await sandbox.commands.run('pwd')
assert.equal(info.name, dirname)
assert.equal(info.type, 'dir')
assert.equal(info.path, currentPath.trim() + '/' + dirname)
assert.isAbove(info.size, 0)
assert.equal(info.mode, 0o755)
assert.equal(info.permissions, 'drwxr-xr-x')
assert.equal(info.owner, 'user')
assert.equal(info.group, 'user')
assert.property(info, 'modifiedTime')
})
sandboxTest(
'get info of a directory that does not exist',
async ({ sandbox }) => {
const dirname = 'test_does_not_exist_dir'
await expect(sandbox.files.getInfo(dirname)).rejects.toThrow(
FileNotFoundError
)
}
)
sandboxTest('get info of a symlink', async ({ sandbox }) => {
const filename = 'test_file.txt'
await sandbox.files.write(filename, 'test')
const symlinkName = 'test_symlink.txt'
await sandbox.commands.run(`ln -s ${filename} ${symlinkName}`)
const info = await sandbox.files.getInfo(symlinkName)
const { stdout: currentPath } = await sandbox.commands.run('pwd')
assert.equal(info.name, symlinkName)
assert.equal(info.symlinkTarget, currentPath.trim() + '/' + filename)
})