memfs 4.1.0-next.2 → 4.1.0-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/demo/runkit.js +5 -0
- package/lib/Dirent.js +1 -0
- package/lib/Dirent.js.map +1 -0
- package/lib/Stats.js +2 -2
- package/lib/Stats.js.map +1 -0
- package/lib/__tests__/util.js +1 -0
- package/lib/__tests__/util.js.map +1 -0
- package/lib/cas/types.js +1 -0
- package/lib/cas/types.js.map +1 -0
- package/lib/constants.js +1 -0
- package/lib/constants.js.map +1 -0
- package/lib/consts/AMODE.js +1 -0
- package/lib/consts/AMODE.js.map +1 -0
- package/lib/consts/FLAG.d.ts +6 -0
- package/lib/consts/FLAG.js +1 -0
- package/lib/consts/FLAG.js.map +1 -0
- package/lib/crud/__tests__/matryoshka.test.d.ts +1 -0
- package/lib/crud/__tests__/matryoshka.test.js +69 -0
- package/lib/crud/__tests__/matryoshka.test.js.map +1 -0
- package/lib/crud/__tests__/testCrudfs.d.ts +6 -0
- package/lib/crud/__tests__/testCrudfs.js +279 -0
- package/lib/crud/__tests__/testCrudfs.js.map +1 -0
- package/lib/crud/types.d.ts +7 -0
- package/lib/crud/types.js +1 -0
- package/lib/crud/types.js.map +1 -0
- package/lib/crud/util.d.ts +2 -0
- package/lib/crud/util.js +11 -0
- package/lib/crud/util.js.map +1 -0
- package/lib/crud-to-cas/CrudCas.js +10 -17
- package/lib/crud-to-cas/CrudCas.js.map +1 -0
- package/lib/crud-to-cas/__tests__/CrudCas.test.js +29 -116
- package/lib/crud-to-cas/__tests__/CrudCas.test.js.map +1 -0
- package/lib/crud-to-cas/__tests__/testCasfs.d.ts +9 -0
- package/lib/crud-to-cas/__tests__/testCasfs.js +109 -0
- package/lib/crud-to-cas/__tests__/testCasfs.js.map +1 -0
- package/lib/crud-to-cas/index.d.ts +1 -0
- package/lib/crud-to-cas/index.js +6 -0
- package/lib/crud-to-cas/index.js.map +1 -0
- package/lib/crud-to-cas/util.js +1 -0
- package/lib/crud-to-cas/util.js.map +1 -0
- package/lib/encoding.js +1 -0
- package/lib/encoding.js.map +1 -0
- package/lib/fsa/types.js +1 -0
- package/lib/fsa/types.js.map +1 -0
- package/lib/fsa-to-crud/FsaCrud.d.ts +1 -0
- package/lib/fsa-to-crud/FsaCrud.js +36 -54
- package/lib/fsa-to-crud/FsaCrud.js.map +1 -0
- package/lib/fsa-to-crud/__tests__/FsaCrud.test.js +4 -281
- package/lib/fsa-to-crud/__tests__/FsaCrud.test.js.map +1 -0
- package/lib/fsa-to-crud/index.d.ts +1 -0
- package/lib/fsa-to-crud/index.js +6 -0
- package/lib/fsa-to-crud/index.js.map +1 -0
- package/lib/fsa-to-crud/util.d.ts +5 -2
- package/lib/fsa-to-crud/util.js +10 -8
- package/lib/fsa-to-crud/util.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeCore.d.ts +3 -2
- package/lib/fsa-to-node/FsaNodeCore.js +61 -22
- package/lib/fsa-to-node/FsaNodeCore.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeDirent.js +1 -0
- package/lib/fsa-to-node/FsaNodeDirent.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeFs.d.ts +14 -2
- package/lib/fsa-to-node/FsaNodeFs.js +97 -82
- package/lib/fsa-to-node/FsaNodeFs.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeFsOpenFile.js +4 -11
- package/lib/fsa-to-node/FsaNodeFsOpenFile.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeReadStream.js +4 -11
- package/lib/fsa-to-node/FsaNodeReadStream.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeStats.js +1 -0
- package/lib/fsa-to-node/FsaNodeStats.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeWriteStream.js +7 -14
- package/lib/fsa-to-node/FsaNodeWriteStream.js.map +1 -0
- package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js +160 -146
- package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js.map +1 -0
- package/lib/fsa-to-node/__tests__/util.test.js +4 -0
- package/lib/fsa-to-node/__tests__/util.test.js.map +1 -0
- package/lib/fsa-to-node/constants.js +1 -0
- package/lib/fsa-to-node/constants.js.map +1 -0
- package/lib/fsa-to-node/index.js +1 -0
- package/lib/fsa-to-node/index.js.map +1 -0
- package/lib/fsa-to-node/json.js +1 -0
- package/lib/fsa-to-node/json.js.map +1 -0
- package/lib/fsa-to-node/types.js +1 -0
- package/lib/fsa-to-node/types.js.map +1 -0
- package/lib/fsa-to-node/util.js +5 -10
- package/lib/fsa-to-node/util.js.map +1 -0
- package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js +3 -10
- package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js.map +1 -0
- package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js +23 -30
- package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js.map +1 -0
- package/lib/fsa-to-node/worker/SyncMessenger.js +3 -10
- package/lib/fsa-to-node/worker/SyncMessenger.js.map +1 -0
- package/lib/fsa-to-node/worker/constants.js +1 -0
- package/lib/fsa-to-node/worker/constants.js.map +1 -0
- package/lib/fsa-to-node/worker/types.js +1 -0
- package/lib/fsa-to-node/worker/types.js.map +1 -0
- package/lib/index.d.ts +4 -1
- package/lib/index.js +8 -6
- package/lib/index.js.map +1 -0
- package/lib/internal/buffer.js +1 -0
- package/lib/internal/buffer.js.map +1 -0
- package/lib/internal/errors.js +1 -0
- package/lib/internal/errors.js.map +1 -0
- package/lib/node/FileHandle.js +1 -0
- package/lib/node/FileHandle.js.map +1 -0
- package/lib/node/FsPromises.d.ts +86 -0
- package/lib/node/FsPromises.js +54 -0
- package/lib/node/FsPromises.js.map +1 -0
- package/lib/node/constants.js +2 -1
- package/lib/node/constants.js.map +1 -0
- package/lib/node/lists/fsCallbackApiList.d.ts +2 -0
- package/lib/node/lists/fsCallbackApiList.js +47 -0
- package/lib/node/lists/fsCallbackApiList.js.map +1 -0
- package/lib/node/lists/fsCommonObjectsList.d.ts +2 -0
- package/lib/node/lists/fsCommonObjectsList.js +19 -0
- package/lib/node/lists/fsCommonObjectsList.js.map +1 -0
- package/lib/node/lists/fsSynchronousApiList.d.ts +2 -0
- package/lib/node/lists/fsSynchronousApiList.js +46 -0
- package/lib/node/lists/fsSynchronousApiList.js.map +1 -0
- package/lib/node/options.js +1 -0
- package/lib/node/options.js.map +1 -0
- package/lib/node/types/{callback.d.ts → FsCallbackApi.d.ts} +49 -40
- package/lib/node/types/{callback.js → FsCallbackApi.js} +1 -0
- package/lib/node/types/FsCallbackApi.js.map +1 -0
- package/lib/node/types/FsCommonObjects.d.ts +4 -4
- package/lib/node/types/FsCommonObjects.js +1 -0
- package/lib/node/types/FsCommonObjects.js.map +1 -0
- package/lib/node/types/{promises.d.ts → FsPromisesApi.d.ts} +11 -0
- package/lib/node/types/{promises.js → FsPromisesApi.js} +1 -0
- package/lib/node/types/FsPromisesApi.js.map +1 -0
- package/lib/node/types/FsSynchronousApi.d.ts +64 -58
- package/lib/node/types/FsSynchronousApi.js +1 -0
- package/lib/node/types/FsSynchronousApi.js.map +1 -0
- package/lib/node/types/index.d.ts +2 -2
- package/lib/node/types/index.js +1 -0
- package/lib/node/types/index.js.map +1 -0
- package/lib/node/types/misc.d.ts +20 -0
- package/lib/node/types/misc.js +1 -0
- package/lib/node/types/misc.js.map +1 -0
- package/lib/node/types/options.d.ts +62 -0
- package/lib/node/types/options.js +1 -0
- package/lib/node/types/options.js.map +1 -0
- package/lib/node/util.d.ts +2 -1
- package/lib/node/util.js +30 -1
- package/lib/node/util.js.map +1 -0
- package/lib/node-to-crud/NodeCrud.d.ts +22 -0
- package/lib/node-to-crud/NodeCrud.js +235 -0
- package/lib/node-to-crud/NodeCrud.js.map +1 -0
- package/lib/node-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
- package/lib/node-to-crud/__tests__/FsaCrud.test.js +18 -0
- package/lib/node-to-crud/__tests__/FsaCrud.test.js.map +1 -0
- package/lib/node-to-crud/index.d.ts +1 -0
- package/lib/node-to-crud/index.js +6 -0
- package/lib/node-to-crud/index.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.d.ts +3 -2
- package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js +24 -55
- package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemFileHandle.js +6 -12
- package/lib/node-to-fsa/NodeFileSystemFileHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemHandle.js +3 -10
- package/lib/node-to-fsa/NodeFileSystemHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js +8 -15
- package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js +11 -18
- package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js.map +1 -0
- package/lib/node-to-fsa/NodePermissionStatus.js +1 -0
- package/lib/node-to-fsa/NodePermissionStatus.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js +80 -139
- package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +22 -29
- package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +6 -13
- package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +16 -23
- package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +20 -27
- package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/scenarios.test.js +5 -12
- package/lib/node-to-fsa/__tests__/scenarios.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/util.test.js +5 -0
- package/lib/node-to-fsa/__tests__/util.test.js.map +1 -0
- package/lib/node-to-fsa/index.js +6 -18
- package/lib/node-to-fsa/index.js.map +1 -0
- package/lib/node-to-fsa/types.d.ts +5 -2
- package/lib/node-to-fsa/types.js +1 -0
- package/lib/node-to-fsa/types.js.map +1 -0
- package/lib/node-to-fsa/util.js +3 -0
- package/lib/node-to-fsa/util.js.map +1 -0
- package/lib/node.js +1 -0
- package/lib/node.js.map +1 -0
- package/lib/print/__tests__/index.test.d.ts +1 -0
- package/lib/print/__tests__/index.test.js +77 -0
- package/lib/print/__tests__/index.test.js.map +1 -0
- package/lib/print/index.d.ts +8 -0
- package/lib/print/index.js +33 -0
- package/lib/print/index.js.map +1 -0
- package/lib/process.js +1 -0
- package/lib/process.js.map +1 -0
- package/lib/setImmediate.js +1 -0
- package/lib/setImmediate.js.map +1 -0
- package/lib/setTimeoutUnref.js +1 -0
- package/lib/setTimeoutUnref.js.map +1 -0
- package/lib/volume-localstorage.js +1 -0
- package/lib/volume-localstorage.js.map +1 -0
- package/lib/volume.d.ts +18 -7
- package/lib/volume.js +25 -16
- package/lib/volume.js.map +1 -0
- package/lib/webfs/index.js +1 -0
- package/lib/webfs/index.js.map +1 -0
- package/package.json +60 -26
- package/lib/getBigInt.js +0 -5
- package/lib/node/promises.d.ts +0 -2
- package/lib/node/promises.js +0 -86
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
12
4
|
const __1 = require("../..");
|
|
13
5
|
const node_to_fsa_1 = require("../../node-to-fsa");
|
|
14
6
|
const FsaNodeFs_1 = require("../FsaNodeFs");
|
|
15
7
|
const thingies_1 = require("thingies");
|
|
16
8
|
const util_1 = require("../../__tests__/util");
|
|
17
9
|
const setup = (json = null, mode = 'readwrite') => {
|
|
18
|
-
const mfs = (0, __1.memfs)({ mountpoint: json });
|
|
10
|
+
const { fs: mfs, vol } = (0, __1.memfs)({ mountpoint: json });
|
|
19
11
|
const dir = (0, node_to_fsa_1.nodeToFsa)(mfs, '/mountpoint', { mode, syncHandleAllowed: true });
|
|
20
12
|
const fs = new FsaNodeFs_1.FsaNodeFs(dir);
|
|
21
|
-
return { fs, mfs, dir };
|
|
13
|
+
return { fs, mfs, vol, dir };
|
|
22
14
|
};
|
|
23
15
|
(0, util_1.onlyOnNode20)('FsaNodeFs', () => {
|
|
24
16
|
describe('.mkdir()', () => {
|
|
25
|
-
test('can create a sub-folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
test('can create a sub-folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
26
18
|
const { fs, mfs } = setup();
|
|
27
19
|
yield new Promise((resolve, reject) => fs.mkdir('/test', err => {
|
|
28
20
|
if (err)
|
|
@@ -31,7 +23,16 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
31
23
|
}));
|
|
32
24
|
expect(mfs.statSync('/mountpoint/test').isDirectory()).toBe(true);
|
|
33
25
|
}));
|
|
34
|
-
test('
|
|
26
|
+
test('can create a sub-folder with trailing slash', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
+
const { fs, mfs } = setup();
|
|
28
|
+
yield new Promise((resolve, reject) => fs.mkdir('/test/', err => {
|
|
29
|
+
if (err)
|
|
30
|
+
return reject(err);
|
|
31
|
+
return resolve();
|
|
32
|
+
}));
|
|
33
|
+
expect(mfs.statSync('/mountpoint/test').isDirectory()).toBe(true);
|
|
34
|
+
}));
|
|
35
|
+
test('throws when creating sub-sub-folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
35
36
|
const { fs } = setup();
|
|
36
37
|
try {
|
|
37
38
|
yield new Promise((resolve, reject) => fs.mkdir('/test/subtest', err => {
|
|
@@ -45,7 +46,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
45
46
|
expect(error.code).toBe('ENOENT');
|
|
46
47
|
}
|
|
47
48
|
}));
|
|
48
|
-
test('can create sub-sub-folder with "recursive" flag', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
test('can create sub-sub-folder with "recursive" flag', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
49
50
|
const { fs, mfs } = setup();
|
|
50
51
|
yield new Promise((resolve, reject) => fs.mkdir('/test/subtest', { recursive: true }, err => {
|
|
51
52
|
if (err)
|
|
@@ -54,12 +55,12 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
54
55
|
}));
|
|
55
56
|
expect(mfs.statSync('/mountpoint/test/subtest').isDirectory()).toBe(true);
|
|
56
57
|
}));
|
|
57
|
-
test('can create sub-sub-folder with "recursive" flag with Promises API', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
test('can create sub-sub-folder with "recursive" flag with Promises API', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
58
59
|
const { fs, mfs } = setup();
|
|
59
60
|
yield fs.promises.mkdir('/test/subtest', { recursive: true });
|
|
60
61
|
expect(mfs.statSync('/mountpoint/test/subtest').isDirectory()).toBe(true);
|
|
61
62
|
}));
|
|
62
|
-
test('cannot create a folder over a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
test('cannot create a folder over a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
63
64
|
const { fs } = setup({ file: 'test' });
|
|
64
65
|
try {
|
|
65
66
|
yield fs.promises.mkdir('/file/folder', { recursive: true });
|
|
@@ -71,7 +72,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
71
72
|
}));
|
|
72
73
|
});
|
|
73
74
|
describe('.mkdtemp()', () => {
|
|
74
|
-
test('can create a temporary folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
+
test('can create a temporary folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
75
76
|
const { fs, mfs } = setup();
|
|
76
77
|
const dirname = (yield fs.promises.mkdtemp('prefix--'));
|
|
77
78
|
expect(dirname.startsWith('prefix--')).toBe(true);
|
|
@@ -79,134 +80,134 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
79
80
|
}));
|
|
80
81
|
});
|
|
81
82
|
describe('.rmdir()', () => {
|
|
82
|
-
test('can remove an empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
-
const { fs,
|
|
83
|
+
test('can remove an empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
84
85
|
yield fs.promises.rmdir('/empty-folder');
|
|
85
|
-
expect(
|
|
86
|
+
expect(vol.toJSON()).toStrictEqual({ '/mountpoint/folder/file': 'test' });
|
|
86
87
|
}));
|
|
87
|
-
test('throws when attempts to remove non-empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
88
|
-
const { fs,
|
|
88
|
+
test('throws when attempts to remove non-empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
89
90
|
try {
|
|
90
91
|
yield fs.promises.rmdir('/folder');
|
|
91
92
|
throw new Error('Expected error');
|
|
92
93
|
}
|
|
93
94
|
catch (error) {
|
|
94
95
|
expect(error.code).toBe('ENOTEMPTY');
|
|
95
|
-
expect(
|
|
96
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
96
97
|
'/mountpoint/folder/file': 'test',
|
|
97
98
|
'/mountpoint/empty-folder': null,
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
}));
|
|
101
|
-
test('can remove non-empty directory recursively', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
|
-
const { fs,
|
|
102
|
+
test('can remove non-empty directory recursively', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
103
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
103
104
|
yield fs.promises.rmdir('/folder', { recursive: true });
|
|
104
|
-
expect(
|
|
105
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
105
106
|
'/mountpoint/empty-folder': null,
|
|
106
107
|
});
|
|
107
108
|
}));
|
|
108
|
-
test('can remove starting from root folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
109
|
-
const { fs,
|
|
109
|
+
test('can remove starting from root folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
110
111
|
yield fs.promises.rmdir('/', { recursive: true });
|
|
111
|
-
expect(
|
|
112
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
112
113
|
'/mountpoint': null,
|
|
113
114
|
});
|
|
114
115
|
}));
|
|
115
116
|
});
|
|
116
117
|
describe('.rm()', () => {
|
|
117
|
-
test('can remove an empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
118
|
-
const { fs,
|
|
118
|
+
test('can remove an empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
119
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
119
120
|
yield fs.promises.rm('/empty-folder');
|
|
120
|
-
expect(
|
|
121
|
+
expect(vol.toJSON()).toStrictEqual({ '/mountpoint/folder/file': 'test' });
|
|
121
122
|
}));
|
|
122
|
-
test('throws when attempts to remove non-empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
123
|
-
const { fs,
|
|
123
|
+
test('throws when attempts to remove non-empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
124
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
124
125
|
try {
|
|
125
126
|
yield fs.promises.rm('/folder');
|
|
126
127
|
throw new Error('Expected error');
|
|
127
128
|
}
|
|
128
129
|
catch (error) {
|
|
129
130
|
expect(error.code).toBe('ENOTEMPTY');
|
|
130
|
-
expect(
|
|
131
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
131
132
|
'/mountpoint/folder/file': 'test',
|
|
132
133
|
'/mountpoint/empty-folder': null,
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
}));
|
|
136
|
-
test('can remove non-empty directory recursively', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
-
const { fs,
|
|
137
|
+
test('can remove non-empty directory recursively', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
138
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
138
139
|
yield fs.promises.rm('/folder', { recursive: true });
|
|
139
|
-
expect(
|
|
140
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
140
141
|
'/mountpoint/empty-folder': null,
|
|
141
142
|
});
|
|
142
143
|
}));
|
|
143
|
-
test('throws if path does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
-
const { fs,
|
|
144
|
+
test('throws if path does not exist', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
145
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
145
146
|
try {
|
|
146
147
|
yield fs.promises.rm('/lala/lulu', { recursive: true });
|
|
147
148
|
throw new Error('Expected error');
|
|
148
149
|
}
|
|
149
150
|
catch (error) {
|
|
150
151
|
expect(error.code).toBe('ENOENT');
|
|
151
|
-
expect(
|
|
152
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
152
153
|
'/mountpoint/folder/subfolder/file': 'test',
|
|
153
154
|
'/mountpoint/empty-folder': null,
|
|
154
155
|
});
|
|
155
156
|
}
|
|
156
157
|
}));
|
|
157
|
-
test('does not throw, if path does not exist, but "force" flag set', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
158
|
-
const { fs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
158
|
+
test('does not throw, if path does not exist, but "force" flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
159
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
159
160
|
yield fs.promises.rm('/lala/lulu', { recursive: true, force: true });
|
|
160
161
|
}));
|
|
161
|
-
test('can remove a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
162
|
-
const { fs,
|
|
162
|
+
test('can remove a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
163
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
163
164
|
yield fs.promises.rm('/folder/subfolder/file');
|
|
164
|
-
expect(
|
|
165
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
165
166
|
'/mountpoint/folder/subfolder': null,
|
|
166
167
|
'/mountpoint/empty-folder': null,
|
|
167
168
|
});
|
|
168
169
|
}));
|
|
169
|
-
test('can remove starting from root folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
170
|
-
const { fs,
|
|
170
|
+
test('can remove starting from root folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
171
|
+
const { fs, vol } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
171
172
|
yield fs.promises.rm('/', { recursive: true });
|
|
172
|
-
expect(
|
|
173
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
173
174
|
'/mountpoint': null,
|
|
174
175
|
});
|
|
175
176
|
}));
|
|
176
177
|
});
|
|
177
178
|
describe('.unlink()', () => {
|
|
178
|
-
test('can remove a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
179
|
-
const { fs,
|
|
179
|
+
test('can remove a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
180
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
180
181
|
const res = yield fs.promises.unlink('/folder/file');
|
|
181
182
|
expect(res).toBe(undefined);
|
|
182
|
-
expect(
|
|
183
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
183
184
|
'/mountpoint/folder': null,
|
|
184
185
|
'/mountpoint/empty-folder': null,
|
|
185
186
|
});
|
|
186
187
|
}));
|
|
187
|
-
test('cannot delete a folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
188
|
-
const { fs,
|
|
188
|
+
test('cannot delete a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
189
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
189
190
|
try {
|
|
190
191
|
yield fs.promises.unlink('/folder');
|
|
191
192
|
throw new Error('Expected error');
|
|
192
193
|
}
|
|
193
194
|
catch (error) {
|
|
194
195
|
expect(error.code).toBe('EISDIR');
|
|
195
|
-
expect(
|
|
196
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
196
197
|
'/mountpoint/folder/file': 'test',
|
|
197
198
|
'/mountpoint/empty-folder': null,
|
|
198
199
|
});
|
|
199
200
|
}
|
|
200
201
|
}));
|
|
201
|
-
test('throws when deleting non-existing file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
202
|
-
const { fs,
|
|
202
|
+
test('throws when deleting non-existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
203
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
203
204
|
try {
|
|
204
205
|
yield fs.promises.unlink('/folder/not-a-file');
|
|
205
206
|
throw new Error('Expected error');
|
|
206
207
|
}
|
|
207
208
|
catch (error) {
|
|
208
209
|
expect(error.code).toBe('ENOENT');
|
|
209
|
-
expect(
|
|
210
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
210
211
|
'/mountpoint/folder/file': 'test',
|
|
211
212
|
'/mountpoint/empty-folder': null,
|
|
212
213
|
});
|
|
@@ -214,19 +215,19 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
214
215
|
}));
|
|
215
216
|
});
|
|
216
217
|
describe('.readFile()', () => {
|
|
217
|
-
test('can read file contents', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
218
|
+
test('can read file contents', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
218
219
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
219
220
|
const data = yield fs.promises.readFile('/folder/file');
|
|
220
221
|
expect(data.toString()).toBe('test');
|
|
221
222
|
}));
|
|
222
|
-
test('can read file by file handle', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
|
+
test('can read file by file handle', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
223
224
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
224
225
|
const handle = yield fs.promises.open('/folder/file');
|
|
225
226
|
expect(typeof handle).toBe('object');
|
|
226
227
|
const data = yield fs.promises.readFile(handle);
|
|
227
228
|
expect(data.toString()).toBe('test');
|
|
228
229
|
}));
|
|
229
|
-
test('can read file by file descriptor', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
230
|
+
test('can read file by file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
230
231
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
231
232
|
const fd = yield new Promise(resolve => {
|
|
232
233
|
fs.open('/folder/file', 'r', (err, fd) => resolve(fd));
|
|
@@ -237,7 +238,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
237
238
|
});
|
|
238
239
|
expect(data).toBe('test');
|
|
239
240
|
}));
|
|
240
|
-
test('cannot read from closed file descriptor', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
241
|
+
test('cannot read from closed file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
241
242
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
242
243
|
const fd = yield new Promise(resolve => {
|
|
243
244
|
fs.open('/folder/file', 'r', (err, fd) => resolve(fd));
|
|
@@ -259,7 +260,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
259
260
|
}));
|
|
260
261
|
});
|
|
261
262
|
describe('.truncate()', () => {
|
|
262
|
-
test('can truncate a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
263
|
+
test('can truncate a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
263
264
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
264
265
|
const res = yield new Promise((resolve, reject) => {
|
|
265
266
|
fs.truncate('/folder/file', 2, (err, res) => (err ? reject(err) : resolve(res)));
|
|
@@ -269,7 +270,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
269
270
|
}));
|
|
270
271
|
});
|
|
271
272
|
describe('.ftruncate()', () => {
|
|
272
|
-
test('can truncate a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
273
|
+
test('can truncate a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
273
274
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
274
275
|
const handle = yield fs.promises.open('/folder/file');
|
|
275
276
|
const res = yield new Promise((resolve, reject) => {
|
|
@@ -280,7 +281,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
280
281
|
}));
|
|
281
282
|
});
|
|
282
283
|
describe('.readdir()', () => {
|
|
283
|
-
test('can read directory contents as strings', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
284
|
+
test('can read directory contents as strings', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
284
285
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
285
286
|
const res = (yield fs.promises.readdir('/'));
|
|
286
287
|
expect(res.length).toBe(3);
|
|
@@ -288,7 +289,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
288
289
|
expect(res.includes('empty-folder')).toBe(true);
|
|
289
290
|
expect(res.includes('f.html')).toBe(true);
|
|
290
291
|
}));
|
|
291
|
-
test('can read directory contents with "withFileTypes" flag set', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
292
|
+
test('can read directory contents with "withFileTypes" flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
292
293
|
var _a, _b, _c, _d;
|
|
293
294
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
294
295
|
const list = (yield fs.promises.readdir('/', { withFileTypes: true }));
|
|
@@ -302,23 +303,23 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
302
303
|
}));
|
|
303
304
|
});
|
|
304
305
|
describe('.appendFile()', () => {
|
|
305
|
-
test('can create a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
306
|
+
test('can create a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
306
307
|
const { fs, mfs } = setup({});
|
|
307
308
|
yield fs.promises.appendFile('/test.txt', 'a');
|
|
308
309
|
expect(mfs.readFileSync('/mountpoint/test.txt', 'utf8')).toBe('a');
|
|
309
310
|
}));
|
|
310
|
-
test('can append to a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
311
|
+
test('can append to a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
311
312
|
const { fs, mfs } = setup({});
|
|
312
313
|
yield fs.promises.appendFile('/test.txt', 'a');
|
|
313
314
|
yield fs.promises.appendFile('/test.txt', 'b');
|
|
314
315
|
expect(mfs.readFileSync('/mountpoint/test.txt', 'utf8')).toBe('ab');
|
|
315
316
|
}));
|
|
316
|
-
test('can append to a file - 2', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
317
|
+
test('can append to a file - 2', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
317
318
|
const { fs, mfs } = setup({ file: '123' });
|
|
318
319
|
yield fs.promises.appendFile('file', 'x');
|
|
319
320
|
expect(mfs.readFileSync('/mountpoint/file', 'utf8')).toBe('123x');
|
|
320
321
|
}));
|
|
321
|
-
test('can append to a file - 2', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
322
|
+
test('can append to a file - 2', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
322
323
|
const { fs, mfs } = setup({ file: '123' });
|
|
323
324
|
yield fs.promises.writeFile('cool.txt', 'worlds');
|
|
324
325
|
yield fs.promises.appendFile('cool.txt', '!');
|
|
@@ -326,7 +327,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
326
327
|
}));
|
|
327
328
|
});
|
|
328
329
|
describe('.write()', () => {
|
|
329
|
-
test('can write to a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
330
|
+
test('can write to a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
330
331
|
const { fs, mfs } = setup({});
|
|
331
332
|
const fd = yield new Promise((resolve, reject) => fs.open('/test.txt', 'w', (err, fd) => {
|
|
332
333
|
if (err)
|
|
@@ -346,7 +347,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
346
347
|
expect(data).toBe('a');
|
|
347
348
|
expect(mfs.readFileSync('/mountpoint/test.txt', 'utf8')).toBe('a');
|
|
348
349
|
}));
|
|
349
|
-
test('can write to a file twice sequentially', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
350
|
+
test('can write to a file twice sequentially', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
350
351
|
const { fs, mfs } = setup({});
|
|
351
352
|
const fd = yield new Promise((resolve, reject) => fs.open('/test.txt', 'w', (err, fd) => {
|
|
352
353
|
if (err)
|
|
@@ -378,7 +379,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
378
379
|
}));
|
|
379
380
|
});
|
|
380
381
|
describe('.writev()', () => {
|
|
381
|
-
test('can write to a file two buffers', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
382
|
+
test('can write to a file two buffers', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
382
383
|
const { fs, mfs } = setup({});
|
|
383
384
|
const fd = yield new Promise((resolve, reject) => fs.open('/test.txt', 'w', (err, fd) => {
|
|
384
385
|
if (err)
|
|
@@ -400,9 +401,9 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
400
401
|
}));
|
|
401
402
|
});
|
|
402
403
|
describe('.exists()', () => {
|
|
403
|
-
test('can works for folders and files', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
404
|
+
test('can works for folders and files', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
404
405
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
405
|
-
const exists = (path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
406
|
+
const exists = (path) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
406
407
|
return new Promise(resolve => {
|
|
407
408
|
fs.exists(path, exists => resolve(exists));
|
|
408
409
|
});
|
|
@@ -419,19 +420,19 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
419
420
|
});
|
|
420
421
|
describe('.access()', () => {
|
|
421
422
|
describe('files', () => {
|
|
422
|
-
test('succeeds on file existence check', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
423
|
+
test('succeeds on file existence check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
423
424
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
424
425
|
yield fs.promises.access('/folder/file', 0 /* AMODE.F_OK */);
|
|
425
426
|
}));
|
|
426
|
-
test('succeeds on file "read" check', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
427
|
+
test('succeeds on file "read" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
427
428
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
428
429
|
yield fs.promises.access('/folder/file', 4 /* AMODE.R_OK */);
|
|
429
430
|
}));
|
|
430
|
-
test('succeeds on file "write" check, on writable file system', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
431
|
+
test('succeeds on file "write" check, on writable file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
431
432
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
432
433
|
yield fs.promises.access('/folder/file', 2 /* AMODE.W_OK */);
|
|
433
434
|
}));
|
|
434
|
-
test('fails on file "write" check, on read-only file system', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
435
|
+
test('fails on file "write" check, on read-only file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
435
436
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' }, 'read');
|
|
436
437
|
try {
|
|
437
438
|
yield fs.promises.access('/folder/file', 2 /* AMODE.W_OK */);
|
|
@@ -441,7 +442,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
441
442
|
expect(error.code).toBe('EACCESS');
|
|
442
443
|
}
|
|
443
444
|
}));
|
|
444
|
-
test('fails on file "execute" check', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
445
|
+
test('fails on file "execute" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
445
446
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
446
447
|
try {
|
|
447
448
|
yield fs.promises.access('/folder/file', 1 /* AMODE.X_OK */);
|
|
@@ -453,19 +454,19 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
453
454
|
}));
|
|
454
455
|
});
|
|
455
456
|
describe('directories', () => {
|
|
456
|
-
test('succeeds on folder existence check', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
457
|
+
test('succeeds on folder existence check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
457
458
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
458
459
|
yield fs.promises.access('/folder', 0 /* AMODE.F_OK */);
|
|
459
460
|
}));
|
|
460
|
-
test('succeeds on folder "read" check', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
461
|
+
test('succeeds on folder "read" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
461
462
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
462
463
|
yield fs.promises.access('/folder', 4 /* AMODE.R_OK */);
|
|
463
464
|
}));
|
|
464
|
-
test('succeeds on folder "write" check, on writable file system', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
465
|
+
test('succeeds on folder "write" check, on writable file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
465
466
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
466
467
|
yield fs.promises.access('/folder', 2 /* AMODE.W_OK */);
|
|
467
468
|
}));
|
|
468
|
-
test('fails on folder "write" check, on read-only file system', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
469
|
+
test('fails on folder "write" check, on read-only file system', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
469
470
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' }, 'read');
|
|
470
471
|
try {
|
|
471
472
|
yield fs.promises.access('/folder', 2 /* AMODE.W_OK */);
|
|
@@ -475,7 +476,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
475
476
|
expect(error.code).toBe('EACCESS');
|
|
476
477
|
}
|
|
477
478
|
}));
|
|
478
|
-
test('fails on folder "execute" check', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
479
|
+
test('fails on folder "execute" check', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
479
480
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
480
481
|
try {
|
|
481
482
|
yield fs.promises.access('/folder', 1 /* AMODE.X_OK */);
|
|
@@ -488,10 +489,10 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
488
489
|
});
|
|
489
490
|
});
|
|
490
491
|
describe('.rename()', () => {
|
|
491
|
-
test('can rename a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
492
|
-
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
492
|
+
test('can rename a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
493
|
+
const { fs, mfs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
493
494
|
yield fs.promises.rename('/folder/file', '/folder/file2');
|
|
494
|
-
expect(
|
|
495
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
495
496
|
'/mountpoint/folder/file2': 'test',
|
|
496
497
|
'/mountpoint/empty-folder': null,
|
|
497
498
|
'/mountpoint/f.html': 'test',
|
|
@@ -499,33 +500,33 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
499
500
|
}));
|
|
500
501
|
});
|
|
501
502
|
describe('.stat()', () => {
|
|
502
|
-
test('can stat a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
503
|
+
test('can stat a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
503
504
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
504
505
|
const stats = yield fs.promises.stat('/folder/file');
|
|
505
506
|
expect(stats.isFile()).toBe(true);
|
|
506
507
|
}));
|
|
507
|
-
test('throws "ENOENT" when path is not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
508
|
+
test('throws "ENOENT" when path is not found', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
508
509
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
509
510
|
const [, error] = yield (0, thingies_1.of)(fs.promises.stat('/folder/repo/.git'));
|
|
510
511
|
expect(error.code).toBe('ENOENT');
|
|
511
512
|
}));
|
|
512
|
-
test('throws "ENOTDIR" when sub-folder is a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
513
|
+
test('throws "ENOTDIR" when sub-folder is a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
513
514
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
514
515
|
const [, error] = yield (0, thingies_1.of)(fs.promises.stat('/folder/file/repo/.git'));
|
|
515
516
|
expect(error.code).toBe('ENOTDIR');
|
|
516
517
|
}));
|
|
517
|
-
test('can retrieve file size', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
518
|
+
test('can retrieve file size', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
518
519
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
519
520
|
const stats = yield fs.promises.stat('/folder/file');
|
|
520
521
|
expect(stats.size).toBe(4);
|
|
521
522
|
}));
|
|
522
|
-
test('can stat a folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
523
|
+
test('can stat a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
523
524
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
524
525
|
const stats = yield fs.promises.stat('/folder');
|
|
525
526
|
expect(stats.isFile()).toBe(false);
|
|
526
527
|
expect(stats.isDirectory()).toBe(true);
|
|
527
528
|
}));
|
|
528
|
-
test('throws on non-existing path', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
529
|
+
test('throws on non-existing path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
529
530
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
530
531
|
try {
|
|
531
532
|
const stats = yield fs.promises.stat('/folder/abc');
|
|
@@ -537,23 +538,23 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
537
538
|
}));
|
|
538
539
|
});
|
|
539
540
|
describe('.lstat()', () => {
|
|
540
|
-
test('can stat a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
541
|
+
test('can stat a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
541
542
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
542
543
|
const stats = yield fs.promises.lstat('/folder/file');
|
|
543
544
|
expect(stats.isFile()).toBe(true);
|
|
544
545
|
}));
|
|
545
|
-
test('can retrieve file size', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
546
|
+
test('can retrieve file size', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
546
547
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
547
548
|
const stats = yield fs.promises.lstat('/folder/file');
|
|
548
549
|
expect(stats.size).toBe(4);
|
|
549
550
|
}));
|
|
550
|
-
test('can stat a folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
551
|
+
test('can stat a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
551
552
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
552
553
|
const stats = yield fs.promises.lstat('/folder');
|
|
553
554
|
expect(stats.isFile()).toBe(false);
|
|
554
555
|
expect(stats.isDirectory()).toBe(true);
|
|
555
556
|
}));
|
|
556
|
-
test('throws on non-existing path', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
557
|
+
test('throws on non-existing path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
557
558
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
558
559
|
try {
|
|
559
560
|
yield fs.promises.lstat('/folder/abc');
|
|
@@ -565,7 +566,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
565
566
|
}));
|
|
566
567
|
});
|
|
567
568
|
describe('.fstat()', () => {
|
|
568
|
-
test('can stat a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
569
|
+
test('can stat a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
569
570
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
570
571
|
const handle = yield fs.promises.open('/folder/file', 'r');
|
|
571
572
|
const stats = yield new Promise((resolve, reject) => {
|
|
@@ -580,24 +581,24 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
580
581
|
}));
|
|
581
582
|
});
|
|
582
583
|
describe('.realpath()', () => {
|
|
583
|
-
test('returns file path', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
584
|
+
test('returns file path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
584
585
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
585
586
|
const path = yield fs.promises.realpath('folder/file');
|
|
586
587
|
expect(path).toBe('/folder/file');
|
|
587
588
|
}));
|
|
588
589
|
});
|
|
589
590
|
describe('.realpathSync()', () => {
|
|
590
|
-
test('returns file path', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
591
|
+
test('returns file path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
591
592
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
592
593
|
const path = fs.realpathSync('folder/file');
|
|
593
594
|
expect(path).toBe('/folder/file');
|
|
594
595
|
}));
|
|
595
596
|
});
|
|
596
597
|
describe('.copyFile()', () => {
|
|
597
|
-
test('can copy a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
598
|
-
const { fs,
|
|
598
|
+
test('can copy a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
599
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
599
600
|
yield fs.promises.copyFile('/folder/file', '/folder/file2');
|
|
600
|
-
expect(
|
|
601
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
601
602
|
'/mountpoint/folder/file': 'test',
|
|
602
603
|
'/mountpoint/folder/file2': 'test',
|
|
603
604
|
'/mountpoint/empty-folder': null,
|
|
@@ -606,8 +607,8 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
606
607
|
}));
|
|
607
608
|
});
|
|
608
609
|
describe('.writeFile()', () => {
|
|
609
|
-
test('can create a new file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
610
|
-
const { fs,
|
|
610
|
+
test('can create a new file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
611
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
611
612
|
const res = yield new Promise((resolve, reject) => {
|
|
612
613
|
fs.writeFile('/folder/foo', 'bar', error => {
|
|
613
614
|
if (error)
|
|
@@ -617,16 +618,28 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
617
618
|
});
|
|
618
619
|
});
|
|
619
620
|
expect(res).toBe(undefined);
|
|
620
|
-
expect(
|
|
621
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
621
622
|
'/mountpoint/folder/file': 'test',
|
|
622
623
|
'/mountpoint/folder/foo': 'bar',
|
|
623
624
|
'/mountpoint/empty-folder': null,
|
|
624
625
|
'/mountpoint/f.html': 'test',
|
|
625
626
|
});
|
|
626
627
|
}));
|
|
628
|
+
test('throws "EEXIST", if file already exists and O_EXCL flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
629
|
+
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
630
|
+
const [, err] = yield (0, thingies_1.of)(fs.promises.writeFile('/folder/file', 'bar', { flag: 'wx' }));
|
|
631
|
+
expect(err).toBeInstanceOf(Error);
|
|
632
|
+
expect(err.code).toBe('EEXIST');
|
|
633
|
+
}));
|
|
634
|
+
test('throws "ENOENT", if file does not exist and O_CREAT flag not set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
635
|
+
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
636
|
+
const [, err] = yield (0, thingies_1.of)(fs.promises.writeFile('/folder/file2', 'bar', { flag: 2 /* FLAG.O_RDWR */ }));
|
|
637
|
+
expect(err).toBeInstanceOf(Error);
|
|
638
|
+
expect(err.code).toBe('ENOENT');
|
|
639
|
+
}));
|
|
627
640
|
});
|
|
628
641
|
describe('.read()', () => {
|
|
629
|
-
test('can read from a file at offset into Buffer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
642
|
+
test('can read from a file at offset into Buffer', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
630
643
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
631
644
|
const handle = yield fs.promises.open('/folder/file', 'r');
|
|
632
645
|
const [buffer, length] = yield new Promise((resolve, reject) => {
|
|
@@ -641,7 +654,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
641
654
|
expect(length).toBe(2);
|
|
642
655
|
expect(buffer.slice(0, 2).toString()).toBe('es');
|
|
643
656
|
}));
|
|
644
|
-
test('can read from a file at offset into Uint8Array', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
657
|
+
test('can read from a file at offset into Uint8Array', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
645
658
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
646
659
|
const handle = yield fs.promises.open('/folder/file', 'r');
|
|
647
660
|
const [buffer, length] = yield new Promise((resolve, reject) => {
|
|
@@ -659,8 +672,8 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
659
672
|
}));
|
|
660
673
|
});
|
|
661
674
|
describe('.createWriteStream()', () => {
|
|
662
|
-
test('can use stream to write to a new file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
663
|
-
const { fs,
|
|
675
|
+
test('can use stream to write to a new file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
676
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
664
677
|
const stream = fs.createWriteStream('/folder/file2');
|
|
665
678
|
stream.write(Buffer.from('A'));
|
|
666
679
|
stream.write(Buffer.from('BC'));
|
|
@@ -668,15 +681,15 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
668
681
|
stream.end();
|
|
669
682
|
yield new Promise(resolve => stream.once('close', resolve));
|
|
670
683
|
expect(stream.bytesWritten).toBe(6);
|
|
671
|
-
expect(
|
|
684
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
672
685
|
'/mountpoint/folder/file': 'test',
|
|
673
686
|
'/mountpoint/folder/file2': 'ABCDEF',
|
|
674
687
|
'/mountpoint/empty-folder': null,
|
|
675
688
|
'/mountpoint/f.html': 'test',
|
|
676
689
|
});
|
|
677
690
|
}));
|
|
678
|
-
test('can use stream to write to a new file using strings', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
679
|
-
const { fs,
|
|
691
|
+
test('can use stream to write to a new file using strings', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
692
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
680
693
|
const stream = fs.createWriteStream('/folder/file2');
|
|
681
694
|
stream.write('A');
|
|
682
695
|
stream.write('BC');
|
|
@@ -684,47 +697,47 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
684
697
|
stream.end();
|
|
685
698
|
yield new Promise(resolve => stream.once('close', resolve));
|
|
686
699
|
expect(stream.bytesWritten).toBe(6);
|
|
687
|
-
expect(
|
|
700
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
688
701
|
'/mountpoint/folder/file': 'test',
|
|
689
702
|
'/mountpoint/folder/file2': 'ABCDEF',
|
|
690
703
|
'/mountpoint/empty-folder': null,
|
|
691
704
|
'/mountpoint/f.html': 'test',
|
|
692
705
|
});
|
|
693
706
|
}));
|
|
694
|
-
test('can use stream to overwrite existing file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
695
|
-
const { fs,
|
|
707
|
+
test('can use stream to overwrite existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
708
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
696
709
|
const stream = fs.createWriteStream('/folder/file');
|
|
697
710
|
stream.write(Buffer.from('A'));
|
|
698
711
|
stream.write(Buffer.from('BC'));
|
|
699
712
|
stream.end();
|
|
700
713
|
yield new Promise(resolve => stream.once('close', resolve));
|
|
701
714
|
expect(stream.bytesWritten).toBe(3);
|
|
702
|
-
expect(
|
|
715
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
703
716
|
'/mountpoint/folder/file': 'ABC',
|
|
704
717
|
'/mountpoint/empty-folder': null,
|
|
705
718
|
'/mountpoint/f.html': 'test',
|
|
706
719
|
});
|
|
707
720
|
}));
|
|
708
|
-
test('can write by file descriptor', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
709
|
-
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
721
|
+
test('can write by file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
722
|
+
const { fs, mfs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
710
723
|
const handle = yield fs.promises.open('/folder/file', 'a');
|
|
711
724
|
const stream = fs.createWriteStream('', { fd: handle.fd, start: 1, flags: 'a' });
|
|
712
725
|
stream.write(Buffer.from('BC'));
|
|
713
726
|
stream.end();
|
|
714
727
|
yield new Promise(resolve => stream.once('close', resolve));
|
|
715
728
|
expect(stream.bytesWritten).toBe(2);
|
|
716
|
-
expect(
|
|
729
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
717
730
|
'/mountpoint/folder/file': 'tBCt',
|
|
718
731
|
'/mountpoint/empty-folder': null,
|
|
719
732
|
'/mountpoint/f.html': 'test',
|
|
720
733
|
});
|
|
721
734
|
}));
|
|
722
|
-
test('closes file once stream ends', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
735
|
+
test('closes file once stream ends', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
723
736
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
724
737
|
const handle = yield fs.promises.open('/folder/file', 'a');
|
|
725
738
|
const stream = fs.createWriteStream('', { fd: handle.fd, start: 1, flags: 'a' });
|
|
726
739
|
stream.write(Buffer.from('BC'));
|
|
727
|
-
const stat = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
740
|
+
const stat = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
728
741
|
return yield new Promise((resolve, reject) => fs.fstat(handle.fd, (err, stats) => {
|
|
729
742
|
if (err)
|
|
730
743
|
reject(err);
|
|
@@ -734,19 +747,19 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
734
747
|
});
|
|
735
748
|
yield stat();
|
|
736
749
|
stream.end();
|
|
737
|
-
yield (0, thingies_1.until)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
750
|
+
yield (0, thingies_1.until)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
738
751
|
const [, error] = yield (0, thingies_1.of)(stat());
|
|
739
752
|
return !!error;
|
|
740
753
|
}));
|
|
741
754
|
const [, error] = yield (0, thingies_1.of)(stat());
|
|
742
755
|
expect(error.code).toBe('EBADF');
|
|
743
756
|
}));
|
|
744
|
-
test('does not close file if "autoClose" is false', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
757
|
+
test('does not close file if "autoClose" is false', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
745
758
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
746
759
|
const handle = yield fs.promises.open('/folder/file', 'a');
|
|
747
760
|
const stream = fs.createWriteStream('', { fd: handle.fd, start: 1, flags: 'a', autoClose: false });
|
|
748
761
|
stream.write(Buffer.from('BC'));
|
|
749
|
-
const stat = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
762
|
+
const stat = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
750
763
|
return yield new Promise((resolve, reject) => fs.fstat(handle.fd, (err, stats) => {
|
|
751
764
|
if (err)
|
|
752
765
|
reject(err);
|
|
@@ -759,35 +772,35 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
759
772
|
yield (0, thingies_1.tick)(200);
|
|
760
773
|
yield stat();
|
|
761
774
|
}));
|
|
762
|
-
test('can use stream to add to existing file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
763
|
-
const { fs,
|
|
775
|
+
test('can use stream to add to existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
776
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
764
777
|
const stream = fs.createWriteStream('/folder/file', { flags: 'a' });
|
|
765
778
|
stream.write(Buffer.from('A'));
|
|
766
779
|
stream.write(Buffer.from('BC'));
|
|
767
780
|
stream.end();
|
|
768
781
|
yield new Promise(resolve => stream.once('close', resolve));
|
|
769
782
|
expect(stream.bytesWritten).toBe(3);
|
|
770
|
-
expect(
|
|
783
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
771
784
|
'/mountpoint/folder/file': 'ABCt',
|
|
772
785
|
'/mountpoint/empty-folder': null,
|
|
773
786
|
'/mountpoint/f.html': 'test',
|
|
774
787
|
});
|
|
775
788
|
}));
|
|
776
|
-
test('can use stream to add to existing file at specified offset', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
777
|
-
const { fs,
|
|
789
|
+
test('can use stream to add to existing file at specified offset', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
790
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
778
791
|
const stream = fs.createWriteStream('/folder/file', { flags: 'a', start: 1 });
|
|
779
792
|
stream.write(Buffer.from('A'));
|
|
780
793
|
stream.write(Buffer.from('B'));
|
|
781
794
|
stream.end();
|
|
782
795
|
yield new Promise(resolve => stream.once('close', resolve));
|
|
783
796
|
expect(stream.bytesWritten).toBe(2);
|
|
784
|
-
expect(
|
|
797
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
785
798
|
'/mountpoint/folder/file': 'tABt',
|
|
786
799
|
'/mountpoint/empty-folder': null,
|
|
787
800
|
'/mountpoint/f.html': 'test',
|
|
788
801
|
});
|
|
789
802
|
}));
|
|
790
|
-
test('throws if "start" option is not a number', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
803
|
+
test('throws if "start" option is not a number', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
791
804
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
792
805
|
try {
|
|
793
806
|
fs.createWriteStream('/folder/file', { flags: 'a', start: '1' });
|
|
@@ -798,7 +811,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
798
811
|
expect(error.message).toBe('"start" option must be a Number');
|
|
799
812
|
}
|
|
800
813
|
}));
|
|
801
|
-
test('throws if "start" option is negative', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
814
|
+
test('throws if "start" option is negative', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
802
815
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
803
816
|
try {
|
|
804
817
|
fs.createWriteStream('/folder/file', { flags: 'a', start: -1 });
|
|
@@ -811,58 +824,58 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
811
824
|
}));
|
|
812
825
|
});
|
|
813
826
|
describe('.createReadStream()', () => {
|
|
814
|
-
test('can pipe fs.ReadStream to fs.WriteStream', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
815
|
-
const { fs,
|
|
827
|
+
test('can pipe fs.ReadStream to fs.WriteStream', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
828
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
816
829
|
const readStream = fs.createReadStream('/folder/file');
|
|
817
830
|
const writeStream = fs.createWriteStream('/folder/file2');
|
|
818
831
|
readStream.pipe(writeStream);
|
|
819
832
|
yield new Promise(resolve => writeStream.once('close', resolve));
|
|
820
|
-
expect(
|
|
833
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
821
834
|
'/mountpoint/folder/file': 'test',
|
|
822
835
|
'/mountpoint/folder/file2': 'test',
|
|
823
836
|
'/mountpoint/empty-folder': null,
|
|
824
837
|
'/mountpoint/f.html': 'test',
|
|
825
838
|
});
|
|
826
839
|
}));
|
|
827
|
-
test('emits "open" event', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
840
|
+
test('emits "open" event', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
828
841
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
829
842
|
const readStream = fs.createReadStream('/folder/file');
|
|
830
843
|
const fd = yield new Promise(resolve => readStream.once('open', resolve));
|
|
831
844
|
expect(typeof fd).toBe('number');
|
|
832
845
|
}));
|
|
833
|
-
test('emits "ready" event', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
846
|
+
test('emits "ready" event', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
834
847
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
835
848
|
const readStream = fs.createReadStream('/folder/file');
|
|
836
849
|
yield new Promise(resolve => readStream.once('ready', resolve));
|
|
837
850
|
}));
|
|
838
|
-
test('emits "close" event', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
851
|
+
test('emits "close" event', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
839
852
|
const { fs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
840
853
|
const readStream = fs.createReadStream('/folder/file', { emitClose: true });
|
|
841
854
|
const writeStream = fs.createWriteStream('/folder/file2');
|
|
842
855
|
readStream.pipe(writeStream);
|
|
843
856
|
yield new Promise(resolve => readStream.once('close', resolve));
|
|
844
857
|
}));
|
|
845
|
-
test('can write to already open file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
846
|
-
const { fs,
|
|
858
|
+
test('can write to already open file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
859
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
847
860
|
const handle = yield fs.promises.open('/folder/file');
|
|
848
861
|
const readStream = fs.createReadStream('xyz', { fd: handle.fd });
|
|
849
862
|
const writeStream = fs.createWriteStream('/folder/file2');
|
|
850
863
|
readStream.pipe(writeStream);
|
|
851
864
|
yield new Promise(resolve => writeStream.once('close', resolve));
|
|
852
|
-
expect(
|
|
865
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
853
866
|
'/mountpoint/folder/file': 'test',
|
|
854
867
|
'/mountpoint/folder/file2': 'test',
|
|
855
868
|
'/mountpoint/empty-folder': null,
|
|
856
869
|
'/mountpoint/f.html': 'test',
|
|
857
870
|
});
|
|
858
871
|
}));
|
|
859
|
-
test('can read a specified slice of a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
860
|
-
const { fs,
|
|
872
|
+
test('can read a specified slice of a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
873
|
+
const { fs, vol } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
861
874
|
const readStream = fs.createReadStream('/folder/file', { start: 1, end: 2 });
|
|
862
875
|
const writeStream = fs.createWriteStream('/folder/file2');
|
|
863
876
|
readStream.pipe(writeStream);
|
|
864
877
|
yield new Promise(resolve => writeStream.once('close', resolve));
|
|
865
|
-
expect(
|
|
878
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
866
879
|
'/mountpoint/folder/file': 'test',
|
|
867
880
|
'/mountpoint/folder/file2': 'es',
|
|
868
881
|
'/mountpoint/empty-folder': null,
|
|
@@ -871,3 +884,4 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
871
884
|
}));
|
|
872
885
|
});
|
|
873
886
|
});
|
|
887
|
+
//# sourceMappingURL=FsaNodeFs.test.js.map
|