mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-06 03:20:13 +08:00
Feat filegraph (#194)
* feat: update filegraph on touch command * feat: update filegraph on mkdir * feat: add different parsing opts for each command * refactor: replace axios with fetch. put handleCommand to a new file * feat: add config for mounting cli in dev stage * refactor: clean up unused validators * feat: add command handler for copy files. reuse resolvePath function * feat: add rm handler, support specific files deletion. Glob not supported yet * feat: handle discover cases that the folder is actually empty * feat: handle discover empty folder better and support rmdir * feat: handle mv command * refactor: remove unused console logs
This commit is contained in:
1 parent
a732c1d119
commit
f0a09ac4d9
19 files changed
+326
-119
No files matched your search
@@ -28,12 +28,44 @@ describe('FileGraph', () => {
|
||||
type: 'directory',
|
||||
discovered: true,
|
||||
},
|
||||
{
|
||||
path: '/home/user/folder2/file2.txt',
|
||||
type: 'file',
|
||||
discovered: true,
|
||||
},
|
||||
]
|
||||
|
||||
fileGraph.add(filesToAdd)
|
||||
|
||||
expect(fileGraph.children.length).toBe(1)
|
||||
expect(fileGraph.children[0].children[0].children.length).toBe(2)
|
||||
expect(fileGraph.children[0].children[0].children.length).toBe(3)
|
||||
})
|
||||
|
||||
test('ignore files that already exist', () => {
|
||||
const fileGraph = new FileGraph(root)
|
||||
|
||||
const filesToAdd: FileObject[] = [
|
||||
{
|
||||
path: '/home/user/folder1',
|
||||
type: 'directory',
|
||||
discovered: true,
|
||||
},
|
||||
{
|
||||
path: '/home/user/folder1/file1.txt',
|
||||
type: 'file',
|
||||
discovered: true,
|
||||
},
|
||||
]
|
||||
|
||||
fileGraph.add(filesToAdd)
|
||||
|
||||
expect(fileGraph.children.length).toBe(1)
|
||||
expect(fileGraph.children[0].children[0].children.length).toBe(1)
|
||||
|
||||
fileGraph.add([filesToAdd[1]])
|
||||
|
||||
expect(fileGraph.children.length).toBe(1)
|
||||
expect(fileGraph.children[0].children[0].children.length).toBe(1)
|
||||
})
|
||||
|
||||
test('remove files from graph', () => {
|
||||
@@ -175,4 +207,36 @@ describe('FileGraph', () => {
|
||||
3
|
||||
)
|
||||
})
|
||||
|
||||
test('discover a empty directory which children just being deleted', () => {
|
||||
const fileGraph = new FileGraph(root)
|
||||
const discoverFiles = [
|
||||
{
|
||||
path: '/home/user/folder1',
|
||||
type: 'directory',
|
||||
discovered: true,
|
||||
},
|
||||
{
|
||||
path: '/home/user/folder1/file1.txt',
|
||||
type: 'file',
|
||||
discovered: true,
|
||||
},
|
||||
]
|
||||
|
||||
fileGraph.add(discoverFiles as FileObject[])
|
||||
expect(fileGraph.include('/home/user/folder1/file1.txt', 'file')).toBe(true)
|
||||
|
||||
fileGraph.discover([
|
||||
{
|
||||
path: '/home/user/folder1',
|
||||
type: 'directory',
|
||||
discovered: true,
|
||||
empty: true,
|
||||
},
|
||||
])
|
||||
|
||||
expect(fileGraph.include('/home/user/folder1/file1.txt', 'file')).toBe(
|
||||
false
|
||||
)
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user