mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
import { writeFileSync, unlinkSync, statSync } from 'fs';
|
|
import { createServer } from 'net';
|
|
import {
|
|
removeExistingSocketFile,
|
|
registerSocketFileCleanup,
|
|
} from './socket_file.js';
|
|
import { EventEmitter } from 'events';
|
|
import { tmpdir } from 'os';
|
|
|
|
const testSocketFile = `${tmpdir()}/socket_file_tests`;
|
|
|
|
const removeTestSocketFile = () => {
|
|
try {
|
|
unlinkSync(testSocketFile);
|
|
} catch (error) {
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
Tinytest.add("socket file - don't remove a non-socket file", test => {
|
|
writeFileSync(testSocketFile, "");
|
|
test.throws(
|
|
() => { removeExistingSocketFile(testSocketFile); },
|
|
/An existing file was found/
|
|
);
|
|
removeTestSocketFile()
|
|
});
|
|
|
|
Tinytest.addAsync(
|
|
'socket file - remove a previously existing socket file',
|
|
(test, done) => {
|
|
removeTestSocketFile();
|
|
const server = createServer();
|
|
server.listen(testSocketFile);
|
|
|
|
server.on('listening', Meteor.bindEnvironment(() => {
|
|
test.isNotUndefined(statSync(testSocketFile));
|
|
removeExistingSocketFile(testSocketFile);
|
|
test.throws(
|
|
() => { statSync(testSocketFile); },
|
|
/ENOENT/
|
|
);
|
|
server.close();
|
|
done();
|
|
}));
|
|
}
|
|
);
|
|
|
|
Tinytest.add(
|
|
'socket file - no existing socket file, nothing to remove',
|
|
test => {
|
|
removeTestSocketFile();
|
|
removeExistingSocketFile(testSocketFile);
|
|
}
|
|
);
|
|
|
|
Tinytest.add('socket file - remove socket file on exit', test => {
|
|
const testEventEmitter = new EventEmitter();
|
|
registerSocketFileCleanup(testSocketFile, testEventEmitter);
|
|
['exit', 'SIGINT', 'SIGHUP', 'SIGTERM'].forEach(signal => {
|
|
writeFileSync(testSocketFile, "");
|
|
test.isNotUndefined(statSync(testSocketFile));
|
|
testEventEmitter.emit(signal);
|
|
test.throws(
|
|
() => { statSync(testSocketFile); },
|
|
/ENOENT/
|
|
);
|
|
});
|
|
});
|