| directory_test(async (t, root) => { |
| await promise_rejects_dom( |
| t, 'NotFoundError', root.getDirectoryHandle('non-existing-dir')); |
| }, 'getDirectoryHandle(create=false) rejects for non-existing directories'); |
| |
| directory_test(async (t, root) => { |
| const handle = |
| await root.getDirectoryHandle('non-existing-dir', {create: true}); |
| t.add_cleanup(() => root.removeEntry('non-existing-dir', {recursive: true})); |
| |
| assert_equals(handle.kind, 'directory'); |
| assert_equals(handle.name, 'non-existing-dir'); |
| assert_equals(await getDirectoryEntryCount(handle), 0); |
| assert_array_equals( |
| await getSortedDirectoryEntries(root), ['non-existing-dir/']); |
| }, 'getDirectoryHandle(create=true) creates an empty directory'); |
| |
| directory_test(async (t, root) => { |
| const existing_handle = |
| await root.getDirectoryHandle('dir-with-contents', {create: true}); |
| t.add_cleanup(() => root.removeEntry('dir-with-contents', {recursive: true})); |
| const file_handle = await createEmptyFile(t, 'test-file', existing_handle); |
| |
| const handle = |
| await root.getDirectoryHandle('dir-with-contents', {create: false}); |
| |
| assert_equals(handle.kind, 'directory'); |
| assert_equals(handle.name, 'dir-with-contents'); |
| assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']); |
| }, 'getDirectoryHandle(create=false) returns existing directories'); |
| |
| directory_test(async (t, root) => { |
| const existing_handle = |
| await root.getDirectoryHandle('dir-with-contents', {create: true}); |
| t.add_cleanup(() => root.removeEntry('dir-with-contents', {recursive: true})); |
| const file_handle = |
| await existing_handle.getFileHandle('test-file', {create: true}); |
| |
| const handle = |
| await root.getDirectoryHandle('dir-with-contents', {create: true}); |
| |
| assert_equals(handle.kind, 'directory'); |
| assert_equals(handle.name, 'dir-with-contents'); |
| assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']); |
| }, 'getDirectoryHandle(create=true) returns existing directories without erasing'); |
| |
| directory_test(async (t, root) => { |
| await createEmptyFile(t, 'file-name', root); |
| |
| await promise_rejects_dom( |
| t, 'TypeMismatchError', root.getDirectoryHandle('file-name')); |
| await promise_rejects_dom( |
| t, 'TypeMismatchError', |
| root.getDirectoryHandle('file-name', {create: false})); |
| await promise_rejects_dom( |
| t, 'TypeMismatchError', |
| root.getDirectoryHandle('file-name', {create: true})); |
| }, 'getDirectoryHandle() when a file already exists with the same name'); |
| |
| directory_test(async (t, dir) => { |
| await promise_rejects_js( |
| t, TypeError, dir.getDirectoryHandle('', {create: true})); |
| await promise_rejects_js( |
| t, TypeError, dir.getDirectoryHandle('', {create: false})); |
| }, 'getDirectoryHandle() with empty name'); |
| |
| directory_test(async (t, dir) => { |
| await promise_rejects_js( |
| t, TypeError, dir.getDirectoryHandle(kCurrentDirectory)); |
| await promise_rejects_js( |
| t, TypeError, dir.getDirectoryHandle(kCurrentDirectory, {create: true})); |
| }, `getDirectoryHandle() with "${kCurrentDirectory}" name`); |
| |
| directory_test(async (t, dir) => { |
| const subdir = await createDirectory(t, 'subdir-name', /*parent=*/ dir); |
| |
| await promise_rejects_js( |
| t, TypeError, subdir.getDirectoryHandle(kParentDirectory)); |
| await promise_rejects_js( |
| t, TypeError, |
| subdir.getDirectoryHandle(kParentDirectory, {create: true})); |
| }, `getDirectoryHandle() with "${kParentDirectory}" name`); |
| |
| directory_test(async (t, dir) => { |
| const first_subdir_name = 'first-subdir-name'; |
| const first_subdir = |
| await createDirectory(t, first_subdir_name, /*parent=*/ dir); |
| |
| const second_subdir_name = 'second-subdir-name'; |
| const second_subdir = |
| await createDirectory(t, second_subdir_name, /*parent=*/ first_subdir); |
| |
| for (let i = 0; i < kPathSeparators.length; ++i) { |
| const path_with_separator = |
| `${first_subdir_name}${kPathSeparators[i]}${second_subdir_name}`; |
| await promise_rejects_js( |
| t, TypeError, dir.getDirectoryHandle(path_with_separator), |
| `getDirectoryHandle() must reject names containing "${ |
| kPathSeparators[i]}"`); |
| } |
| }, 'getDirectoryHandle(create=false) with a path separator when the directory exists'); |
| |
| directory_test(async (t, dir) => { |
| const subdir_name = 'subdir-name'; |
| const subdir = await createDirectory(t, subdir_name, /*parent=*/ dir); |
| |
| for (let i = 0; i < kPathSeparators.length; ++i) { |
| const path_with_separator = `${subdir_name}${kPathSeparators[i]}file_name`; |
| await promise_rejects_js( |
| t, TypeError, |
| dir.getDirectoryHandle(path_with_separator, {create: true}), |
| `getDirectoryHandle(true) must reject names containing "${ |
| kPathSeparators[i]}"`); |
| } |
| }, 'getDirectoryHandle(create=true) with a path separator'); |