73 lines
2.3 KiB
TypeScript
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)
|
|
})
|