-
Notifications
You must be signed in to change notification settings - Fork 135
/
rtorrent.setup.js
40 lines (34 loc) · 1.38 KB
/
rtorrent.setup.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import crypto from 'crypto';
import fs from 'fs';
import os from 'os';
import path from 'path';
const temporaryRuntimeDirectory = path.resolve(os.tmpdir(), `flood.test.${crypto.randomBytes(12).toString('hex')}`);
const rTorrentSession = path.join(temporaryRuntimeDirectory, '.session');
const rTorrentSocket = path.join(temporaryRuntimeDirectory, 'rtorrent.sock');
fs.mkdirSync(rTorrentSession, {recursive: true});
fs.writeFileSync(
`${temporaryRuntimeDirectory}/rtorrent.rc`,
`
directory.default.set = "${temporaryRuntimeDirectory}"
session.path.set = "${rTorrentSession}"
network.scgi.open_local = "${rTorrentSocket}"
`,
);
process.argv = ['node', 'flood'];
process.argv.push('--rundir', temporaryRuntimeDirectory);
process.argv.push('--auth', 'none');
process.argv.push('--rtsocket', rTorrentSocket);
process.argv.push('--allowedpath', temporaryRuntimeDirectory);
process.argv.push('--rtorrent');
process.argv.push('--rtconfig', `${temporaryRuntimeDirectory}/rtorrent.rc`);
process.argv.push('--test');
process.argv.push('--assets', 'false');
afterAll((done) => {
process.kill(Number(fs.readFileSync(`${temporaryRuntimeDirectory}/rtorrent.pid`).toString()));
if (process.env.CI !== 'true') {
// TODO: This leads to test flakiness caused by ENOENT error
// NeDB provides no method to close database connection
fs.rmdirSync(temporaryRuntimeDirectory, {recursive: true});
}
done();
});