testcafe
Version:
Automated browser testing for the modern web development stack.
58 lines • 5.97 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 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