diff --git a/package.json b/package.json index 49c82d5..8ea1a36 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "test:corejs": "node test/corejs", "coverage": "covert test/native test/why", "coverage-quiet": "covert test/native.js --quiet", - "lint": "eslint *.js test/*.js" + "lint": "eslint ." }, "repository": { "type": "git", @@ -60,19 +60,19 @@ "which-collection": "^1.0.1" }, "devDependencies": { - "@ljharb/eslint-config": "^15.0.2", + "@ljharb/eslint-config": "^16.0.0", "auto-changelog": "^1.16.2", "core-js": "^2.6.5 || ^3", "covert": "^1.1.1", "es6-shim": "^0.35.5", - "eslint": "^6.7.1", + "eslint": "^6.8.0", "foreach": "^2.0.5", "has-bigints": "^1.0.0", "has-symbols": "^1.0.1", - "make-arrow-function": "^1.1.0", - "make-generator-function": "^1.1.0", + "make-arrow-function": "~1.1.0", + "make-generator-function": "^2.0.0", "safe-publish-latest": "^1.1.4", - "tape": "^4.11.0" + "tape": "^5.0.0-next.4" }, "testling": { "files": "test/native.js", diff --git a/test/native.js b/test/native.js index cb21306..a5d17d0 100644 --- a/test/native.js +++ b/test/native.js @@ -5,8 +5,8 @@ var isEqual = require('../'); var hasSymbols = require('has-symbols')(); var hasSymbolShams = require('has-symbols/shams')(); var hasBigInts = require('has-bigints')(); -var genFn = require('make-generator-function'); -var hasGeneratorSupport = typeof genFn === 'function'; +var generators = require('make-generator-function')(); +var hasGeneratorSupport = generators.length > 0; var arrowFunctions = require('make-arrow-function').list(); var hasArrowFunctionSupport = arrowFunctions.length > 0; var objectEntries = require('object.entries'); @@ -17,7 +17,11 @@ var symbolIterator = (hasSymbols || hasSymbolShams) && Symbol.iterator; var copyFunction = function (fn) { /* eslint-disable no-new-func */ - return Function('return ' + String(fn))(); + try { + return Function('return ' + String(fn))(); + } catch (e) { + return Function('return {' + String(fn) + '}["' + fn.name + '"];')(); + } }; test('primitives', function (t) { @@ -228,8 +232,7 @@ test('functions', function (t) { var genNoSpaces = Function('return function*(){};')(); st.notOk(isEqual(fnNoSpace, genNoSpaces), 'generator and fn that are otherwise identical are not equal'); - var generators = [genFnStar, genFnSpaceStar, genNoSpaces]; - forEach(generators, function (generator) { + forEach(generators.concat(genFnStar, genFnSpaceStar, genNoSpaces), function (generator) { st.ok(isEqual(generator, generator), generator + ' is equal to itself'); st.ok(isEqual(generator, copyFunction(generator)), generator + ' is equal to copyFunction(generator)'); }); @@ -372,7 +375,7 @@ test('iterables', function (t) { ab.add('a'); ab.add('c'); } - st.notOk(isEqual(ab, ac), 'Sets initially populated with different strings are not equal'); + sst.notOk(isEqual(ab, ac), 'Sets initially populated with different strings are not equal'); sst.end(); }); diff --git a/test/why.js b/test/why.js index 3c11541..d62a480 100644 --- a/test/why.js +++ b/test/why.js @@ -7,8 +7,8 @@ var isEqualWhy = require('../why'); var hasSymbols = require('has-symbols')(); var hasSymbolShams = require('has-symbols/shams')(); var hasBigInts = require('has-bigints')(); -var genFn = require('make-generator-function'); -var hasGeneratorSupport = typeof genFn === 'function'; +var generators = require('make-generator-function')(); +var hasGeneratorSupport = generators.length > 0; var arrowFunctions = require('make-arrow-function').list(); var hasArrowFunctionSupport = arrowFunctions.length > 0; var objectEntries = require('object.entries'); @@ -19,7 +19,11 @@ var symbolIterator = (hasSymbols || hasSymbolShams) && Symbol.iterator; var copyFunction = function (fn) { /* eslint-disable no-new-func */ - return Function('return ' + String(fn))(); + try { + return Function('return ' + String(fn))(); + } catch (e) { + return Function('return {' + String(fn) + '}["' + fn.name + '"];')(); + } }; test('primitives', function (t) { @@ -365,8 +369,7 @@ test('functions', function (t) { reasonsMap[actual] = true; st.deepEqual(objectEntries(reasonsMap), reasons, 'generator and fn that are otherwise identical are not equal'); - var generators = [genFnStar, genFnSpaceStar, genNoSpaces]; - forEach(generators, function (generator) { + forEach(generators.concat(genFnStar, genFnSpaceStar, genNoSpaces), function (generator) { st.equal('', isEqualWhy(generator, generator), generator + ' is equal to itself'); st.equal('', isEqualWhy(generator, copyFunction(generator)), generator + ' is equal to copyFunction(generator)'); }); @@ -571,7 +574,7 @@ test('iterables', function (t) { ac.add('a'); ac.add('c'); } - st.equal( + sst.equal( isEqualWhy(ab, ac), 'iteration results are not equal: value at key "value" differs: string values are different: "b" !== "c"', 'Sets initially populated with different strings are not equal'