Spaces:
Runtime error
Runtime error
| ; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.TimeoutProperty = void 0; | |
| const globals_1 = require("../../utils/globals"); | |
| const timeoutAfter = (timeMs, setTimeoutSafe, clearTimeoutSafe) => { | |
| let timeoutHandle = null; | |
| const promise = new Promise((resolve) => { | |
| timeoutHandle = setTimeoutSafe(() => { | |
| resolve({ | |
| error: new globals_1.Error(`Property timeout: exceeded limit of ${timeMs} milliseconds`), | |
| errorMessage: `Property timeout: exceeded limit of ${timeMs} milliseconds`, | |
| }); | |
| }, timeMs); | |
| }); | |
| return { | |
| clear: () => clearTimeoutSafe(timeoutHandle), | |
| promise, | |
| }; | |
| }; | |
| class TimeoutProperty { | |
| constructor(property, timeMs, setTimeoutSafe, clearTimeoutSafe) { | |
| this.property = property; | |
| this.timeMs = timeMs; | |
| this.setTimeoutSafe = setTimeoutSafe; | |
| this.clearTimeoutSafe = clearTimeoutSafe; | |
| if (this.property.runBeforeEach !== undefined && this.property.runAfterEach !== undefined) { | |
| this.runBeforeEach = () => Promise.resolve(this.property.runBeforeEach()); | |
| this.runAfterEach = () => Promise.resolve(this.property.runAfterEach()); | |
| } | |
| } | |
| isAsync() { | |
| return true; | |
| } | |
| generate(mrng, runId) { | |
| return this.property.generate(mrng, runId); | |
| } | |
| shrink(value) { | |
| return this.property.shrink(value); | |
| } | |
| async run(v, dontRunHook) { | |
| const t = timeoutAfter(this.timeMs, this.setTimeoutSafe, this.clearTimeoutSafe); | |
| const propRun = Promise.race([this.property.run(v, dontRunHook), t.promise]); | |
| propRun.then(t.clear, t.clear); | |
| return propRun; | |
| } | |
| } | |
| exports.TimeoutProperty = TimeoutProperty; | |