@appium/support 2.55.2 → 2.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/env.js +102 -0
- package/build/lib/fs.js +74 -56
- package/build/lib/image-util.js +4 -332
- package/build/lib/index.js +18 -6
- package/build/lib/log-internal.js +2 -4
- package/build/lib/logger.js +2 -4
- package/build/lib/logging.js +2 -4
- package/build/lib/mjpeg.js +2 -4
- package/build/lib/mkdirp.js +7 -11
- package/build/lib/net.js +2 -4
- package/build/lib/node.js +99 -2
- package/build/lib/npm.js +240 -0
- package/build/lib/plist.js +2 -4
- package/build/lib/process.js +2 -4
- package/build/lib/system.js +2 -4
- package/build/lib/tempdir.js +2 -4
- package/build/lib/timing.js +2 -4
- package/build/lib/util.js +6 -8
- package/build/lib/zip.js +4 -8
- package/lib/env.js +162 -0
- package/lib/fs.js +193 -69
- package/lib/image-util.js +3 -570
- package/lib/index.js +8 -2
- package/lib/log-internal.js +2 -2
- package/lib/logging.js +1 -1
- package/lib/mkdirp.js +3 -6
- package/lib/net.js +4 -4
- package/lib/node.js +104 -1
- package/lib/npm.js +335 -0
- package/lib/tempdir.js +6 -6
- package/lib/util.js +28 -24
- package/lib/zip.js +7 -8
- package/package.json +20 -9
- package/build/test/assets/sample_binary.plist +0 -0
- package/build/test/assets/sample_text.plist +0 -28
- package/build/test/fs-specs.js +0 -264
- package/build/test/helpers.js +0 -35
- package/build/test/image-util-e2e-specs.js +0 -227
- package/build/test/index-specs.js +0 -49
- package/build/test/log-internals-specs.js +0 -97
- package/build/test/logger/helpers.js +0 -71
- package/build/test/logger/logger-force-specs.js +0 -41
- package/build/test/logger/logger-normal-specs.js +0 -113
- package/build/test/logger/logger-test-specs.js +0 -40
- package/build/test/mjpeg-e2e-specs.js +0 -96
- package/build/test/net-e2e-specs.js +0 -32
- package/build/test/node-e2e-specs.js +0 -22
- package/build/test/plist-specs.js +0 -54
- package/build/test/process-specs.js +0 -104
- package/build/test/system-specs.js +0 -136
- package/build/test/tempdir-specs.js +0 -86
- package/build/test/timing-specs.js +0 -125
- package/build/test/util-e2e-specs.js +0 -136
- package/build/test/util-specs.js +0 -537
- package/build/test/zip-e2e-specs.js +0 -233
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _index = require("../lib/index.js");
|
|
8
|
-
|
|
9
|
-
var _os = _interopRequireDefault(require("os"));
|
|
10
|
-
|
|
11
|
-
var _sinon = _interopRequireDefault(require("sinon"));
|
|
12
|
-
|
|
13
|
-
var teen_process = _interopRequireWildcard(require("teen_process"));
|
|
14
|
-
|
|
15
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
16
|
-
|
|
17
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
-
|
|
19
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
|
-
|
|
21
|
-
let sandbox,
|
|
22
|
-
tpMock,
|
|
23
|
-
osMock = null;
|
|
24
|
-
let SANDBOX = Symbol();
|
|
25
|
-
let mocks = {};
|
|
26
|
-
let libs = {
|
|
27
|
-
teen_process,
|
|
28
|
-
os: _os.default,
|
|
29
|
-
system: _index.system
|
|
30
|
-
};
|
|
31
|
-
describe('system', function () {
|
|
32
|
-
describe('isX functions', function () {
|
|
33
|
-
beforeEach(function () {
|
|
34
|
-
osMock = _sinon.default.mock(_os.default);
|
|
35
|
-
});
|
|
36
|
-
afterEach(function () {
|
|
37
|
-
osMock.verify();
|
|
38
|
-
});
|
|
39
|
-
it('should correctly return Windows System if it is a Windows', function () {
|
|
40
|
-
osMock.expects('type').returns('Windows_NT');
|
|
41
|
-
_index.system.isWindows().should.be.true;
|
|
42
|
-
});
|
|
43
|
-
it('should correctly return Mac if it is a Mac', function () {
|
|
44
|
-
osMock.expects('type').returns('Darwin');
|
|
45
|
-
_index.system.isMac().should.be.true;
|
|
46
|
-
});
|
|
47
|
-
it('should correctly return Linux if it is a Linux', function () {
|
|
48
|
-
osMock.expects('type').twice().returns('Linux');
|
|
49
|
-
_index.system.isLinux().should.be.true;
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('mac OSX version', function () {
|
|
53
|
-
beforeEach(function () {
|
|
54
|
-
tpMock = _sinon.default.mock(teen_process);
|
|
55
|
-
});
|
|
56
|
-
afterEach(function () {
|
|
57
|
-
tpMock.verify();
|
|
58
|
-
});
|
|
59
|
-
it('should return correct version for 10.10.5', async function () {
|
|
60
|
-
tpMock.expects('exec').once().withExactArgs('sw_vers', ['-productVersion']).returns({
|
|
61
|
-
stdout: '10.10.5'
|
|
62
|
-
});
|
|
63
|
-
await _index.system.macOsxVersion().should.eventually.equal('10.10');
|
|
64
|
-
});
|
|
65
|
-
it('should return correct version for 10.12', async function () {
|
|
66
|
-
tpMock.expects('exec').once().withExactArgs('sw_vers', ['-productVersion']).returns({
|
|
67
|
-
stdout: '10.12.0'
|
|
68
|
-
});
|
|
69
|
-
await _index.system.macOsxVersion().should.eventually.equal('10.12');
|
|
70
|
-
});
|
|
71
|
-
it('should return correct version for 10.12 with newline', async function () {
|
|
72
|
-
tpMock.expects('exec').once().withExactArgs('sw_vers', ['-productVersion']).returns({
|
|
73
|
-
stdout: '10.12 \n'
|
|
74
|
-
});
|
|
75
|
-
await _index.system.macOsxVersion().should.eventually.equal('10.12');
|
|
76
|
-
});
|
|
77
|
-
it("should throw an error if OSX version can't be determined", async function () {
|
|
78
|
-
let invalidOsx = 'error getting operation system version blabla';
|
|
79
|
-
tpMock.expects('exec').once().withExactArgs('sw_vers', ['-productVersion']).returns({
|
|
80
|
-
stdout: invalidOsx
|
|
81
|
-
});
|
|
82
|
-
await _index.system.macOsxVersion().should.eventually.be.rejectedWith(new RegExp(_lodash.default.escapeRegExp(invalidOsx)));
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
describe('architecture', function () {
|
|
86
|
-
beforeEach(function () {
|
|
87
|
-
sandbox = _sinon.default.createSandbox();
|
|
88
|
-
mocks[SANDBOX] = sandbox;
|
|
89
|
-
|
|
90
|
-
for (let [key, value] of _lodash.default.toPairs(libs)) {
|
|
91
|
-
mocks[key] = sandbox.mock(value);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
afterEach(function () {
|
|
95
|
-
sandbox.restore();
|
|
96
|
-
});
|
|
97
|
-
it('should return correct architecture if it is a 64 bit Mac/Linux', async function () {
|
|
98
|
-
mocks.os.expects('type').thrice().returns('Darwin');
|
|
99
|
-
mocks.teen_process.expects('exec').once().withExactArgs('uname', ['-m']).returns({
|
|
100
|
-
stdout: 'x86_64'
|
|
101
|
-
});
|
|
102
|
-
let arch = await _index.system.arch();
|
|
103
|
-
arch.should.equal('64');
|
|
104
|
-
mocks[SANDBOX].verify();
|
|
105
|
-
});
|
|
106
|
-
it('should return correct architecture if it is a 32 bit Mac/Linux', async function () {
|
|
107
|
-
mocks.os.expects('type').twice().returns('Linux');
|
|
108
|
-
mocks.teen_process.expects('exec').once().withExactArgs('uname', ['-m']).returns({
|
|
109
|
-
stdout: 'i686'
|
|
110
|
-
});
|
|
111
|
-
let arch = await _index.system.arch();
|
|
112
|
-
arch.should.equal('32');
|
|
113
|
-
mocks[SANDBOX].verify();
|
|
114
|
-
});
|
|
115
|
-
it('should return correct architecture if it is a 64 bit Windows', async function () {
|
|
116
|
-
mocks.os.expects('type').thrice().returns('Windows_NT');
|
|
117
|
-
mocks.system.expects('isOSWin64').once().returns(true);
|
|
118
|
-
let arch = await _index.system.arch();
|
|
119
|
-
arch.should.equal('64');
|
|
120
|
-
mocks[SANDBOX].verify();
|
|
121
|
-
});
|
|
122
|
-
it('should return correct architecture if it is a 32 bit Windows', async function () {
|
|
123
|
-
mocks.os.expects('type').thrice().returns('Windows_NT');
|
|
124
|
-
mocks.system.expects('isOSWin64').once().returns(false);
|
|
125
|
-
let arch = await _index.system.arch();
|
|
126
|
-
arch.should.equal('32');
|
|
127
|
-
mocks[SANDBOX].verify();
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
it('should know architecture', function () {
|
|
131
|
-
return _index.system.arch();
|
|
132
|
-
});
|
|
133
|
-
});require('source-map-support').install();
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3Qvc3lzdGVtLXNwZWNzLmpzIl0sIm5hbWVzIjpbInNhbmRib3giLCJ0cE1vY2siLCJvc01vY2siLCJTQU5EQk9YIiwiU3ltYm9sIiwibW9ja3MiLCJsaWJzIiwidGVlbl9wcm9jZXNzIiwib3MiLCJzeXN0ZW0iLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJzaW5vbiIsIm1vY2siLCJhZnRlckVhY2giLCJ2ZXJpZnkiLCJpdCIsImV4cGVjdHMiLCJyZXR1cm5zIiwiaXNXaW5kb3dzIiwic2hvdWxkIiwiYmUiLCJ0cnVlIiwiaXNNYWMiLCJ0d2ljZSIsImlzTGludXgiLCJvbmNlIiwid2l0aEV4YWN0QXJncyIsInN0ZG91dCIsIm1hY09zeFZlcnNpb24iLCJldmVudHVhbGx5IiwiZXF1YWwiLCJpbnZhbGlkT3N4IiwicmVqZWN0ZWRXaXRoIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsImNyZWF0ZVNhbmRib3giLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJyZXN0b3JlIiwidGhyaWNlIiwiYXJjaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUdBLElBQUlBLE9BQUo7QUFBQSxJQUFhQyxNQUFiO0FBQUEsSUFBcUJDLE1BQU0sR0FBRyxJQUE5QjtBQUNBLElBQUlDLE9BQU8sR0FBR0MsTUFBTSxFQUFwQjtBQUNBLElBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsSUFBSUMsSUFBSSxHQUFHO0FBQUNDLEVBQUFBLFlBQUQ7QUFBZUMsRUFBQUEsRUFBRSxFQUFGQSxXQUFmO0FBQW1CQyxFQUFBQSxNQUFNLEVBQU5BO0FBQW5CLENBQVg7QUFFQUMsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFZO0FBQzdCQSxFQUFBQSxRQUFRLENBQUMsZUFBRCxFQUFrQixZQUFZO0FBQ3BDQyxJQUFBQSxVQUFVLENBQUMsWUFBWTtBQUNyQlQsTUFBQUEsTUFBTSxHQUFHVSxlQUFNQyxJQUFOLENBQVdMLFdBQVgs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QUFiLENBQXFCLFdBQXJCLEVBQWtDUyxJQUFsQyxHQUF5Q1IsT0FBekMsQ0FBaUQsSUFBakQ7QUFDQSxVQUFJeUIsSUFBSSxHQUFHLE1BQU1sQyxjQUFPa0MsSUFBUCxFQUFqQjtBQUNBQSxNQUFBQSxJQUFJLENBQUN2QixNQUFMLENBQVlXLEtBQVosQ0FBa0IsSUFBbEI7QUFDQTFCLE1BQUFBLEtBQUssQ0FBQ0YsT0FBRCxDQUFMLENBQWVZLE1BQWY7QUFDRCxLQU5DLENBQUY7QUFRQUMsSUFBQUEsRUFBRSxDQUFDLDhEQUFELEVBQWlFLGtCQUFrQjtBQUNuRlgsTUFBQUEsS0FBSyxDQUFDRyxFQUFOLENBQVNTLE9BQVQsQ0FBaUIsTUFBakIsRUFBeUJ5QixNQUF6QixHQUFrQ3hCLE9BQWxDLENBQTBDLFlBQTFDO0FBQ0FiLE1BQUFBLEtBQUssQ0FBQ0ksTUFBTixDQUFhUSxPQUFiLENBQXFCLFdBQXJCLEVBQWtDUyxJQUFsQyxHQUF5Q1IsT0FBekMsQ0FBaUQsS0FBakQ7QUFDQSxVQUFJeUIsSUFBSSxHQUFHLE1BQU1sQyxjQUFPa0MsSUFBUCxFQUFqQjtBQUNBQSxNQUFBQSxJQUFJLENBQUN2QixNQUFMLENBQVlXLEtBQVosQ0FBa0IsSUFBbEI7QUFDQTFCLE1BQUFBLEtBQUssQ0FBQ0YsT0FBRCxDQUFMLENBQWVZLE1BQWY7QUFDRCxLQU5DLENBQUY7QUFPRCxHQTVDTyxDQUFSO0FBOENBQyxFQUFBQSxFQUFFLENBQUMsMEJBQUQsRUFBNkIsWUFBWTtBQUN6QyxXQUFPUCxjQUFPa0MsSUFBUCxFQUFQO0FBQ0QsR0FGQyxDQUFGO0FBR0QsQ0F4R08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSAnLi4vbGliL2luZGV4LmpzJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICogYXMgdGVlbl9wcm9jZXNzIGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbmxldCBzYW5kYm94LCB0cE1vY2ssIG9zTW9jayA9IG51bGw7XG5sZXQgU0FOREJPWCA9IFN5bWJvbCgpO1xubGV0IG1vY2tzID0ge307XG5sZXQgbGlicyA9IHt0ZWVuX3Byb2Nlc3MsIG9zLCBzeXN0ZW19O1xuXG5kZXNjcmliZSgnc3lzdGVtJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnaXNYIGZ1bmN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIG9zTW9jayA9IHNpbm9uLm1vY2sob3MpO1xuICAgIH0pO1xuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBvc01vY2sudmVyaWZ5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gV2luZG93cyBTeXN0ZW0gaWYgaXQgaXMgYSBXaW5kb3dzJywgZnVuY3Rpb24gKCkge1xuICAgICAgb3NNb2NrLmV4cGVjdHMoJ3R5cGUnKS5yZXR1cm5zKCdXaW5kb3dzX05UJyk7XG4gICAgICBzeXN0ZW0uaXNXaW5kb3dzKCkuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gTWFjIGlmIGl0IGlzIGEgTWFjJywgZnVuY3Rpb24gKCkge1xuICAgICAgb3NNb2NrLmV4cGVjdHMoJ3R5cGUnKS5yZXR1cm5zKCdEYXJ3aW4nKTtcbiAgICAgIHN5c3RlbS5pc01hYygpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgcmV0dXJuIExpbnV4IGlmIGl0IGlzIGEgTGludXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBvc01vY2suZXhwZWN0cygndHlwZScpLnR3aWNlKCkucmV0dXJucygnTGludXgnKTtcbiAgICAgIHN5c3RlbS5pc0xpbnV4KCkuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtYWMgT1NYIHZlcnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICB0cE1vY2sgPSBzaW5vbi5tb2NrKHRlZW5fcHJvY2Vzcyk7XG4gICAgfSk7XG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHRwTW9jay52ZXJpZnkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgdmVyc2lvbiBmb3IgMTAuMTAuNScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRwTW9jay5leHBlY3RzKCdleGVjJykub25jZSgpLndpdGhFeGFjdEFyZ3MoJ3N3X3ZlcnMnLCBbJy1wcm9kdWN0VmVyc2lvbiddKS5yZXR1cm5zKHtzdGRvdXQ6ICcxMC4xMC41J30pO1xuICAgICAgYXdhaXQgc3lzdGVtLm1hY09zeFZlcnNpb24oKS5zaG91bGQuZXZlbnR1YWxseS5lcXVhbCgnMTAuMTAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgdmVyc2lvbiBmb3IgMTAuMTInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0cE1vY2suZXhwZWN0cygnZXhlYycpLm9uY2UoKS53aXRoRXhhY3RBcmdzKCdzd192ZXJzJywgWyctcHJvZHVjdFZlcnNpb24nXSkucmV0dXJucyh7c3Rkb3V0OiAnMTAuMTIuMCd9KTtcbiAgICAgIGF3YWl0IHN5c3RlbS5tYWNPc3hWZXJzaW9uKCkuc2hvdWxkLmV2ZW50dWFsbHkuZXF1YWwoJzEwLjEyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBjb3JyZWN0IHZlcnNpb24gZm9yIDEwLjEyIHdpdGggbmV3bGluZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRwTW9jay5leHBlY3RzKCdleGVjJykub25jZSgpLndpdGhFeGFjdEFyZ3MoJ3N3X3ZlcnMnLCBbJy1wcm9kdWN0VmVyc2lvbiddKS5yZXR1cm5zKHtzdGRvdXQ6ICcxMC4xMiAgIFxcbid9KTtcbiAgICAgIGF3YWl0IHN5c3RlbS5tYWNPc3hWZXJzaW9uKCkuc2hvdWxkLmV2ZW50dWFsbHkuZXF1YWwoJzEwLjEyJyk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBPU1ggdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkXCIsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBpbnZhbGlkT3N4ID0gJ2Vycm9yIGdldHRpbmcgb3BlcmF0aW9uIHN5c3RlbSB2ZXJzaW9uIGJsYWJsYSc7XG4gICAgICB0cE1vY2suZXhwZWN0cygnZXhlYycpLm9uY2UoKS53aXRoRXhhY3RBcmdzKCdzd192ZXJzJywgWyctcHJvZHVjdFZlcnNpb24nXSkucmV0dXJucyh7c3Rkb3V0OiBpbnZhbGlkT3N4fSk7XG4gICAgICBhd2FpdCBzeXN0ZW0ubWFjT3N4VmVyc2lvbigpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChuZXcgUmVnRXhwKF8uZXNjYXBlUmVnRXhwKGludmFsaWRPc3gpKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhcmNoaXRlY3R1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgbW9ja3NbU0FOREJPWF0gPSBzYW5kYm94O1xuICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhsaWJzKSkge1xuICAgICAgICBtb2Nrc1trZXldID0gc2FuZGJveC5tb2NrKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgYXJjaGl0ZWN0dXJlIGlmIGl0IGlzIGEgNjQgYml0IE1hYy9MaW51eCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tzLm9zLmV4cGVjdHMoJ3R5cGUnKS50aHJpY2UoKS5yZXR1cm5zKCdEYXJ3aW4nKTtcbiAgICAgIG1vY2tzLnRlZW5fcHJvY2Vzcy5leHBlY3RzKCdleGVjJykub25jZSgpLndpdGhFeGFjdEFyZ3MoJ3VuYW1lJywgWyctbSddKS5yZXR1cm5zKHtzdGRvdXQ6ICd4ODZfNjQnfSk7XG4gICAgICBsZXQgYXJjaCA9IGF3YWl0IHN5c3RlbS5hcmNoKCk7XG4gICAgICBhcmNoLnNob3VsZC5lcXVhbCgnNjQnKTtcbiAgICAgIG1vY2tzW1NBTkRCT1hdLnZlcmlmeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gY29ycmVjdCBhcmNoaXRlY3R1cmUgaWYgaXQgaXMgYSAzMiBiaXQgTWFjL0xpbnV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbW9ja3Mub3MuZXhwZWN0cygndHlwZScpLnR3aWNlKCkucmV0dXJucygnTGludXgnKTtcbiAgICAgIG1vY2tzLnRlZW5fcHJvY2Vzcy5leHBlY3RzKCdleGVjJykub25jZSgpLndpdGhFeGFjdEFyZ3MoJ3VuYW1lJywgWyctbSddKS5yZXR1cm5zKHtzdGRvdXQ6ICdpNjg2J30pO1xuICAgICAgbGV0IGFyY2ggPSBhd2FpdCBzeXN0ZW0uYXJjaCgpO1xuICAgICAgYXJjaC5zaG91bGQuZXF1YWwoJzMyJyk7XG4gICAgICBtb2Nrc1tTQU5EQk9YXS52ZXJpZnkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgYXJjaGl0ZWN0dXJlIGlmIGl0IGlzIGEgNjQgYml0IFdpbmRvd3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2Nrcy5vcy5leHBlY3RzKCd0eXBlJykudGhyaWNlKCkucmV0dXJucygnV2luZG93c19OVCcpO1xuICAgICAgbW9ja3Muc3lzdGVtLmV4cGVjdHMoJ2lzT1NXaW42NCcpLm9uY2UoKS5yZXR1cm5zKHRydWUpO1xuICAgICAgbGV0IGFyY2ggPSBhd2FpdCBzeXN0ZW0uYXJjaCgpO1xuICAgICAgYXJjaC5zaG91bGQuZXF1YWwoJzY0Jyk7XG4gICAgICBtb2Nrc1tTQU5EQk9YXS52ZXJpZnkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgYXJjaGl0ZWN0dXJlIGlmIGl0IGlzIGEgMzIgYml0IFdpbmRvd3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2Nrcy5vcy5leHBlY3RzKCd0eXBlJykudGhyaWNlKCkucmV0dXJucygnV2luZG93c19OVCcpO1xuICAgICAgbW9ja3Muc3lzdGVtLmV4cGVjdHMoJ2lzT1NXaW42NCcpLm9uY2UoKS5yZXR1cm5zKGZhbHNlKTtcbiAgICAgIGxldCBhcmNoID0gYXdhaXQgc3lzdGVtLmFyY2goKTtcbiAgICAgIGFyY2guc2hvdWxkLmVxdWFsKCczMicpO1xuICAgICAgbW9ja3NbU0FOREJPWF0udmVyaWZ5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQga25vdyBhcmNoaXRlY3R1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHN5c3RlbS5hcmNoKCk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3Qvc3lzdGVtLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
var _index = require("../lib/index.js");
|
|
6
|
-
|
|
7
|
-
describe('tempdir', function () {
|
|
8
|
-
afterEach(function () {
|
|
9
|
-
delete process.env.APPIUM_TMP_DIR;
|
|
10
|
-
});
|
|
11
|
-
it('should be able to generate a path', async function () {
|
|
12
|
-
const path = await _index.tempDir.path({
|
|
13
|
-
prefix: 'myfile',
|
|
14
|
-
suffix: '.tmp'
|
|
15
|
-
});
|
|
16
|
-
path.should.exist;
|
|
17
|
-
path.should.include('myfile.tmp');
|
|
18
|
-
});
|
|
19
|
-
it('should be able to generate a path with process.env.APPIUM_TMP_DIR', async function () {
|
|
20
|
-
const preRootDirPath = await _index.tempDir.openDir();
|
|
21
|
-
process.env.APPIUM_TMP_DIR = preRootDirPath;
|
|
22
|
-
const path = await _index.tempDir.path({
|
|
23
|
-
prefix: 'myfile',
|
|
24
|
-
suffix: '.tmp'
|
|
25
|
-
});
|
|
26
|
-
path.should.exist;
|
|
27
|
-
path.should.include(preRootDirPath);
|
|
28
|
-
path.should.include('myfile.tmp');
|
|
29
|
-
});
|
|
30
|
-
it('should be able to create a temp file', async function () {
|
|
31
|
-
let res = await _index.tempDir.open({
|
|
32
|
-
prefix: 'my-test-file',
|
|
33
|
-
suffix: '.zip'
|
|
34
|
-
});
|
|
35
|
-
res.should.exist;
|
|
36
|
-
res.path.should.exist;
|
|
37
|
-
res.path.should.include('my-test-file.zip');
|
|
38
|
-
res.fd.should.exist;
|
|
39
|
-
await _index.fs.exists(res.path).should.eventually.be.ok;
|
|
40
|
-
});
|
|
41
|
-
it('should be able to create a temp file with process.env.APPIUM_TMP_DIR', async function () {
|
|
42
|
-
const preRootDirPath = await _index.tempDir.openDir();
|
|
43
|
-
process.env.APPIUM_TMP_DIR = preRootDirPath;
|
|
44
|
-
let res = await _index.tempDir.open({
|
|
45
|
-
prefix: 'my-test-file',
|
|
46
|
-
suffix: '.zip'
|
|
47
|
-
});
|
|
48
|
-
res.should.exist;
|
|
49
|
-
res.path.should.exist;
|
|
50
|
-
res.path.should.include(preRootDirPath);
|
|
51
|
-
res.path.should.include('my-test-file.zip');
|
|
52
|
-
res.fd.should.exist;
|
|
53
|
-
await _index.fs.exists(res.path).should.eventually.be.ok;
|
|
54
|
-
});
|
|
55
|
-
it('should generate a random temp dir', async function () {
|
|
56
|
-
let res = await _index.tempDir.openDir();
|
|
57
|
-
res.should.be.a('string');
|
|
58
|
-
await _index.fs.exists(res).should.eventually.be.ok;
|
|
59
|
-
let res2 = await _index.tempDir.openDir();
|
|
60
|
-
await _index.fs.exists(res2).should.eventually.be.ok;
|
|
61
|
-
res.should.not.equal(res2);
|
|
62
|
-
});
|
|
63
|
-
it('should generate a random temp dir, but the same with process.env.APPIUM_TMP_DIR', async function () {
|
|
64
|
-
const preRootDirPath = await _index.tempDir.openDir();
|
|
65
|
-
process.env.APPIUM_TMP_DIR = preRootDirPath;
|
|
66
|
-
const res = await _index.tempDir.openDir();
|
|
67
|
-
res.should.be.a('string');
|
|
68
|
-
await _index.fs.exists(res).should.eventually.be.ok;
|
|
69
|
-
const res2 = await _index.tempDir.openDir();
|
|
70
|
-
await _index.fs.exists(res2).should.eventually.be.ok;
|
|
71
|
-
res.should.include(preRootDirPath);
|
|
72
|
-
res2.should.include(preRootDirPath);
|
|
73
|
-
res.should.not.equal(res2);
|
|
74
|
-
});
|
|
75
|
-
it('should generate one temp dir used for the life of the process', async function () {
|
|
76
|
-
let res = await _index.tempDir.staticDir();
|
|
77
|
-
res.should.be.a('string');
|
|
78
|
-
await _index.fs.exists(res).should.eventually.be.ok;
|
|
79
|
-
let res2 = await _index.tempDir.staticDir();
|
|
80
|
-
await _index.fs.exists(res2).should.eventually.be.ok;
|
|
81
|
-
res.should.equal(res2);
|
|
82
|
-
});
|
|
83
|
-
});require('source-map-support').install();
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdGVtcGRpci1zcGVjcy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImFmdGVyRWFjaCIsInByb2Nlc3MiLCJlbnYiLCJBUFBJVU1fVE1QX0RJUiIsIml0IiwicGF0aCIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJzaG91bGQiLCJleGlzdCIsImluY2x1ZGUiLCJwcmVSb290RGlyUGF0aCIsIm9wZW5EaXIiLCJyZXMiLCJvcGVuIiwiZmQiLCJmcyIsImV4aXN0cyIsImV2ZW50dWFsbHkiLCJiZSIsIm9rIiwiYSIsInJlczIiLCJub3QiLCJlcXVhbCIsInN0YXRpY0RpciJdLCJtYXBwaW5ncyI6Ijs7OztBQUNBOztBQUdBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQVk7QUFDOUJDLEVBQUFBLFNBQVMsQ0FBQyxZQUFZO0FBRXBCLFdBQU9DLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxjQUFuQjtBQUNELEdBSFEsQ0FBVDtBQUtBQyxFQUFBQSxFQUFFLENBQUMsbUNBQUQsRUFBc0Msa0JBQWtCO0FBQ3hELFVBQU1DLElBQUksR0FBRyxNQUFNQyxlQUFRRCxJQUFSLENBQWE7QUFBQ0UsTUFBQUEsTUFBTSxFQUFFLFFBQVQ7QUFBbUJDLE1BQUFBLE1BQU0sRUFBRTtBQUEzQixLQUFiLENBQW5CO0FBQ0FILElBQUFBLElBQUksQ0FBQ0ksTUFBTCxDQUFZQyxLQUFaO0FBQ0FMLElBQUFBLElBQUksQ0FBQ0ksTUFBTCxDQUFZRSxPQUFaLENBQW9CLFlBQXBCO0FBQ0QsR0FKQyxDQUFGO0FBTUFQLEVBQUFBLEVBQUUsQ0FBQyxtRUFBRCxFQUFzRSxrQkFBa0I7QUFDeEYsVUFBTVEsY0FBYyxHQUFHLE1BQU1OLGVBQVFPLE9BQVIsRUFBN0I7QUFDQVosSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVlDLGNBQVosR0FBNkJTLGNBQTdCO0FBRUEsVUFBTVAsSUFBSSxHQUFHLE1BQU1DLGVBQVFELElBQVIsQ0FBYTtBQUFDRSxNQUFBQSxNQUFNLEVBQUUsUUFB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QWhCLENBQXVCVSxVQUF2QixDQUFrQ0MsRUFBbEMsQ0FBcUNDLEVBQTNDO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ0wsTUFBSixDQUFXZ0IsS0FBWCxDQUFpQkYsSUFBakI7QUFDRCxHQVBDLENBQUY7QUFRRCxDQTNFTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyB0ZW1wRGlyLCBmcyB9IGZyb20gJy4uL2xpYi9pbmRleC5qcyc7XG5cblxuZGVzY3JpYmUoJ3RlbXBkaXInLCBmdW5jdGlvbiAoKSB7XG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgLy8gc2V0IHRoZSBwcm9jZXNzIGVudiBhcyB1bmRlZmllbmRcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuQVBQSVVNX1RNUF9ESVI7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBnZW5lcmF0ZSBhIHBhdGgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnbXlmaWxlJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgICBwYXRoLnNob3VsZC5leGlzdDtcbiAgICBwYXRoLnNob3VsZC5pbmNsdWRlKCdteWZpbGUudG1wJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBnZW5lcmF0ZSBhIHBhdGggd2l0aCBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwcmVSb290RGlyUGF0aCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSID0gcHJlUm9vdERpclBhdGg7XG5cbiAgICBjb25zdCBwYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtwcmVmaXg6ICdteWZpbGUnLCBzdWZmaXg6ICcudG1wJ30pO1xuICAgIHBhdGguc2hvdWxkLmV4aXN0O1xuICAgIHBhdGguc2hvdWxkLmluY2x1ZGUocHJlUm9vdERpclBhdGgpO1xuICAgIHBhdGguc2hvdWxkLmluY2x1ZGUoJ215ZmlsZS50bXAnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhIHRlbXAgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgcmVzID0gYXdhaXQgdGVtcERpci5vcGVuKHtwcmVmaXg6ICdteS10ZXN0LWZpbGUnLCBzdWZmaXg6ICcuemlwJ30pO1xuICAgIHJlcy5zaG91bGQuZXhpc3Q7XG4gICAgcmVzLnBhdGguc2hvdWxkLmV4aXN0O1xuICAgIHJlcy5wYXRoLnNob3VsZC5pbmNsdWRlKCdteS10ZXN0LWZpbGUuemlwJyk7XG4gICAgcmVzLmZkLnNob3VsZC5leGlzdDtcbiAgICBhd2FpdCBmcy5leGlzdHMocmVzLnBhdGgpLnNob3VsZC5ldmVudHVhbGx5LmJlLm9rO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIGEgdGVtcCBmaWxlIHdpdGggcHJvY2Vzcy5lbnYuQVBQSVVNX1RNUF9ESVInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcHJlUm9vdERpclBhdGggPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICBwcm9jZXNzLmVudi5BUFBJVU1fVE1QX0RJUiA9IHByZVJvb3REaXJQYXRoO1xuXG4gICAgbGV0IHJlcyA9IGF3YWl0IHRlbXBEaXIub3Blbih7cHJlZml4OiAnbXktdGVzdC1maWxlJywgc3VmZml4OiAnLnppcCd9KTtcbiAgICByZXMuc2hvdWxkLmV4aXN0O1xuICAgIHJlcy5wYXRoLnNob3VsZC5leGlzdDtcbiAgICByZXMucGF0aC5zaG91bGQuaW5jbHVkZShwcmVSb290RGlyUGF0aCk7XG4gICAgcmVzLnBhdGguc2hvdWxkLmluY2x1ZGUoJ215LXRlc3QtZmlsZS56aXAnKTtcbiAgICByZXMuZmQuc2hvdWxkLmV4aXN0O1xuICAgIGF3YWl0IGZzLmV4aXN0cyhyZXMucGF0aCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUub2s7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSByYW5kb20gdGVtcCBkaXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IHJlcyA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgIHJlcy5zaG91bGQuYmUuYSgnc3RyaW5nJyk7XG4gICAgYXdhaXQgZnMuZXhpc3RzKHJlcykuc2hvdWxkLmV2ZW50dWFsbHkuYmUub2s7XG4gICAgbGV0IHJlczIgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICBhd2FpdCBmcy5leGlzdHMocmVzMikuc2hvdWxkLmV2ZW50dWFsbHkuYmUub2s7XG4gICAgcmVzLnNob3VsZC5ub3QuZXF1YWwocmVzMik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSByYW5kb20gdGVtcCBkaXIsIGJ1dCB0aGUgc2FtZSB3aXRoIHByb2Nlc3MuZW52LkFQUElVTV9UTVBfRElSJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHByZVJvb3REaXJQYXRoID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgcHJvY2Vzcy5lbnYuQVBQSVVNX1RNUF9ESVIgPSBwcmVSb290RGlyUGF0aDtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgIHJlcy5zaG91bGQuYmUuYSgnc3RyaW5nJyk7XG4gICAgYXdhaXQgZnMuZXhpc3RzKHJlcykuc2hvdWxkLmV2ZW50dWFsbHkuYmUub2s7XG4gICAgY29uc3QgcmVzMiA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgIGF3YWl0IGZzLmV4aXN0cyhyZXMyKS5zaG91bGQuZXZlbnR1YWxseS5iZS5vaztcbiAgICByZXMuc2hvdWxkLmluY2x1ZGUocHJlUm9vdERpclBhdGgpO1xuICAgIHJlczIuc2hvdWxkLmluY2x1ZGUocHJlUm9vdERpclBhdGgpO1xuICAgIHJlcy5zaG91bGQubm90LmVxdWFsKHJlczIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIG9uZSB0ZW1wIGRpciB1c2VkIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2VzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgcmVzID0gYXdhaXQgdGVtcERpci5zdGF0aWNEaXIoKTtcbiAgICByZXMuc2hvdWxkLmJlLmEoJ3N0cmluZycpO1xuICAgIGF3YWl0IGZzLmV4aXN0cyhyZXMpLnNob3VsZC5ldmVudHVhbGx5LmJlLm9rO1xuICAgIGxldCByZXMyID0gYXdhaXQgdGVtcERpci5zdGF0aWNEaXIoKTtcbiAgICBhd2FpdCBmcy5leGlzdHMocmVzMikuc2hvdWxkLmV2ZW50dWFsbHkuYmUub2s7XG4gICAgcmVzLnNob3VsZC5lcXVhbChyZXMyKTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC90ZW1wZGlyLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
|
-
|
|
9
|
-
var _sinon = _interopRequireDefault(require("sinon"));
|
|
10
|
-
|
|
11
|
-
var _lib = require("../lib");
|
|
12
|
-
|
|
13
|
-
const expect = chai.expect;
|
|
14
|
-
describe('timing', function () {
|
|
15
|
-
let processMock;
|
|
16
|
-
afterEach(function () {
|
|
17
|
-
processMock.verify();
|
|
18
|
-
});
|
|
19
|
-
describe('no bigint', function () {
|
|
20
|
-
const bigintFn = process.hrtime.bigint;
|
|
21
|
-
before(function () {
|
|
22
|
-
if (_lodash.default.isFunction(bigintFn)) {
|
|
23
|
-
delete process.hrtime.bigint;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
beforeEach(function () {
|
|
27
|
-
processMock = _sinon.default.mock(process);
|
|
28
|
-
});
|
|
29
|
-
after(function () {
|
|
30
|
-
if (_lodash.default.isFunction(bigintFn)) {
|
|
31
|
-
process.hrtime.bigint = bigintFn;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
it('should get a start time as array', function () {
|
|
35
|
-
const timer = new _lib.timing.Timer().start();
|
|
36
|
-
_lodash.default.isArray(timer.startTime).should.be.true;
|
|
37
|
-
});
|
|
38
|
-
it('should get a duration', function () {
|
|
39
|
-
const timer = new _lib.timing.Timer().start();
|
|
40
|
-
const duration = timer.getDuration();
|
|
41
|
-
_lodash.default.isNumber(duration.nanos).should.be.true;
|
|
42
|
-
});
|
|
43
|
-
it('should get correct seconds', function () {
|
|
44
|
-
processMock.expects('hrtime').twice().onFirstCall().returns([12, 12345]).onSecondCall().returns([13, 54321]);
|
|
45
|
-
const timer = new _lib.timing.Timer().start();
|
|
46
|
-
const duration = timer.getDuration();
|
|
47
|
-
duration.asSeconds.should.eql(13.000054321);
|
|
48
|
-
});
|
|
49
|
-
it('should get correct milliseconds', function () {
|
|
50
|
-
processMock.expects('hrtime').twice().onFirstCall().returns([12, 12345]).onSecondCall().returns([13, 54321]);
|
|
51
|
-
const timer = new _lib.timing.Timer().start();
|
|
52
|
-
const duration = timer.getDuration();
|
|
53
|
-
duration.asMilliSeconds.should.eql(13000.054321);
|
|
54
|
-
});
|
|
55
|
-
it('should get correct nanoseconds', function () {
|
|
56
|
-
processMock.expects('hrtime').twice().onFirstCall().returns([12, 12345]).onSecondCall().returns([13, 54321]);
|
|
57
|
-
const timer = new _lib.timing.Timer().start();
|
|
58
|
-
const duration = timer.getDuration();
|
|
59
|
-
duration.asNanoSeconds.should.eql(13000054321);
|
|
60
|
-
});
|
|
61
|
-
it('should error if the timer was not started', function () {
|
|
62
|
-
const timer = new _lib.timing.Timer();
|
|
63
|
-
expect(() => timer.getDuration()).to.throw('Unable to get duration');
|
|
64
|
-
});
|
|
65
|
-
it('should error if start time is a number', function () {
|
|
66
|
-
const timer = new _lib.timing.Timer();
|
|
67
|
-
timer._startTime = 12345;
|
|
68
|
-
expect(() => timer.getDuration()).to.throw('Unable to get duration');
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
describe('bigint', function () {
|
|
72
|
-
beforeEach(function () {
|
|
73
|
-
if (!_lodash.default.isFunction(process.hrtime.bigint)) {
|
|
74
|
-
return this.skip();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
processMock = _sinon.default.mock(process.hrtime);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
function setupMocks(once = false) {
|
|
81
|
-
if (once) {
|
|
82
|
-
processMock.expects('bigint').once().onFirstCall().returns(BigInt(1172941153404030));
|
|
83
|
-
} else {
|
|
84
|
-
processMock.expects('bigint').twice().onFirstCall().returns(BigInt(1172941153404030)).onSecondCall().returns(BigInt(1172951164887132));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
it('should get a duration', function () {
|
|
89
|
-
setupMocks();
|
|
90
|
-
const timer = new _lib.timing.Timer().start();
|
|
91
|
-
const duration = timer.getDuration();
|
|
92
|
-
_lodash.default.isNumber(duration.nanos).should.be.true;
|
|
93
|
-
});
|
|
94
|
-
it('should get correct seconds', function () {
|
|
95
|
-
setupMocks();
|
|
96
|
-
const timer = new _lib.timing.Timer().start();
|
|
97
|
-
const duration = timer.getDuration();
|
|
98
|
-
duration.asSeconds.should.be.eql(10.011483102);
|
|
99
|
-
});
|
|
100
|
-
it('should get correct milliseconds', function () {
|
|
101
|
-
setupMocks();
|
|
102
|
-
const timer = new _lib.timing.Timer().start();
|
|
103
|
-
const duration = timer.getDuration();
|
|
104
|
-
duration.asMilliSeconds.should.be.eql(10011.483102);
|
|
105
|
-
});
|
|
106
|
-
it('should get correct nanoseconds', function () {
|
|
107
|
-
setupMocks();
|
|
108
|
-
const timer = new _lib.timing.Timer().start();
|
|
109
|
-
const duration = timer.getDuration();
|
|
110
|
-
duration.asNanoSeconds.should.be.eql(10011483102);
|
|
111
|
-
});
|
|
112
|
-
it('should error if the timer was not started', function () {
|
|
113
|
-
const timer = new _lib.timing.Timer();
|
|
114
|
-
expect(() => timer.getDuration()).to.throw('Unable to get duration');
|
|
115
|
-
});
|
|
116
|
-
it('should error if passing in a non-bigint', function () {
|
|
117
|
-
const timer = new _lib.timing.Timer();
|
|
118
|
-
timer._startTime = 12345;
|
|
119
|
-
expect(() => timer.getDuration()).to.throw('Unable to get duration');
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
});require('source-map-support').install();
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdGltaW5nLXNwZWNzLmpzIl0sIm5hbWVzIjpbImV4cGVjdCIsImNoYWkiLCJkZXNjcmliZSIsInByb2Nlc3NNb2NrIiwiYWZ0ZXJFYWNoIiwidmVyaWZ5IiwiYmlnaW50Rm4iLCJwcm9jZXNzIiwiaHJ0aW1lIiwiYmlnaW50IiwiYmVmb3JlIiwiXyIsImlzRnVuY3Rpb24iLCJiZWZvcmVFYWNoIiwic2lub24iLCJtb2NrIiwiYWZ0ZXIiLCJpdCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsImlzQXJyYXkiLCJzdGFydFRpbWUiLCJzaG91bGQiLCJiZSIsInRydWUiLCJkdXJhdGlvbiIsImdldER1cmF0aW9uIiwiaXNOdW1iZXIiLCJuYW5vcyIsImV4cGVjdHMiLCJ0d2ljZSIsIm9uRmlyc3RDYWxsIiwicmV0dXJucyIsIm9uU2Vjb25kQ2FsbCIsImFzU2Vjb25kcyIsImVxbCIsImFzTWlsbGlTZWNvbmRzIiwiYXNOYW5vU2Vjb25kcyIsInRvIiwidGhyb3ciLCJfc3RhcnRUaW1lIiwic2tpcCIsInNldHVwTW9ja3MiLCJvbmNlIiwiQmlnSW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxNQUFNLEdBQUdDLElBQUksQ0FBQ0QsTUFBcEI7QUFFQUUsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFZO0FBQzdCLE1BQUlDLFdBQUo7QUFDQUMsRUFBQUEsU0FBUyxDQUFDLFlBQVk7QUFDcEJELElBQUFBLFdBQVcsQ0FBQ0UsTUFBWjtBQUNELEdBRlEsQ0FBVDtBQUlBSCxFQUFBQSxRQUFRLENBQUMsV0FBRCxFQUFjLFlBQVk7QUFDaEMsVUFBTUksUUFBUSxHQUFHQyxPQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBaEM7QUFDQUMsSUFBQUEsTUFBTSxDQUFDLFlBQVk7QUFFakIsVUFBSUMsZ0JBQUVDLFVBQUYsQ0FBYU4sUUFBYixDQUFKLEVBQTRCO0FBQzFCLGVBQU9DLE9BQU8sQ0FBQ0MsTUFBUixD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LENBQUNXLGNBQVQsQ0FBd0JkLE1BQXhCLENBQStCQyxFQUEvQixDQUFrQ1ksR0FBbEMsQ0FBc0MsWUFBdEM7QUFDRCxLQU5DLENBQUY7QUFPQXBCLElBQUFBLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxZQUFZO0FBQy9DMkIsTUFBQUEsVUFBVTtBQUVWLFlBQU0xQixLQUFLLEdBQUcsSUFBSUMsWUFBT0MsS0FBWCxHQUFtQkMsS0FBbkIsRUFBZDtBQUNBLFlBQU1NLFFBQVEsR0FBR1QsS0FBSyxDQUFDVSxXQUFOLEVBQWpCO0FBQ0FELE1BQUFBLFFBQVEsQ0FBQ1ksYUFBVCxDQUF1QmYsTUFBdkIsQ0FBOEJDLEVBQTlCLENBQWlDWSxHQUFqQyxDQUFxQyxXQUFyQztBQUNELEtBTkMsQ0FBRjtBQU9BcEIsSUFBQUEsRUFBRSxDQUFDLDJDQUFELEVBQThDLFlBQVk7QUFDMUQsWUFBTUMsS0FBSyxHQUFHLElBQUlDLFlBQU9DLEtBQVgsRUFBZDtBQUNBcEIsTUFBQUEsTUFBTSxDQUFDLE1BQU1rQixLQUFLLENBQUNVLFdBQU4sRUFBUCxDQUFOLENBQ0dZLEVBREgsQ0FDTUMsS0FETixDQUNZLHdCQURaO0FBRUQsS0FKQyxDQUFGO0FBS0F4QixJQUFBQSxFQUFFLENBQUMseUNBQUQsRUFBNEMsWUFBWTtBQUN4RCxZQUFNQyxLQUFLLEdBQUcsSUFBSUMsWUFBT0MsS0FBWCxFQUFkO0FBQ0FGLE1BQUFBLEtBQUssQ0FBQ3dCLFVBQU4sR0FBbUIsS0FBbkI7QUFDQTFDLE1BQUFBLE1BQU0sQ0FBQyxNQUFNa0IsS0FBSyxDQUFDVSxXQUFOLEVBQVAsQ0FBTixDQUNHWSxFQURILENBQ01DLEtBRE4sQ0FDWSx3QkFEWjtBQUVELEtBTEMsQ0FBRjtBQU1ELEdBOURPLENBQVI7QUErREQsQ0FySU8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgdGltaW5nIH0gZnJvbSAnLi4vbGliJztcblxuXG5jb25zdCBleHBlY3QgPSBjaGFpLmV4cGVjdDtcblxuZGVzY3JpYmUoJ3RpbWluZycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHByb2Nlc3NNb2NrO1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHByb2Nlc3NNb2NrLnZlcmlmeSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm8gYmlnaW50JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJpZ2ludEZuID0gcHJvY2Vzcy5ocnRpbWUuYmlnaW50O1xuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBpZiB0aGUgc3lzdGVtIGhhcyBCaWdJbnQgc3VwcG9ydCwgcmVtb3ZlIGl0XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKGJpZ2ludEZuKSkge1xuICAgICAgICBkZWxldGUgcHJvY2Vzcy5ocnRpbWUuYmlnaW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc01vY2sgPSBzaW5vbi5tb2NrKHByb2Nlc3MpO1xuICAgIH0pO1xuICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24oYmlnaW50Rm4pKSB7XG4gICAgICAgIHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCA9IGJpZ2ludEZuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IGEgc3RhcnQgdGltZSBhcyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgICBfLmlzQXJyYXkodGltZXIuc3RhcnRUaW1lKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCBhIGR1cmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGltZXIuZ2V0RHVyYXRpb24oKTtcbiAgICAgIF8uaXNOdW1iZXIoZHVyYXRpb24ubmFub3MpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IGNvcnJlY3Qgc2Vjb25kcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3NNb2NrLmV4cGVjdHMoJ2hydGltZScpLnR3aWNlKClcbiAgICAgICAgLm9uRmlyc3RDYWxsKCkucmV0dXJucyhbMTIsIDEyMzQ1XSlcbiAgICAgICAgLm9uU2Vjb25kQ2FsbCgpLnJldHVybnMoWzEzLCA1NDMyMV0pO1xuXG4gICAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aW1lci5nZXREdXJhdGlvbigpO1xuICAgICAgZHVyYXRpb24uYXNTZWNvbmRzLnNob3VsZC5lcWwoMTMuMDAwMDU0MzIxKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCBjb3JyZWN0IG1pbGxpc2Vjb25kcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3NNb2NrLmV4cGVjdHMoJ2hydGltZScpLnR3aWNlKClcbiAgICAgICAgLm9uRmlyc3RDYWxsKCkucmV0dXJucyhbMTIsIDEyMzQ1XSlcbiAgICAgICAgLm9uU2Vjb25kQ2FsbCgpLnJldHVybnMoWzEzLCA1NDMyMV0pO1xuXG4gICAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aW1lci5nZXREdXJhdGlvbigpO1xuICAgICAgZHVyYXRpb24uYXNNaWxsaVNlY29uZHMuc2hvdWxkLmVxbCgxMzAwMC4wNTQzMjEpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IGNvcnJlY3QgbmFub3NlY29uZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzTW9jay5leHBlY3RzKCdocnRpbWUnKS50d2ljZSgpXG4gICAgICAgIC5vbkZpcnN0Q2FsbCgpLnJldHVybnMoWzEyLCAxMjM0NV0pXG4gICAgICAgIC5vblNlY29uZENhbGwoKS5yZXR1cm5zKFsxMywgNTQzMjFdKTtcblxuICAgICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGltZXIuZ2V0RHVyYXRpb24oKTtcbiAgICAgIGR1cmF0aW9uLmFzTmFub1NlY29uZHMuc2hvdWxkLmVxbCgxMzAwMDA1NDMyMSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBlcnJvciBpZiB0aGUgdGltZXIgd2FzIG5vdCBzdGFydGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCk7XG4gICAgICBleHBlY3QoKCkgPT4gdGltZXIuZ2V0RHVyYXRpb24oKSlcbiAgICAgICAgLnRvLnRocm93KCdVbmFibGUgdG8gZ2V0IGR1cmF0aW9uJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBlcnJvciBpZiBzdGFydCB0aW1lIGlzIGEgbnVtYmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCk7XG4gICAgICB0aW1lci5fc3RhcnRUaW1lID0gMTIzNDU7XG4gICAgICBleHBlY3QoKCkgPT4gdGltZXIuZ2V0RHVyYXRpb24oKSlcbiAgICAgICAgLnRvLnRocm93KCdVbmFibGUgdG8gZ2V0IGR1cmF0aW9uJyk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnYmlnaW50JywgZnVuY3Rpb24gKCkge1xuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgLy8gdGhlIG5vbi1tb2NrZWQgdGVzdCBjYW5ub3QgcnVuIGlmIEJpZ0ludCBkb2VzIG5vdCBleGlzdCxcbiAgICAgIC8vIGFuZCBpdCBjYW5ub3QgYmUgbW9ja2VkLiBMdWNraWx5IHN1cHBvcnQgd2FzIGFkZGVkIGluIE5vZGUgMTAuNC4wLFxuICAgICAgLy8gc28gaXQgc2hvdWxkIG5vdCBiZSBhIGNhc2Ugd2hlcmUgd2UgYXJlIHRlc3Rpbmcgd2l0aG91dCB0aGlzLFxuICAgICAgLy8gdGhvdWdoIGl0IHN0aWxsIGNhbiBiZSBhIHRlc3QgdGhhdCBBcHBpdW0gaXMgX3VzZWRfIHdpdGhvdXQgaXQuXG4gICAgICBpZiAoIV8uaXNGdW5jdGlvbihwcm9jZXNzLmhydGltZS5iaWdpbnQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNraXAoKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3NNb2NrID0gc2lub24ubW9jayhwcm9jZXNzLmhydGltZSk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBzZXR1cE1vY2tzIChvbmNlID0gZmFsc2UpIHtcbiAgICAgIGlmIChvbmNlKSB7XG4gICAgICAgIHByb2Nlc3NNb2NrLmV4cGVjdHMoJ2JpZ2ludCcpLm9uY2UoKVxuICAgICAgICAgIC5vbkZpcnN0Q2FsbCgpLnJldHVybnMoQmlnSW50KDExNzI5NDExNTM0MDQwMzApKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3NNb2NrLmV4cGVjdHMoJ2JpZ2ludCcpLnR3aWNlKClcbiAgICAgICAgICAub25GaXJzdENhbGwoKS5yZXR1cm5zKEJpZ0ludCgxMTcyOTQxMTUzNDA0MDMwKSlcbiAgICAgICAgICAub25TZWNvbmRDYWxsKCkucmV0dXJucyhCaWdJbnQoMTE3Mjk1MTE2NDg4NzEzMikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGl0KCdzaG91bGQgZ2V0IGEgZHVyYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXR1cE1vY2tzKCk7XG5cbiAgICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRpbWVyLmdldER1cmF0aW9uKCk7XG4gICAgICBfLmlzTnVtYmVyKGR1cmF0aW9uLm5hbm9zKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCBjb3JyZWN0IHNlY29uZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXR1cE1vY2tzKCk7XG5cbiAgICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRpbWVyLmdldER1cmF0aW9uKCk7XG4gICAgICBkdXJhdGlvbi5hc1NlY29uZHMuc2hvdWxkLmJlLmVxbCgxMC4wMTE0ODMxMDIpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IGNvcnJlY3QgbWlsbGlzZWNvbmRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2V0dXBNb2NrcygpO1xuXG4gICAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aW1lci5nZXREdXJhdGlvbigpO1xuICAgICAgZHVyYXRpb24uYXNNaWxsaVNlY29uZHMuc2hvdWxkLmJlLmVxbCgxMDAxMS40ODMxMDIpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IGNvcnJlY3QgbmFub3NlY29uZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXR1cE1vY2tzKCk7XG5cbiAgICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRpbWVyLmdldER1cmF0aW9uKCk7XG4gICAgICBkdXJhdGlvbi5hc05hbm9TZWNvbmRzLnNob3VsZC5iZS5lcWwoMTAwMTE0ODMxMDIpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZXJyb3IgaWYgdGhlIHRpbWVyIHdhcyBub3Qgc3RhcnRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpO1xuICAgICAgZXhwZWN0KCgpID0+IHRpbWVyLmdldER1cmF0aW9uKCkpXG4gICAgICAgIC50by50aHJvdygnVW5hYmxlIHRvIGdldCBkdXJhdGlvbicpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZXJyb3IgaWYgcGFzc2luZyBpbiBhIG5vbi1iaWdpbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKTtcbiAgICAgIHRpbWVyLl9zdGFydFRpbWUgPSAxMjM0NTtcbiAgICAgIGV4cGVjdCgoKSA9PiB0aW1lci5nZXREdXJhdGlvbigpKVxuICAgICAgICAudG8udGhyb3coJ1VuYWJsZSB0byBnZXQgZHVyYXRpb24nKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC90aW1pbmctc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
8
|
-
|
|
9
|
-
var _path = _interopRequireDefault(require("path"));
|
|
10
|
-
|
|
11
|
-
var util = _interopRequireWildcard(require("../lib/util"));
|
|
12
|
-
|
|
13
|
-
var _index = require("../lib/index");
|
|
14
|
-
|
|
15
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
-
|
|
17
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
|
-
|
|
19
|
-
describe('#util', function () {
|
|
20
|
-
let tmpRoot;
|
|
21
|
-
let tmpFile;
|
|
22
|
-
const content = 'YOLO';
|
|
23
|
-
beforeEach(async function () {
|
|
24
|
-
tmpRoot = await _index.tempDir.openDir();
|
|
25
|
-
tmpFile = _path.default.resolve(tmpRoot, 'example.txt');
|
|
26
|
-
await _index.fs.writeFile(tmpFile, content, 'utf8');
|
|
27
|
-
});
|
|
28
|
-
afterEach(async function () {
|
|
29
|
-
if (tmpRoot) {
|
|
30
|
-
await _index.fs.rimraf(tmpRoot);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
tmpRoot = null;
|
|
34
|
-
});
|
|
35
|
-
describe('toInMemoryBase64()', function () {
|
|
36
|
-
it('should convert a file to base64 encoding', async function () {
|
|
37
|
-
const data = await util.toInMemoryBase64(tmpFile);
|
|
38
|
-
const fileContent = await _index.fs.readFile(tmpFile);
|
|
39
|
-
data.toString().should.eql(fileContent.toString('base64'));
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
describe('getLockFileGuard()', function () {
|
|
43
|
-
let tmpRoot;
|
|
44
|
-
let lockFile;
|
|
45
|
-
let testFile;
|
|
46
|
-
|
|
47
|
-
async function guardedBehavior(text, msBeforeActing) {
|
|
48
|
-
await _bluebird.default.delay(msBeforeActing);
|
|
49
|
-
await _index.fs.appendFile(testFile, text, 'utf8');
|
|
50
|
-
return text;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async function testFileContents() {
|
|
54
|
-
return (await _index.fs.readFile(testFile)).toString('utf8');
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
beforeEach(async function () {
|
|
58
|
-
tmpRoot = await _index.tempDir.openDir();
|
|
59
|
-
lockFile = _path.default.resolve(tmpRoot, 'test.lock');
|
|
60
|
-
testFile = _path.default.resolve(tmpRoot, 'test');
|
|
61
|
-
await _index.fs.writeFile(testFile, 'a', 'utf8');
|
|
62
|
-
});
|
|
63
|
-
afterEach(async function () {
|
|
64
|
-
try {
|
|
65
|
-
await _bluebird.default.all([lockFile, testFile].map(p => _index.fs.unlink(p)));
|
|
66
|
-
} catch (ign) {}
|
|
67
|
-
});
|
|
68
|
-
it('should lock a file during the given behavior', async function () {
|
|
69
|
-
const guard = util.getLockFileGuard(lockFile);
|
|
70
|
-
await guard.check().should.eventually.be.false;
|
|
71
|
-
const guardPromise = guard(async () => await guardedBehavior('b', 500));
|
|
72
|
-
await _bluebird.default.delay(200);
|
|
73
|
-
await guard.check().should.eventually.be.true;
|
|
74
|
-
await guardPromise;
|
|
75
|
-
await guard.check().should.eventually.be.false;
|
|
76
|
-
await testFileContents().should.eventually.eql('ab');
|
|
77
|
-
});
|
|
78
|
-
it('should recover a broken lock file', async function () {
|
|
79
|
-
await _index.fs.writeFile(lockFile, 'dummy', 'utf8');
|
|
80
|
-
const guard = util.getLockFileGuard(lockFile, {
|
|
81
|
-
timeout: 3,
|
|
82
|
-
tryRecovery: true
|
|
83
|
-
});
|
|
84
|
-
await guard(async () => await guardedBehavior('b', 500));
|
|
85
|
-
await guard.check().should.eventually.be.false;
|
|
86
|
-
await testFileContents().should.eventually.eql('ab');
|
|
87
|
-
});
|
|
88
|
-
it('should block other behavior until the lock is released', async function () {
|
|
89
|
-
await testFileContents().should.eventually.eql('a');
|
|
90
|
-
const unguardedPromise1 = guardedBehavior('b', 500);
|
|
91
|
-
const unguardedPromise2 = guardedBehavior('c', 100);
|
|
92
|
-
await unguardedPromise1;
|
|
93
|
-
await unguardedPromise2;
|
|
94
|
-
await testFileContents().should.eventually.eql('acb');
|
|
95
|
-
const guard = util.getLockFileGuard(lockFile);
|
|
96
|
-
const guardPromise1 = guard(async () => await guardedBehavior('b', 500));
|
|
97
|
-
const guardPromise2 = guard(async () => await guardedBehavior('c', 100));
|
|
98
|
-
await guardPromise1;
|
|
99
|
-
await guardPromise2;
|
|
100
|
-
await testFileContents().should.eventually.eql('acbbc');
|
|
101
|
-
});
|
|
102
|
-
it('should return the result of the guarded behavior', async function () {
|
|
103
|
-
const guard = util.getLockFileGuard(lockFile);
|
|
104
|
-
const guardPromise1 = guard(async () => await guardedBehavior('hello', 500));
|
|
105
|
-
const guardPromise2 = guard(async () => await guardedBehavior('world', 100));
|
|
106
|
-
const ret1 = await guardPromise1;
|
|
107
|
-
const ret2 = await guardPromise2;
|
|
108
|
-
ret1.should.eql('hello');
|
|
109
|
-
ret2.should.eql('world');
|
|
110
|
-
});
|
|
111
|
-
it('should time out if the lock is not released', async function () {
|
|
112
|
-
this.timeout(5000);
|
|
113
|
-
const guard = util.getLockFileGuard(lockFile, {
|
|
114
|
-
timeout: 0.5
|
|
115
|
-
});
|
|
116
|
-
const p1 = guard(async () => await guardedBehavior('hello', 1200));
|
|
117
|
-
const p2 = guard(async () => await guardedBehavior('world', 10));
|
|
118
|
-
await p2.should.eventually.be.rejectedWith(/not acquire lock/);
|
|
119
|
-
await p1.should.eventually.eql('hello');
|
|
120
|
-
});
|
|
121
|
-
it('should still release lock if guarded behavior fails', async function () {
|
|
122
|
-
this.timeout(5000);
|
|
123
|
-
const guard = util.getLockFileGuard(lockFile);
|
|
124
|
-
const p1 = guard(async () => {
|
|
125
|
-
await _bluebird.default.delay(500);
|
|
126
|
-
throw new Error('bad');
|
|
127
|
-
});
|
|
128
|
-
const p2 = guard(async () => await guardedBehavior('world', 100));
|
|
129
|
-
await p1.should.eventually.be.rejectedWith(/bad/);
|
|
130
|
-
await p2.should.eventually.eql('world');
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});require('source-map-support').install();
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdXRpbC1lMmUtc3BlY3MuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJ0bXBSb290IiwidG1wRmlsZSIsImNvbnRlbnQiLCJiZWZvcmVFYWNoIiwidGVtcERpciIsIm9wZW5EaXIiLCJwYXRoIiwicmVzb2x2ZSIsImZzIiwid3JpdGVGaWxlIiwiYWZ0ZXJFYWNoIiwicmltcmFmIiwiaXQiLCJkYXRhIiwidXRpbCIsInRvSW5NZW1vcnlCYXNlNjQiLCJmaWxlQ29udGVudCIsInJlYWRGaWxlIiwidG9TdHJpbmciLCJzaG91bGQiLCJlcWwiLCJsb2NrRmlsZSIsInRlc3RGaWxlIiwiZ3VhcmRlZEJlaGF2aW9yIiwidGV4dCIsIm1zQmVmb3JlQWN0aW5nIiwiQiIsImRlbGF5IiwiYXBwZW5kRmlsZSIsInRlc3RGaWxlQ29udGVudHMiLCJhbGwiLCJtYXAiLCJwIiwidW5saW5rIiwiaWduIiwiZ3VhcmQiLCJnZXRMb2NrRmlsZUd1YXJkIiwiY2hlY2siLCJldmVudHVhbGx5IiwiYmUiLCJmYWxzZSIsImd1YXJkUHJvbWlzZSIsInRydWUiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJ1bmd1YXJkZWRQcm9taXNlMSIsInVuZ3VhcmRlZFByb21pc2UyIiwiZ3VhcmRQcm9taXNlMSIsImd1YXJkUHJvbWlzZTIiLCJyZXQxIiwicmV0MiIsInAxIiwicDIiLCJyZWplY3RlZFdpdGgiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUdBQSxRQUFRLENBQUMsT0FBRCxFQUFVLFlBQVk7QUFDNUIsTUFBSUMsT0FBSjtBQUNBLE1BQUlDLE9BQUo7QUFDQSxRQUFNQyxPQUFPLEdBQUcsTUFBaEI7QUFFQUMsRUFBQUEsVUFBVSxDQUFDLGtCQUFrQjtBQUMzQkgsSUFBQUEsT0FBTyxHQUFHLE1BQU1JLGVBQVFDLE9BQVIsRUFBaEI7QUFDQUosSUFBQUEsT0FBTyxHQUFHSyxjQUFLQyxPQUFMLENBQWFQLE9BQWIs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Q0FBd0JjLFlBQXhCLENBQXFDLEtBQXJDLENBQU47QUFDQSxZQUFNRCxFQUFFLENBQUNqQyxNQUFILENBQVVtQixVQUFWLENBQXFCbEIsR0FBckIsQ0FBeUIsT0FBekIsQ0FBTjtBQUNELEtBVkMsQ0FBRjtBQVdELEdBbEdPLENBQVI7QUFvR0QsQ0E5SE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi9saWIvdXRpbCc7XG5pbXBvcnQgeyB0ZW1wRGlyLCBmcyB9IGZyb20gJy4uL2xpYi9pbmRleCc7XG5cblxuZGVzY3JpYmUoJyN1dGlsJywgZnVuY3Rpb24gKCkge1xuICBsZXQgdG1wUm9vdDtcbiAgbGV0IHRtcEZpbGU7XG4gIGNvbnN0IGNvbnRlbnQgPSAnWU9MTyc7XG5cbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgIHRtcEZpbGUgPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgJ2V4YW1wbGUudHh0Jyk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRtcEZpbGUsIGNvbnRlbnQsICd1dGY4Jyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRtcFJvb3QpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gICAgdG1wUm9vdCA9IG51bGw7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0b0luTWVtb3J5QmFzZTY0KCknLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGEgZmlsZSB0byBiYXNlNjQgZW5jb2RpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KHRtcEZpbGUpO1xuICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZSh0bXBGaWxlKTtcbiAgICAgIGRhdGEudG9TdHJpbmcoKS5zaG91bGQuZXFsKGZpbGVDb250ZW50LnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRMb2NrRmlsZUd1YXJkKCknLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IHRtcFJvb3Q7XG4gICAgbGV0IGxvY2tGaWxlO1xuICAgIGxldCB0ZXN0RmlsZTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGd1YXJkZWRCZWhhdmlvciAodGV4dCwgbXNCZWZvcmVBY3RpbmcpIHtcbiAgICAgIGF3YWl0IEIuZGVsYXkobXNCZWZvcmVBY3RpbmcpO1xuICAgICAgYXdhaXQgZnMuYXBwZW5kRmlsZSh0ZXN0RmlsZSwgdGV4dCwgJ3V0ZjgnKTtcbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHRlc3RGaWxlQ29udGVudHMgKCkge1xuICAgICAgcmV0dXJuIChhd2FpdCBmcy5yZWFkRmlsZSh0ZXN0RmlsZSkpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgfVxuXG4gICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICBsb2NrRmlsZSA9IHBhdGgucmVzb2x2ZSh0bXBSb290LCAndGVzdC5sb2NrJyk7XG4gICAgICB0ZXN0RmlsZSA9IHBhdGgucmVzb2x2ZSh0bXBSb290LCAndGVzdCcpO1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRlc3RGaWxlLCAnYScsICd1dGY4Jyk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgQi5hbGwoW2xvY2tGaWxlLCB0ZXN0RmlsZV0ubWFwKChwKSA9PiBmcy51bmxpbmsocCkpKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbG9jayBhIGZpbGUgZHVyaW5nIHRoZSBnaXZlbiBiZWhhdmlvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGd1YXJkID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKGxvY2tGaWxlKTtcbiAgICAgIGF3YWl0IGd1YXJkLmNoZWNrKCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUuZmFsc2U7XG4gICAgICBjb25zdCBndWFyZFByb21pc2UgPSBndWFyZChhc3luYyAoKSA9PiBhd2FpdCBndWFyZGVkQmVoYXZpb3IoJ2InLCA1MDApKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoMjAwKTtcbiAgICAgIGF3YWl0IGd1YXJkLmNoZWNrKCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUudHJ1ZTtcbiAgICAgIGF3YWl0IGd1YXJkUHJvbWlzZTtcbiAgICAgIGF3YWl0IGd1YXJkLmNoZWNrKCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUuZmFsc2U7XG4gICAgICBhd2FpdCB0ZXN0RmlsZUNvbnRlbnRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZXFsKCdhYicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgYnJva2VuIGxvY2sgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShsb2NrRmlsZSwgJ2R1bW15JywgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IGd1YXJkID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKGxvY2tGaWxlLCB7XG4gICAgICAgIHRpbWVvdXQ6IDMsXG4gICAgICAgIHRyeVJlY292ZXJ5OiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBndWFyZChhc3luYyAoKSA9PiBhd2FpdCBndWFyZGVkQmVoYXZpb3IoJ2InLCA1MDApKTtcbiAgICAgIGF3YWl0IGd1YXJkLmNoZWNrKCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUuZmFsc2U7XG4gICAgICBhd2FpdCB0ZXN0RmlsZUNvbnRlbnRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZXFsKCdhYicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBibG9jayBvdGhlciBiZWhhdmlvciB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGZpcnN0IHByb3ZlIHRoYXQgd2l0aG91dCBhIGxvY2ssIHdlIGdldCByYWNlc1xuICAgICAgYXdhaXQgdGVzdEZpbGVDb250ZW50cygpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnYScpO1xuICAgICAgY29uc3QgdW5ndWFyZGVkUHJvbWlzZTEgPSBndWFyZGVkQmVoYXZpb3IoJ2InLCA1MDApO1xuICAgICAgY29uc3QgdW5ndWFyZGVkUHJvbWlzZTIgPSBndWFyZGVkQmVoYXZpb3IoJ2MnLCAxMDApO1xuICAgICAgYXdhaXQgdW5ndWFyZGVkUHJvbWlzZTE7XG4gICAgICBhd2FpdCB1bmd1YXJkZWRQcm9taXNlMjtcbiAgICAgIGF3YWl0IHRlc3RGaWxlQ29udGVudHMoKS5zaG91bGQuZXZlbnR1YWxseS5lcWwoJ2FjYicpO1xuXG4gICAgICAvLyBub3cgcHJvdmUgdGhhdCB3aXRoIGEgbG9jaywgd2UgZG9uJ3QgZ2V0IGFueSBpbnRlcmxvcGVyc1xuICAgICAgY29uc3QgZ3VhcmQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQobG9ja0ZpbGUpO1xuICAgICAgY29uc3QgZ3VhcmRQcm9taXNlMSA9IGd1YXJkKGFzeW5jICgpID0+IGF3YWl0IGd1YXJkZWRCZWhhdmlvcignYicsIDUwMCkpO1xuICAgICAgY29uc3QgZ3VhcmRQcm9taXNlMiA9IGd1YXJkKGFzeW5jICgpID0+IGF3YWl0IGd1YXJkZWRCZWhhdmlvcignYycsIDEwMCkpO1xuICAgICAgYXdhaXQgZ3VhcmRQcm9taXNlMTtcbiAgICAgIGF3YWl0IGd1YXJkUHJvbWlzZTI7XG4gICAgICBhd2FpdCB0ZXN0RmlsZUNvbnRlbnRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZXFsKCdhY2JiYycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZ3VhcmRlZCBiZWhhdmlvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGd1YXJkID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKGxvY2tGaWxlKTtcbiAgICAgIGNvbnN0IGd1YXJkUHJvbWlzZTEgPSBndWFyZChhc3luYyAoKSA9PiBhd2FpdCBndWFyZGVkQmVoYXZpb3IoJ2hlbGxvJywgNTAwKSk7XG4gICAgICBjb25zdCBndWFyZFByb21pc2UyID0gZ3VhcmQoYXN5bmMgKCkgPT4gYXdhaXQgZ3VhcmRlZEJlaGF2aW9yKCd3b3JsZCcsIDEwMCkpO1xuICAgICAgY29uc3QgcmV0MSA9IGF3YWl0IGd1YXJkUHJvbWlzZTE7XG4gICAgICBjb25zdCByZXQyID0gYXdhaXQgZ3VhcmRQcm9taXNlMjtcbiAgICAgIHJldDEuc2hvdWxkLmVxbCgnaGVsbG8nKTtcbiAgICAgIHJldDIuc2hvdWxkLmVxbCgnd29ybGQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGltZSBvdXQgaWYgdGhlIGxvY2sgaXMgbm90IHJlbGVhc2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy50aW1lb3V0KDUwMDApO1xuICAgICAgY29uc3QgZ3VhcmQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQobG9ja0ZpbGUsIHt0aW1lb3V0OiAwLjV9KTtcbiAgICAgIGNvbnN0IHAxID0gZ3VhcmQoYXN5bmMgKCkgPT4gYXdhaXQgZ3VhcmRlZEJlaGF2aW9yKCdoZWxsbycsIDEyMDApKTtcbiAgICAgIGNvbnN0IHAyID0gZ3VhcmQoYXN5bmMgKCkgPT4gYXdhaXQgZ3VhcmRlZEJlaGF2aW9yKCd3b3JsZCcsIDEwKSk7XG4gICAgICBhd2FpdCBwMi5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL25vdCBhY3F1aXJlIGxvY2svKTtcbiAgICAgIGF3YWl0IHAxLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnaGVsbG8nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3RpbGwgcmVsZWFzZSBsb2NrIGlmIGd1YXJkZWQgYmVoYXZpb3IgZmFpbHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoNTAwMCk7XG4gICAgICBjb25zdCBndWFyZCA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChsb2NrRmlsZSk7XG4gICAgICBjb25zdCBwMSA9IGd1YXJkKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg1MDApO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCcpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBwMiA9IGd1YXJkKGFzeW5jICgpID0+IGF3YWl0IGd1YXJkZWRCZWhhdmlvcignd29ybGQnLCAxMDApKTtcbiAgICAgIGF3YWl0IHAxLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmFkLyk7XG4gICAgICBhd2FpdCBwMi5zaG91bGQuZXZlbnR1YWxseS5lcWwoJ3dvcmxkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiJdLCJmaWxlIjoidGVzdC91dGlsLWUyZS1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|