diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8925b7f..d86fbcb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,7 @@ jobs: path: '**/node_modules' key: ${{ runner.os }}-build-yarn-${{ hashFiles('**/yarn.lock') }} + - run: node -v - name: Install Dependencies run: yarn install --frozen-lockfile diff --git a/jest.setup.js b/jest.setup.js index 19b7ed5..b57f2bd 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -1,6 +1,3 @@ -global.td = require('testdouble'); -require('testdouble-jest')(td, jest); - process.env.GITHUB_OWNER = 'bantic'; process.env.GITHUB_REPO = 'github-metrics-tests'; diff --git a/package.json b/package.json index 06d77ec..deea7f8 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,6 @@ "fetch-mock": "^9.11.0", "jest": "^26.6.3", "setup-polly-jest": "^0.9.1", - "testdouble": "^3.16.1", - "testdouble-jest": "^2.0.0", "ts-node": "^9.1.1", "typescript": "^4.2.3" }, diff --git a/tests/reports/pull-request.test.ts b/tests/reports/pull-request.test.ts index 71f7ca3..cd1e874 100644 --- a/tests/reports/pull-request.test.ts +++ b/tests/reports/pull-request.test.ts @@ -3,17 +3,18 @@ import PullRequestReport from '../../src/reports/pull-request'; import MERGED_PULL_REQUEST from '../fixtures/merged-pr'; import OPEN_NO_REVIEWS from '../fixtures/open-no-reviews'; import OPEN_WITH_REVIEWS from '../fixtures/open-with-reviews'; -import * as td from 'testdouble'; import { DateTime } from 'luxon'; describe('Pull Request Report', () => { + let origNow: any; beforeAll(() => { - td.replace(DateTime, 'now', () => { - return DateTime.fromISO('2021-03-11T17:35:54Z'); - }); + origNow = DateTime.now; + DateTime.now = () => DateTime.fromISO('2021-03-11T17:35:54Z'); }); - afterAll(() => td.reset()); + afterAll(() => { + DateTime.now = origNow; + }); test('it generates correct report for a merged PR', () => { const pullRequest = new PullRequest( diff --git a/tests/reports/repository.test.ts b/tests/reports/repository.test.ts index dd0aafb..6308643 100644 --- a/tests/reports/repository.test.ts +++ b/tests/reports/repository.test.ts @@ -1,17 +1,18 @@ import { PullRequest } from '../../src/github-client'; import RepositoryReport from '../../src/reports/repository'; -import * as td from 'testdouble'; import { DateTime } from 'luxon'; import PRS_THIS_WEEK from '../fixtures/prs-this-week'; describe('Repository Report', () => { + let origNow: any; beforeAll(() => { - td.replace(DateTime, 'now', () => { - return DateTime.fromISO('2021-03-11T17:35:54Z'); - }); + origNow = DateTime.now; + DateTime.now = () => DateTime.fromISO('2021-03-11T17:35:54Z'); }); - afterAll(() => td.reset()); + afterAll(() => { + DateTime.now = origNow; + }); test('it generates correct report given an empty list of pull requests', () => { const owner = 'Marvel'; diff --git a/tests/utils/date.test.ts b/tests/utils/date.test.ts index ab101c7..13e164a 100644 --- a/tests/utils/date.test.ts +++ b/tests/utils/date.test.ts @@ -1,16 +1,19 @@ import { Period, getInterval } from '../../src/utils/date'; -import * as td from 'testdouble'; import { DateTime } from 'luxon'; const NOW_TO_ISO = '2021-03-11T17:35:54.000Z'; const STUBBED_NOW = DateTime.fromISO(NOW_TO_ISO).toUTC(); describe('Date Utils', () => { + let origUtc: any; beforeAll(() => { - td.replace(DateTime, 'utc', () => STUBBED_NOW); + origUtc = DateTime.utc; + DateTime.utc = () => STUBBED_NOW; }); - afterAll(() => td.reset()); + afterAll(() => { + DateTime.utc = origUtc; + }); test('generates correct date for day', () => { const interval = getInterval(); diff --git a/tests/utils/generate-metrics-from-config.test.ts b/tests/utils/generate-metrics-from-config.test.ts index 39a49ed..32f4ea5 100644 --- a/tests/utils/generate-metrics-from-config.test.ts +++ b/tests/utils/generate-metrics-from-config.test.ts @@ -6,7 +6,6 @@ import { } from '../../src/utils/generate-metrics-from-config'; import { METRIC_NAME_TO_CONSTRUCTOR } from '../../src/metric'; import { DateTime } from 'luxon'; -import * as td from 'testdouble'; const NOW_TO_ISO = '2021-03-11T17:35:54.000Z'; const STUBBED_NOW = DateTime.fromISO(NOW_TO_ISO).toUTC(); @@ -114,7 +113,8 @@ describe('generateMetrics', () => { }); test(`period can be specified in config`, () => { - td.replace(DateTime, 'utc', () => STUBBED_NOW); + let origUtc = DateTime.utc; + DateTime.utc = () => STUBBED_NOW; try { for (let period of ['day', 'week', 'month']) { let config = { period, metrics: [{ name: 'workflow/success' }] }; @@ -129,7 +129,7 @@ describe('generateMetrics', () => { expect(interval.end).toEqual(STUBBED_NOW); } } finally { - td.reset(); + DateTime.utc = origUtc; } }); diff --git a/yarn.lock b/yarn.lock index f9b6d69..63f484f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3947,11 +3947,6 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-object@^2.0.3, is-plain-object@^2.0.4, is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" @@ -3962,11 +3957,6 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4659,7 +4649,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@~4.17.15: +lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@~4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5323,14 +5313,6 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz" integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== -quibble@^0.6.4: - version "0.6.5" - resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.6.5.tgz#455f606ab3396d04f2384a2ba7f6ce564c4158ed" - integrity sha512-L3/bDHWjHm9zdG0Aqj7lhmp6Q5RFjXeitO9CGzWKP83d6BlGS0lLo9oswxgq62gwuIF7apT9tO0dw9kNuvb9eg== - dependencies: - lodash "^4.17.14" - resolve "^1.11.1" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -5530,7 +5512,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.18.1, resolve@~1.22.1, resolve@~1.22.2: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@~1.22.1, resolve@~1.22.2: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -5958,14 +5940,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -stringify-object-es5@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/stringify-object-es5/-/stringify-object-es5-2.5.0.tgz#057c3c9a90a127339bb9d1704a290bb7bd0a1ec5" - integrity sha1-BXw8mpChJzObudFwSikLt70KHsU= - dependencies: - is-plain-obj "^1.0.0" - is-regexp "^1.0.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz" @@ -6059,31 +6033,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -testdouble-jest@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/testdouble-jest/-/testdouble-jest-2.0.0.tgz#e5f48ae2978e386638e1eeeb6335e52093ac6071" - integrity sha512-+Ny3/ZtLcPBXZaVdLXYDDmZtCe5Erx/Rr8scLisFSHR763eHIEh4dGrISfENc+ezvhMLH1GvgSpZjagdv6l3yQ== - -testdouble@^3.16.1: - version "3.16.1" - resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.16.1.tgz#05e3405b79e81d5e37aec7157cccd52217c97e8b" - integrity sha512-diaNYjFfR8bdMhtwJ9c2KxHa7M8Al7YciU+kteutWIIendmCC61ZyqQBtprsFkb6Cd/rjBr2sEoUJ8bWIVHm6w== - dependencies: - lodash "^4.17.15" - quibble "^0.6.4" - stringify-object-es5 "^2.5.0" - theredoc "^1.0.0" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -theredoc@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/theredoc/-/theredoc-1.0.0.tgz#bcace376af6feb1873efbdd0f91ed026570ff062" - integrity sha512-KU3SA3TjRRM932jpNfD3u4Ec3bSvedyo5ITPI7zgWYnKep7BwQQaxlhI9qbO+lKJoRnoAbEVfMcAHRuKVYikDA== - throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"