FileSystemBaseHandle-remove.js (4138B)
1 'use strict'; 2 3 directory_test(async (t, root) => { 4 const handle = await createFileWithContents('file-to-remove', '12345', root); 5 await createFileWithContents('file-to-keep', 'abc', root); 6 await handle.remove(); 7 8 assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); 9 await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); 10 }, 'remove() to remove a file'); 11 12 directory_test(async (t, root) => { 13 const handle = await createFileWithContents('file-to-remove', '12345', root); 14 await handle.remove(); 15 16 await promise_rejects_dom(t, 'NotFoundError', handle.remove()); 17 }, 'remove() on an already removed file should fail'); 18 19 directory_test(async (t, root) => { 20 const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); 21 await createFileWithContents('file-to-keep', 'abc', root); 22 await dir.remove(); 23 24 assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); 25 await promise_rejects_dom(t, 'NotFoundError', getSortedDirectoryEntries(dir)); 26 }, 'remove() to remove an empty directory'); 27 28 directory_test(async (t, root) => { 29 const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); 30 await dir.remove(); 31 32 await promise_rejects_dom(t, 'NotFoundError', dir.remove()); 33 }, 'remove() on an already removed directory should fail'); 34 35 directory_test(async (t, root) => { 36 const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); 37 await createEmptyFile('file-in-dir', dir); 38 39 await promise_rejects_dom(t, 'InvalidModificationError', dir.remove()); 40 assert_array_equals( 41 await getSortedDirectoryEntries(root), ['dir-to-remove/']); 42 assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']); 43 }, 'remove() on a non-empty directory should fail'); 44 45 directory_test(async (t, root) => { 46 // root 47 // ├──file-to-keep 48 // ├──dir-to-remove 49 // ├── file0 50 // ├── dir1-in-dir 51 // │ └── file1 52 // └── dir2 53 const dir = await root.getDirectoryHandle('dir-to-remove', {create: true}); 54 await createFileWithContents('file-to-keep', 'abc', root); 55 await createEmptyFile('file0', dir); 56 const dir1_in_dir = await createDirectory('dir1-in-dir', dir); 57 await createEmptyFile('file1', dir1_in_dir); 58 await createDirectory('dir2-in-dir', dir); 59 60 await dir.remove({recursive: true}); 61 assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); 62 }, 'remove() on a directory recursively should delete all sub-items'); 63 64 directory_test(async (t, root) => { 65 const handle = await createFileWithContents('file-to-remove', '12345', root); 66 await createFileWithContents('file-to-keep', 'abc', root); 67 await handle.remove({recursive: true}); 68 69 assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); 70 await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); 71 }, 'remove() on a file should ignore the recursive option'); 72 73 directory_test(async (t, root) => { 74 const handle = await createFileWithContents('file-to-remove', '12345', root); 75 await createFileWithContents('file-to-keep', 'abc', root); 76 77 const writable = await cleanup_writable(t, await handle.createWritable()); 78 await promise_rejects_dom(t, 'NoModificationAllowedError', handle.remove()); 79 80 await writable.close(); 81 assert_array_equals( 82 await getSortedDirectoryEntries(root), 83 ['file-to-keep', 'file-to-remove']); 84 85 await handle.remove(); 86 assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']); 87 await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); 88 }, 'remove() while the file has an open writable fails'); 89 90 promise_test(async (t) => { 91 const root = await navigator.storage.getDirectory(); 92 await root.getFileHandle('file.txt', {create: true}); 93 assert_array_equals(await getSortedDirectoryEntries(root), ['file.txt']); 94 95 await root.remove(); 96 97 // Creates a fresh sandboxed file system. 98 const newRoot = await navigator.storage.getDirectory(); 99 assert_array_equals(await getSortedDirectoryEntries(newRoot), []); 100 }, 'can remove the root of a sandbox file system');