github-pages-deploy-action/node_modules/object-inspect/test/has.js

35 lines
986 B
JavaScript
Raw Normal View History

2020-01-28 13:08:03 +08:00
var inspect = require('../');
var test = require('tape');
2020-03-07 11:45:40 +08:00
function withoutProperty(object, property, fn) {
2020-01-28 13:08:03 +08:00
var original;
if (Object.getOwnPropertyDescriptor) {
original = Object.getOwnPropertyDescriptor(object, property);
} else {
original = object[property];
}
delete object[property];
try {
fn();
} finally {
if (Object.getOwnPropertyDescriptor) {
Object.defineProperty(object, property, original);
} else {
object[property] = original;
}
}
2020-03-07 11:45:40 +08:00
}
2020-01-28 13:08:03 +08:00
test('when Object#hasOwnProperty is deleted', function (t) {
t.plan(1);
2020-03-07 11:45:40 +08:00
var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays
// eslint-disable-next-line no-extend-native
2020-01-28 13:08:03 +08:00
Array.prototype[1] = 2; // this is needed to account for "in" vs "hasOwnProperty"
2020-03-07 11:45:40 +08:00
2020-01-28 13:08:03 +08:00
withoutProperty(Object.prototype, 'hasOwnProperty', function () {
t.equal(inspect(arr), '[ 1, , 3 ]');
});
2020-03-07 11:45:40 +08:00
delete Array.prototype[1];
2020-01-28 13:08:03 +08:00
});