testcafe
Version:
Automated browser testing for the modern web development stack.
59 lines • 6.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const util_1 = require("util");
const del_1 = __importDefault(require("del"));
const lodash_1 = require("lodash");
const process_1 = require("../../process");
const commands_1 = __importDefault(require("./commands"));
const DIRECTORIES_TO_CLEANUP = {};
function addDirectory(dirPath) {
if (!DIRECTORIES_TO_CLEANUP[dirPath])
DIRECTORIES_TO_CLEANUP[dirPath] = {};
}
async function removeDirectory(dirPath) {
if (!DIRECTORIES_TO_CLEANUP[dirPath])
return;
let delPromise = DIRECTORIES_TO_CLEANUP[dirPath].delPromise;
if (!delPromise) {
delPromise = (0, process_1.killBrowserProcess)(path_1.default.basename(dirPath))
.then(() => (0, del_1.default)(dirPath, { force: true }));
DIRECTORIES_TO_CLEANUP[dirPath].delPromise = delPromise;
}
await DIRECTORIES_TO_CLEANUP[dirPath].delPromise;
delete DIRECTORIES_TO_CLEANUP[dirPath].delPromise;
}
async function dispatchCommand(message) {
switch (message.command) {
case commands_1.default.init:
return;
case commands_1.default.add:
addDirectory(message.path);
return;
case commands_1.default.remove:
addDirectory(message.path);
await removeDirectory(message.path);
return;
}
}
process.on('message', async (message) => {
let error = '';
try {
await dispatchCommand(message);
}
catch (e) {
error = (0, util_1.inspect)(e);
}
process.send({ id: message.id, error });
});
process.on('disconnect', async () => {
const removePromises = Object
.keys(DIRECTORIES_TO_CLEANUP)
.map(dirPath => removeDirectory(dirPath).catch(lodash_1.noop));
await Promise.all(removePromises);
process.exit(0); //eslint-disable-line no-process-exit
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3RlbXAtZGlyZWN0b3J5L2NsZWFudXAtcHJvY2Vzcy93b3JrZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsK0JBQStCO0FBQy9CLDhDQUFzQjtBQUN0QixtQ0FBOEI7QUFDOUIsMkNBQW1EO0FBQ25ELDBEQUFrQztBQUdsQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUVsQyxTQUFTLFlBQVksQ0FBRSxPQUFPO0lBQzFCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7UUFDaEMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFFRCxLQUFLLFVBQVUsZUFBZSxDQUFFLE9BQU87SUFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQztRQUNoQyxPQUFPO0lBRVgsSUFBSSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBRTVELElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDYixVQUFVLEdBQUcsSUFBQSw0QkFBa0IsRUFBQyxjQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGFBQUcsRUFBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9DLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7S0FDM0Q7SUFFRCxNQUFNLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUVqRCxPQUFPLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUN0RCxDQUFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBRSxPQUFPO0lBQ25DLFFBQVEsT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUNyQixLQUFLLGtCQUFRLENBQUMsSUFBSTtZQUNkLE9BQU87UUFDWCxLQUFLLGtCQUFRLENBQUMsR0FBRztZQUNiLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsT0FBTztRQUNYLEtBQUssa0JBQVEsQ0FBQyxNQUFNO1lBQ2hCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE9BQU87S0FDZDtBQUNMLENBQUM7QUFFRCxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUU7SUFDbEMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRWYsSUFBSTtRQUNBLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDTixLQUFLLEdBQUcsSUFBQSxjQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEI7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLE1BQU07U0FDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1NBQzVCLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSSxDQUFDLENBQUMsQ0FBQztJQUUxRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFxQztBQUMxRCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IGRlbCBmcm9tICdkZWwnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBraWxsQnJvd3NlclByb2Nlc3MgfSBmcm9tICcuLi8uLi9wcm9jZXNzJztcbmltcG9ydCBDT01NQU5EUyBmcm9tICcuL2NvbW1hbmRzJztcblxuXG5jb25zdCBESVJFQ1RPUklFU19UT19DTEVBTlVQID0ge307XG5cbmZ1bmN0aW9uIGFkZERpcmVjdG9yeSAoZGlyUGF0aCkge1xuICAgIGlmICghRElSRUNUT1JJRVNfVE9fQ0xFQU5VUFtkaXJQYXRoXSlcbiAgICAgICAgRElSRUNUT1JJRVNfVE9fQ0xFQU5VUFtkaXJQYXRoXSA9IHt9O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZW1vdmVEaXJlY3RvcnkgKGRpclBhdGgpIHtcbiAgICBpZiAoIURJUkVDVE9SSUVTX1RPX0NMRUFOVVBbZGlyUGF0aF0pXG4gICAgICAgIHJldHVybjtcblxuICAgIGxldCBkZWxQcm9taXNlID0gRElSRUNUT1JJRVNfVE9fQ0xFQU5VUFtkaXJQYXRoXS5kZWxQcm9taXNlO1xuXG4gICAgaWYgKCFkZWxQcm9taXNlKSB7XG4gICAgICAgIGRlbFByb21pc2UgPSBraWxsQnJvd3NlclByb2Nlc3MocGF0aC5iYXNlbmFtZShkaXJQYXRoKSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGRlbChkaXJQYXRoLCB7IGZvcmNlOiB0cnVlIH0pKTtcblxuICAgICAgICBESVJFQ1RPUklFU19UT19DTEVBTlVQW2RpclBhdGhdLmRlbFByb21pc2UgPSBkZWxQcm9taXNlO1xuICAgIH1cblxuICAgIGF3YWl0IERJUkVDVE9SSUVTX1RPX0NMRUFOVVBbZGlyUGF0aF0uZGVsUHJvbWlzZTtcblxuICAgIGRlbGV0ZSBESVJFQ1RPUklFU19UT19DTEVBTlVQW2RpclBhdGhdLmRlbFByb21pc2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRpc3BhdGNoQ29tbWFuZCAobWVzc2FnZSkge1xuICAgIHN3aXRjaCAobWVzc2FnZS5jb21tYW5kKSB7XG4gICAgICAgIGNhc2UgQ09NTUFORFMuaW5pdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBDT01NQU5EUy5hZGQ6XG4gICAgICAgICAgICBhZGREaXJlY3RvcnkobWVzc2FnZS5wYXRoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBDT01NQU5EUy5yZW1vdmU6XG4gICAgICAgICAgICBhZGREaXJlY3RvcnkobWVzc2FnZS5wYXRoKTtcbiAgICAgICAgICAgIGF3YWl0IHJlbW92ZURpcmVjdG9yeShtZXNzYWdlLnBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cbn1cblxucHJvY2Vzcy5vbignbWVzc2FnZScsIGFzeW5jIG1lc3NhZ2UgPT4ge1xuICAgIGxldCBlcnJvciA9ICcnO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZGlzcGF0Y2hDb21tYW5kKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBlcnJvciA9IGluc3BlY3QoZSk7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5zZW5kKHsgaWQ6IG1lc3NhZ2UuaWQsIGVycm9yIH0pO1xufSk7XG5cbnByb2Nlc3Mub24oJ2Rpc2Nvbm5lY3QnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVtb3ZlUHJvbWlzZXMgPSBPYmplY3RcbiAgICAgICAgLmtleXMoRElSRUNUT1JJRVNfVE9fQ0xFQU5VUClcbiAgICAgICAgLm1hcChkaXJQYXRoID0+IHJlbW92ZURpcmVjdG9yeShkaXJQYXRoKS5jYXRjaChub29wKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChyZW1vdmVQcm9taXNlcyk7XG5cbiAgICBwcm9jZXNzLmV4aXQoMCk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm9jZXNzLWV4aXRcbn0pO1xuIl19