UNPKG

@fast-check/poisoning

Version:

Set of utilities to ease detection and revert of poisoning

31 lines (30 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.restoreGlobals = restoreGlobals; exports.assertNoPoisoning = assertNoPoisoning; const CaptureAllGlobals_js_1 = require("./internals/CaptureAllGlobals.js"); const FilterNonEligibleDiffs_js_1 = require("./internals/FilterNonEligibleDiffs.js"); const TrackDiffsOnGlobal_js_1 = require("./internals/TrackDiffsOnGlobal.js"); const initialGlobals = (0, CaptureAllGlobals_js_1.captureAllGlobals)(); function trackDiffsOnGlobalsBasedOnOptions(options) { const ignoredRootRegex = options !== undefined && options.ignoredRootRegex !== undefined ? options.ignoredRootRegex : undefined; return ignoredRootRegex !== undefined ? (0, TrackDiffsOnGlobal_js_1.trackDiffsOnGlobals)(initialGlobals, (globalDetails) => !(0, FilterNonEligibleDiffs_js_1.shouldIgnoreGlobal)(globalDetails, ignoredRootRegex), (globalDetails, propertyName) => !(0, FilterNonEligibleDiffs_js_1.shouldIgnoreProperty)(globalDetails, propertyName, ignoredRootRegex)) : (0, TrackDiffsOnGlobal_js_1.trackDiffsOnGlobals)(initialGlobals, () => true, () => true); } function restoreGlobals(options) { const diffs = trackDiffsOnGlobalsBasedOnOptions(options); for (let index = 0; index !== diffs.length; ++index) { diffs[index].patch(); } } function assertNoPoisoning(options) { const diffs = trackDiffsOnGlobalsBasedOnOptions(options); if (diffs.length !== 0) { let impactedElements = diffs[0].fullyQualifiedKeyName; for (let index = 1; index !== diffs.length; ++index) { impactedElements += ', ' + diffs[index].fullyQualifiedKeyName; } throw new Error('Poisoning detected on ' + impactedElements); } }