memfs 4.1.0-next.2 → 4.1.0-next.3
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 +5 -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 +3 -280
- 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 +107 -93
- 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.js +5 -3
- 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 +5 -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 +75 -134
- package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +16 -23
- package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +5 -12
- package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +15 -22
- package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +8 -15
- package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/scenarios.test.js +3 -10
- 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/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 +15 -7
- package/lib/volume.js +20 -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,14 +1,6 @@
|
|
|
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");
|
|
@@ -22,7 +14,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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,12 +80,12 @@ 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
|
+
test('can remove an empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
83
84
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
84
85
|
yield fs.promises.rmdir('/empty-folder');
|
|
85
86
|
expect(mfs.__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
|
+
test('throws when attempts to remove non-empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
88
89
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
89
90
|
try {
|
|
90
91
|
yield fs.promises.rmdir('/folder');
|
|
@@ -98,14 +99,14 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
}));
|
|
101
|
-
test('can remove non-empty directory recursively', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
|
+
test('can remove non-empty directory recursively', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
102
103
|
const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
103
104
|
yield fs.promises.rmdir('/folder', { recursive: true });
|
|
104
105
|
expect(mfs.__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
|
+
test('can remove starting from root folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
109
110
|
const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
110
111
|
yield fs.promises.rmdir('/', { recursive: true });
|
|
111
112
|
expect(mfs.__vol.toJSON()).toStrictEqual({
|
|
@@ -114,12 +115,12 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
114
115
|
}));
|
|
115
116
|
});
|
|
116
117
|
describe('.rm()', () => {
|
|
117
|
-
test('can remove an empty folder', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
118
|
+
test('can remove an empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
118
119
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
119
120
|
yield fs.promises.rm('/empty-folder');
|
|
120
121
|
expect(mfs.__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
|
+
test('throws when attempts to remove non-empty folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
123
124
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
124
125
|
try {
|
|
125
126
|
yield fs.promises.rm('/folder');
|
|
@@ -133,14 +134,14 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
}));
|
|
136
|
-
test('can remove non-empty directory recursively', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
test('can remove non-empty directory recursively', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
137
138
|
const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
138
139
|
yield fs.promises.rm('/folder', { recursive: true });
|
|
139
140
|
expect(mfs.__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
|
+
test('throws if path does not exist', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
144
145
|
const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
145
146
|
try {
|
|
146
147
|
yield fs.promises.rm('/lala/lulu', { recursive: true });
|
|
@@ -154,11 +155,11 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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
|
+
test('does not throw, if path does not exist, but "force" flag set', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
158
159
|
const { fs } = 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
|
+
test('can remove a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
162
163
|
const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
163
164
|
yield fs.promises.rm('/folder/subfolder/file');
|
|
164
165
|
expect(mfs.__vol.toJSON()).toStrictEqual({
|
|
@@ -166,7 +167,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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
|
+
test('can remove starting from root folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
170
171
|
const { fs, mfs } = setup({ folder: { subfolder: { file: 'test' } }, 'empty-folder': null });
|
|
171
172
|
yield fs.promises.rm('/', { recursive: true });
|
|
172
173
|
expect(mfs.__vol.toJSON()).toStrictEqual({
|
|
@@ -175,7 +176,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
175
176
|
}));
|
|
176
177
|
});
|
|
177
178
|
describe('.unlink()', () => {
|
|
178
|
-
test('can remove a file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
179
|
+
test('can remove a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
179
180
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
180
181
|
const res = yield fs.promises.unlink('/folder/file');
|
|
181
182
|
expect(res).toBe(undefined);
|
|
@@ -184,7 +185,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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
|
+
test('cannot delete a folder', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
188
189
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
189
190
|
try {
|
|
190
191
|
yield fs.promises.unlink('/folder');
|
|
@@ -198,7 +199,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
198
199
|
});
|
|
199
200
|
}
|
|
200
201
|
}));
|
|
201
|
-
test('throws when deleting non-existing file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
202
|
+
test('throws when deleting non-existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
202
203
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null });
|
|
203
204
|
try {
|
|
204
205
|
yield fs.promises.unlink('/folder/not-a-file');
|
|
@@ -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,7 +489,7 @@ 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
|
+
test('can rename a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
492
493
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
493
494
|
yield fs.promises.rename('/folder/file', '/folder/file2');
|
|
494
495
|
expect(mfs.__vol.toJSON()).toStrictEqual({
|
|
@@ -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,21 +581,21 @@ 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
|
+
test('can copy a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
598
599
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
599
600
|
yield fs.promises.copyFile('/folder/file', '/folder/file2');
|
|
600
601
|
expect(mfs.__vol.toJSON()).toStrictEqual({
|
|
@@ -606,7 +607,7 @@ 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
|
+
test('can create a new file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
610
611
|
const { fs, mfs } = 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 => {
|
|
@@ -624,9 +625,21 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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,7 +672,7 @@ 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* () {
|
|
675
|
+
test('can use stream to write to a new file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
663
676
|
const { fs, mfs } = 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'));
|
|
@@ -675,7 +688,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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* () {
|
|
691
|
+
test('can use stream to write to a new file using strings', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
679
692
|
const { fs, mfs } = setup({ folder: { file: 'test' }, 'empty-folder': null, 'f.html': 'test' });
|
|
680
693
|
const stream = fs.createWriteStream('/folder/file2');
|
|
681
694
|
stream.write('A');
|
|
@@ -691,7 +704,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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* () {
|
|
707
|
+
test('can use stream to overwrite existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
695
708
|
const { fs, mfs } = 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'));
|
|
@@ -705,7 +718,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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* () {
|
|
721
|
+
test('can write by file descriptor', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
709
722
|
const { fs, mfs } = 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' });
|
|
@@ -719,12 +732,12 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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,7 +772,7 @@ 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* () {
|
|
775
|
+
test('can use stream to add to existing file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
763
776
|
const { fs, mfs } = 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'));
|
|
@@ -773,7 +786,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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* () {
|
|
789
|
+
test('can use stream to add to existing file at specified offset', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
777
790
|
const { fs, mfs } = 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'));
|
|
@@ -787,7 +800,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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,7 +824,7 @@ 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* () {
|
|
827
|
+
test('can pipe fs.ReadStream to fs.WriteStream', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
815
828
|
const { fs, mfs } = 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');
|
|
@@ -824,25 +837,25 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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* () {
|
|
858
|
+
test('can write to already open file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
846
859
|
const { fs, mfs } = 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 });
|
|
@@ -856,7 +869,7 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
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* () {
|
|
872
|
+
test('can read a specified slice of a file', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
860
873
|
const { fs, mfs } = 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');
|
|
@@ -871,3 +884,4 @@ const setup = (json = null, mode = 'readwrite') => {
|
|
|
871
884
|
}));
|
|
872
885
|
});
|
|
873
886
|
});
|
|
887
|
+
//# sourceMappingURL=FsaNodeFs.test.js.map
|