Skip to content

Commit 4846421

Browse files
committed
feature: fileop: add ability to handle abort
1 parent 1d875d1 commit 4846421

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

test/lib/emitters.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,13 @@ module.exports.customEmitter = wraptile((fns) => {
8080

8181
return emitter;
8282
});
83+
84+
module.exports.abortEmitter = (from, to, names = to) => {
85+
const emitter = new EventEmitter();
86+
87+
emitter.abort = () => {
88+
emitter.emit('abort');
89+
};
90+
91+
return emitter;
92+
};

test/server/remove.js

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ const {once} = require('events');
55
const test = require('supertape');
66
const mock = require('mock-require');
77
const clear = require('clear-module');
8+
const wait = require('@iocmd/wait');
89

9-
const {errorEmitter} = require('../lib/emitters');
10+
const {errorEmitter, abortEmitter} = require('../lib/emitters');
1011

1112
const clearFileop = require('../lib/clear');
1213

@@ -43,3 +44,34 @@ test('operate: remove: error', async (t) => {
4344
t.end();
4445
});
4546

47+
test('operate: remove: abort', async (t) => {
48+
clearFileop();
49+
clear(removePath);
50+
51+
const from = '/hello';
52+
const names = ['abc'];
53+
54+
mock(removePath, abortEmitter);
55+
const connect = require(connectPath);
56+
57+
const {
58+
socket,
59+
done,
60+
} = await connect();
61+
62+
socket.emit('operation', 'remove', from, names);
63+
const [id] = await once(socket, 'id');
64+
65+
socket.emit(`${id}#start`);
66+
const emit = socket.emit.bind(socket);
67+
68+
await Promise.all([
69+
once(socket, `${id}#end`),
70+
wait(emit, `${id}#abort`),
71+
]);
72+
73+
done();
74+
75+
t.pass('abort');
76+
t.end();
77+
});

0 commit comments

Comments
 (0)