UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

60 lines 7.09 kB
"use strict"; 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 pinkie_1 = __importDefault(require("pinkie")); 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 = process_1.killBrowserProcess(path_1.default.basename(dirPath)) .then(() => 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 = 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 pinkie_1.default.all(removePromises); process.exit(0); //eslint-disable-line no-process-exit }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3RlbXAtZGlyZWN0b3J5L2NsZWFudXAtcHJvY2Vzcy93b3JrZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsK0JBQStCO0FBQy9CLDhDQUFzQjtBQUN0QixvREFBNkI7QUFDN0IsbUNBQThCO0FBQzlCLDJDQUFtRDtBQUNuRCwwREFBa0M7QUFHbEMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFbEMsU0FBUyxZQUFZLENBQUUsT0FBTztJQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1FBQ2hDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBRSxPQUFPO0lBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7UUFDaEMsT0FBTztJQUVYLElBQUksVUFBVSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUU1RCxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2IsVUFBVSxHQUFHLDRCQUFrQixDQUFDLGNBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9DLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7S0FDM0Q7SUFFRCxNQUFNLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUVqRCxPQUFPLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUN0RCxDQUFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBRSxPQUFPO0lBQ25DLFFBQVEsT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUNyQixLQUFLLGtCQUFRLENBQUMsSUFBSTtZQUNkLE9BQU87UUFDWCxLQUFLLGtCQUFRLENBQUMsR0FBRztZQUNiLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsT0FBTztRQUNYLEtBQUssa0JBQVEsQ0FBQyxNQUFNO1lBQ2hCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE9BQU87S0FDZDtBQUNMLENBQUM7QUFFRCxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUU7SUFDbEMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRWYsSUFBSTtRQUNBLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDTixLQUFLLEdBQUcsY0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNoQyxNQUFNLGNBQWMsR0FBRyxNQUFNO1NBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztTQUM1QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUksQ0FBQyxDQUFDLENBQUM7SUFFMUQsTUFBTSxnQkFBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVsQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0FBQzFELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgZGVsIGZyb20gJ2RlbCc7XG5pbXBvcnQgUHJvbWlzZSBmcm9tICdwaW5raWUnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBraWxsQnJvd3NlclByb2Nlc3MgfSBmcm9tICcuLi8uLi9wcm9jZXNzJztcbmltcG9ydCBDT01NQU5EUyBmcm9tICcuL2NvbW1hbmRzJztcblxuXG5jb25zdCBESVJFQ1RPUklFU19UT19DTEVBTlVQID0ge307XG5cbmZ1bmN0aW9uIGFkZERpcmVjdG9yeSAoZGlyUGF0aCkge1xuICAgIGlmICghRElSRUNUT1JJRVNfVE9fQ0xFQU5VUFtkaXJQYXRoXSlcbiAgICAgICAgRElSRUNUT1JJRVNfVE9fQ0xFQU5VUFtkaXJQYXRoXSA9IHt9O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZW1vdmVEaXJlY3RvcnkgKGRpclBhdGgpIHtcbiAgICBpZiAoIURJUkVDVE9SSUVTX1RPX0NMRUFOVVBbZGlyUGF0aF0pXG4gICAgICAgIHJldHVybjtcblxuICAgIGxldCBkZWxQcm9taXNlID0gRElSRUNUT1JJRVNfVE9fQ0xFQU5VUFtkaXJQYXRoXS5kZWxQcm9taXNlO1xuXG4gICAgaWYgKCFkZWxQcm9taXNlKSB7XG4gICAgICAgIGRlbFByb21pc2UgPSBraWxsQnJvd3NlclByb2Nlc3MocGF0aC5iYXNlbmFtZShkaXJQYXRoKSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGRlbChkaXJQYXRoLCB7IGZvcmNlOiB0cnVlIH0pKTtcblxuICAgICAgICBESVJFQ1RPUklFU19UT19DTEVBTlVQW2RpclBhdGhdLmRlbFByb21pc2UgPSBkZWxQcm9taXNlO1xuICAgIH1cblxuICAgIGF3YWl0IERJUkVDVE9SSUVTX1RPX0NMRUFOVVBbZGlyUGF0aF0uZGVsUHJvbWlzZTtcblxuICAgIGRlbGV0ZSBESVJFQ1RPUklFU19UT19DTEVBTlVQW2RpclBhdGhdLmRlbFByb21pc2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRpc3BhdGNoQ29tbWFuZCAobWVzc2FnZSkge1xuICAgIHN3aXRjaCAobWVzc2FnZS5jb21tYW5kKSB7XG4gICAgICAgIGNhc2UgQ09NTUFORFMuaW5pdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBDT01NQU5EUy5hZGQ6XG4gICAgICAgICAgICBhZGREaXJlY3RvcnkobWVzc2FnZS5wYXRoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBDT01NQU5EUy5yZW1vdmU6XG4gICAgICAgICAgICBhZGREaXJlY3RvcnkobWVzc2FnZS5wYXRoKTtcbiAgICAgICAgICAgIGF3YWl0IHJlbW92ZURpcmVjdG9yeShtZXNzYWdlLnBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cbn1cblxucHJvY2Vzcy5vbignbWVzc2FnZScsIGFzeW5jIG1lc3NhZ2UgPT4ge1xuICAgIGxldCBlcnJvciA9ICcnO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZGlzcGF0Y2hDb21tYW5kKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBlcnJvciA9IGluc3BlY3QoZSk7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5zZW5kKHsgaWQ6IG1lc3NhZ2UuaWQsIGVycm9yIH0pO1xufSk7XG5cbnByb2Nlc3Mub24oJ2Rpc2Nvbm5lY3QnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVtb3ZlUHJvbWlzZXMgPSBPYmplY3RcbiAgICAgICAgLmtleXMoRElSRUNUT1JJRVNfVE9fQ0xFQU5VUClcbiAgICAgICAgLm1hcChkaXJQYXRoID0+IHJlbW92ZURpcmVjdG9yeShkaXJQYXRoKS5jYXRjaChub29wKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChyZW1vdmVQcm9taXNlcyk7XG5cbiAgICBwcm9jZXNzLmV4aXQoMCk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm9jZXNzLWV4aXRcbn0pO1xuIl19