diff --git a/package-lock.json b/package-lock.json index 924aa668..3d961363 100644 --- a/package-lock.json +++ b/package-lock.json @@ -127,6 +127,42 @@ "to-fast-properties": "^2.0.0" } }, + "@sinonjs/commons": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", + "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, "ajv": { "version": "6.12.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", @@ -182,6 +218,12 @@ "sprintf-js": "~1.0.2" } }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -240,21 +282,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buster-core": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/buster-core/-/buster-core-0.6.4.tgz", - "integrity": "sha1-J79rrWdCROpyDzEdkAoMoct4YFA=", - "dev": true - }, - "buster-format": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/buster-format/-/buster-format-0.5.6.tgz", - "integrity": "sha1-K4bDIuz14bCubm55Bev884fSq5U=", - "dev": true, - "requires": { - "buster-core": "=0.6.4" - } - }, "caching-transform": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", @@ -1128,6 +1155,12 @@ "verror": "1.10.0" } }, + "just-extend": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", + "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "dev": true + }, "lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", @@ -1189,6 +1222,12 @@ "chalk": "^2.0.1" } }, + "lolex": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -1327,6 +1366,30 @@ "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", "dev": true }, + "nise": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + } + } + }, "node-environment-flags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", @@ -1500,6 +1563,15 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -1766,21 +1838,29 @@ "dev": true }, "sinon": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.5.2.tgz", - "integrity": "sha1-nKvGx4vfRF1/gxHVSWhi+VRoxPg=", - "dev": true, - "requires": { - "buster-format": "~0.5" - } - }, - "sinon-restore": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sinon-restore/-/sinon-restore-1.0.1.tgz", - "integrity": "sha1-mZx7q3f0XdewOCfKYoax9NAw1cU=", - "dev": true, - "requires": { - "sinon": "1.5.2" + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "source-map": { @@ -1984,6 +2064,12 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", diff --git a/package.json b/package.json index b8e88a3a..66de07b2 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "nyc": "^14.1.1", "should": "^9.0.2", "shx": "^0.3.2", - "sinon-restore": "^1.0.1" + "sinon": "^7.5.0" }, "engines": { "node": ">=6" diff --git a/test/handleInput.js b/test/handleInput.js index c46aa172..6d4fc1ea 100644 --- a/test/handleInput.js +++ b/test/handleInput.js @@ -3,7 +3,7 @@ const fs = require('fs'); const sysPath = require('path'); const should = require('should'); -const sinon = require('sinon-restore'); +const sinon = require('sinon').sandbox.create(); const logDriver = require('log-driver'); const index = require('..'); @@ -11,10 +11,10 @@ logDriver({ level: false }); describe('handleInput', () => { afterEach(() => { - sinon.restoreAll(); + sinon.restore(); }); it('returns an error when there\'s an error getting options', done => { - sinon.stub(index, 'getOptions', cb => cb('some error', {})); + sinon.stub(index, 'getOptions').callsFake(cb => cb('some error', {})); const path = sysPath.join(__dirname, './fixtures/onefile.lcov'); const input = fs.readFileSync(path, 'utf8'); index.handleInput(input, err => { @@ -23,8 +23,8 @@ describe('handleInput', () => { }); }); it('returns an error when there\'s an error converting', done => { - sinon.stub(index, 'getOptions', cb => cb(null, {})); - sinon.stub(index, 'convertLcovToCoveralls', (input, options, cb) => { + sinon.stub(index, 'getOptions').callsFake(cb => cb(null, {})); + sinon.stub(index, 'convertLcovToCoveralls').callsFake((input, options, cb) => { cb('some error'); }); const path = sysPath.join(__dirname, './fixtures/onefile.lcov'); @@ -35,8 +35,8 @@ describe('handleInput', () => { }); }); it('returns an error when there\'s an error sending', done => { - sinon.stub(index, 'getOptions', cb => cb(null, {})); - sinon.stub(index, 'sendToCoveralls', (postData, cb) => { + sinon.stub(index, 'getOptions').callsFake(cb => cb(null, {})); + sinon.stub(index, 'sendToCoveralls').callsFake((postData, cb) => { cb('some error'); }); const path = sysPath.join(__dirname, './fixtures/onefile.lcov'); @@ -47,8 +47,8 @@ describe('handleInput', () => { }); }); it('returns an error when there\'s a bad status code', done => { - sinon.stub(index, 'getOptions', cb => cb(null, {})); - sinon.stub(index, 'sendToCoveralls', (postData, cb) => { + sinon.stub(index, 'getOptions').callsFake(cb => cb(null, {})); + sinon.stub(index, 'sendToCoveralls').callsFake((postData, cb) => { cb(null, { statusCode: 500 }, 'body'); }); const path = sysPath.join(__dirname, './fixtures/onefile.lcov'); @@ -59,8 +59,8 @@ describe('handleInput', () => { }); }); it('completes successfully when there are no errors', done => { - sinon.stub(index, 'getOptions', cb => cb(null, {})); - sinon.stub(index, 'sendToCoveralls', (postData, cb) => { + sinon.stub(index, 'getOptions').callsFake(cb => cb(null, {})); + sinon.stub(index, 'sendToCoveralls').callsFake((postData, cb) => { cb(null, { statusCode: 200 }, 'body'); }); const path = sysPath.join(__dirname, './fixtures/onefile.lcov'); diff --git a/test/sendToCoveralls.js b/test/sendToCoveralls.js index 2f188805..f1145168 100644 --- a/test/sendToCoveralls.js +++ b/test/sendToCoveralls.js @@ -2,7 +2,7 @@ const should = require('should'); const request = require('request'); -const sinon = require('sinon-restore'); +const sinon = require('sinon').sandbox.create(); const logDriver = require('log-driver'); const index = require('..'); @@ -15,7 +15,7 @@ describe('sendToCoveralls', () => { }); afterEach(() => { - sinon.restoreAll(); + sinon.restore(); if (realCoverallsHost !== undefined) { process.env.COVERALLS_ENDPOINT = realCoverallsHost; } else { @@ -24,7 +24,7 @@ describe('sendToCoveralls', () => { }); it('passes on the correct params to request.post', done => { - sinon.stub(request, 'post', (obj, cb) => { + sinon.stub(request, 'post').callsFake((obj, cb) => { obj.url.should.equal('https://coveralls.io/api/v1/jobs'); obj.form.should.eql({ json: '{"some":"obj"}' }); cb('err', 'response', 'body'); @@ -42,7 +42,7 @@ describe('sendToCoveralls', () => { it('allows sending to enterprise url', done => { process.env.COVERALLS_ENDPOINT = 'https://coveralls-ubuntu.domain.com'; - sinon.stub(request, 'post', (obj, cb) => { + sinon.stub(request, 'post').callsFake((obj, cb) => { obj.url.should.equal('https://coveralls-ubuntu.domain.com/api/v1/jobs'); obj.form.should.eql({ json: '{"some":"obj"}' }); cb('err', 'response', 'body');