UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

58 lines 5.97 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 debug_1 = __importDefault(require("debug")); const fs_1 = __importDefault(require("fs")); const LOCKFILE_NAME = '.testcafe-lockfile'; const STALE_LOCKFILE_AGE = 2 * 24 * 60 * 60 * 1000; const DEBUG_LOGGER = (0, debug_1.default)('testcafe:utils:temp-directory:lockfile'); class LockFile { constructor(dirPath) { this.path = path_1.default.join(dirPath, LOCKFILE_NAME); } _open({ force = false } = {}) { try { fs_1.default.writeFileSync(this.path, '', { flag: force ? 'w' : 'wx' }); return true; } catch (e) { DEBUG_LOGGER('Failed to init lockfile ' + this.path); DEBUG_LOGGER(e); return false; } } _isStale() { const currentMs = Date.now(); try { const { mtimeMs } = fs_1.default.statSync(this.path); return currentMs - mtimeMs > STALE_LOCKFILE_AGE; } catch (e) { DEBUG_LOGGER('Failed to check status of lockfile ' + this.path); DEBUG_LOGGER(e); return false; } } init() { if (this._open()) return true; if (this._isStale()) return this._open({ force: true }); return false; } dispose() { try { fs_1.default.unlinkSync(this.path); } catch (e) { DEBUG_LOGGER('Failed to dispose lockfile ' + this.path); DEBUG_LOGGER(e); } } } exports.default = LockFile; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdGVtcC1kaXJlY3RvcnkvbG9ja2ZpbGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsa0RBQTBCO0FBQzFCLDRDQUFvQjtBQUdwQixNQUFNLGFBQWEsR0FBUSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDbkQsTUFBTSxZQUFZLEdBQVMsSUFBQSxlQUFLLEVBQUMsd0NBQXdDLENBQUMsQ0FBQztBQUUzRSxNQUFxQixRQUFRO0lBQ3pCLFlBQWEsT0FBTztRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRTtRQUN6QixJQUFJO1lBQ0EsWUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUU5RCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxDQUFDLEVBQUU7WUFDTixZQUFZLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQixPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTdCLElBQUk7WUFDQSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0MsT0FBTyxTQUFTLEdBQUcsT0FBTyxHQUFHLGtCQUFrQixDQUFDO1NBQ25EO1FBQ0QsT0FBTyxDQUFDLEVBQUU7WUFDTixZQUFZLENBQUMscUNBQXFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQixPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFdkMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJO1lBQ0EsWUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFDRCxPQUFPLENBQUMsRUFBRTtZQUNOLFlBQVksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25CO0lBQ0wsQ0FBQztDQUNKO0FBdERELDJCQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cblxuY29uc3QgTE9DS0ZJTEVfTkFNRSAgICAgID0gJy50ZXN0Y2FmZS1sb2NrZmlsZSc7XG5jb25zdCBTVEFMRV9MT0NLRklMRV9BR0UgPSAyICogMjQgKiA2MCAqIDYwICogMTAwMDtcbmNvbnN0IERFQlVHX0xPR0dFUiAgICAgICA9IGRlYnVnKCd0ZXN0Y2FmZTp1dGlsczp0ZW1wLWRpcmVjdG9yeTpsb2NrZmlsZScpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NrRmlsZSB7XG4gICAgY29uc3RydWN0b3IgKGRpclBhdGgpIHtcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKGRpclBhdGgsIExPQ0tGSUxFX05BTUUpO1xuICAgIH1cblxuICAgIF9vcGVuICh7IGZvcmNlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMucGF0aCwgJycsIHsgZmxhZzogZm9yY2UgPyAndycgOiAnd3gnIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgREVCVUdfTE9HR0VSKCdGYWlsZWQgdG8gaW5pdCBsb2NrZmlsZSAnICsgdGhpcy5wYXRoKTtcbiAgICAgICAgICAgIERFQlVHX0xPR0dFUihlKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2lzU3RhbGUgKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TXMgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IG10aW1lTXMgfSA9IGZzLnN0YXRTeW5jKHRoaXMucGF0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50TXMgLSBtdGltZU1zID4gU1RBTEVfTE9DS0ZJTEVfQUdFO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBERUJVR19MT0dHRVIoJ0ZhaWxlZCB0byBjaGVjayBzdGF0dXMgb2YgbG9ja2ZpbGUgJyArIHRoaXMucGF0aCk7XG4gICAgICAgICAgICBERUJVR19MT0dHRVIoZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXQgKCkge1xuICAgICAgICBpZiAodGhpcy5fb3BlbigpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2lzU3RhbGUoKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVuKHsgZm9yY2U6IHRydWUgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGRpc3Bvc2UgKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZnMudW5saW5rU3luYyh0aGlzLnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBERUJVR19MT0dHRVIoJ0ZhaWxlZCB0byBkaXNwb3NlIGxvY2tmaWxlICcgKyB0aGlzLnBhdGgpO1xuICAgICAgICAgICAgREVCVUdfTE9HR0VSKGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19