123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- const { expect } = require("chai");
- const sleep = require("../lib/sleep");
- module.exports = {
- name: 'delete',
- do: async t => {
- await t.case('delete for normal file', async () => {
- await t.write('test_delete.txt', 'delete test\n', { overwrite: true });
- await t.delete('test_delete.txt');
- let threw = false;
- try {
- await t.stat('test_delete.txt');
- } catch (e) {
- expect(e.response.status).equal(404);
- threw = true;
- }
- expect(threw).true;
- });
- await t.case('error for non-existing file', async () => {
- let threw = false;
- try {
- await t.delete('test_delete.txt');
- } catch (e) {
- expect(e.response.status).equal(404);
- threw = true;
- }
- expect(threw).true;
- });
- await t.case('delete for directory', async () => {
- await t.mkdir('test_delete_dir', { overwrite: true });
- await t.delete('test_delete_dir');
- let threw = false;
- try {
- await t.stat('test_delete_dir');
- } catch (e) {
- expect(e.response.status).equal(404);
- threw = true;
- }
- expect(threw).true;
- });
- await t.case('delete for non-empty directory', async () => {
- await t.mkdir('test_delete_dir', { overwrite: true });
- await t.write('test_delete_dir/test.txt', 'delete test\n', { overwrite: true });
- let threw = false;
- try {
- await t.delete('test_delete_dir');
- } catch (e) {
- expect(e.response.status).equal(422);
- threw = true;
- }
- expect(threw).true;
- });
- await t.case('delete for non-empty directory with recursive=true', async () => {
- await t.mkdir('test_delete_dir', { overwrite: true });
- await t.write('test_delete_dir/test.txt', 'delete test\n', { overwrite: true });
- await t.delete('test_delete_dir', { recursive: true });
- let threw = false;
- await sleep(500);
- try {
- await t.stat('test_delete_dir');
- } catch (e) {
- expect(e.response.status).equal(404);
- threw = true;
- }
- expect(threw).true;
- });
- await t.case('non-empty deep recursion', async () => {
- await t.mkdir('del/a/b/c/d', {
- create_missing_parents: true,
- });
- await t.write('del/a/b/c/d/test.txt', 'delete test\n');
- await t.delete('del', {
- recursive: true,
- descendants_only: true,
- });
- let threw = false;
- t.quirk('delete too asynchronous');
- await new Promise(rslv => setTimeout(rslv, 500));
- try {
- await t.stat('del/a/b/c/d/test.txt');
- } catch (e) {
- expect(e.response.status).equal(404);
- threw = true;
- }
- expect(threw).true;
- threw = false;
- try {
- await t.stat('del/a');
- } catch (e) {
- expect(e.response.status).equal(404);
- threw = true;
- }
- expect(threw).true;
- await t.case('parent directory still exists', async () => {
- const stat = await t.stat('del');
- expect(stat.name).equal('del');
- });
- });
- }
- };
|