From 7791df764fcabf5f02470607f93205061e005d12 Mon Sep 17 00:00:00 2001 From: Cory Forsyth Date: Mon, 13 Jan 2025 13:17:25 +0100 Subject: [PATCH 1/4] try PR #25 from scratch --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) 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 From 33f3c7b939e3268834d8945b653280e78a97ce79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 14:19:47 +0000 Subject: [PATCH 2/4] Bump testdouble from 3.16.1 to 3.20.2 Bumps [testdouble](https://github.com/testdouble/testdouble.js) from 3.16.1 to 3.20.2. - [Changelog](https://github.com/testdouble/testdouble.js/blob/main/CHANGELOG.md) - [Commits](https://github.com/testdouble/testdouble.js/compare/v3.16.1...v3.20.2) --- updated-dependencies: - dependency-name: testdouble dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 06d77ec..7b7c979 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "fetch-mock": "^9.11.0", "jest": "^26.6.3", "setup-polly-jest": "^0.9.1", - "testdouble": "^3.16.1", + "testdouble": "^3.20.2", "testdouble-jest": "^2.0.0", "ts-node": "^9.1.1", "typescript": "^4.2.3" diff --git a/yarn.lock b/yarn.lock index f9b6d69..615f884 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4659,7 +4659,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.21, lodash@~4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5323,13 +5323,13 @@ 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== +quibble@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.9.2.tgz#1729fdda002bb8bfdbbf6c1b36d75a40162185da" + integrity sha512-BrL7hrZcbyyt5ZDfePkGFDc3m82uUtxCPOnpRUrkOdtBnmV9ldQKxXORkKL8eIzToRNaCpIPyKyfdfq/tBlFAA== dependencies: - lodash "^4.17.14" - resolve "^1.11.1" + lodash "^4.17.21" + resolve "^1.22.8" range-parser@~1.2.1: version "1.2.1" @@ -5530,7 +5530,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.8, 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== @@ -6064,13 +6064,13 @@ testdouble-jest@^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== +testdouble@^3.20.2: + version "3.20.2" + resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.20.2.tgz#b7b6b7ae474fda194d57a3b10595bb1309825399" + integrity sha512-790e9vJKdfddWNOaxW1/V9FcMk48cPEl3eJSj2i8Hh1fX89qArEJ6cp3DBnaECpGXc3xKJVWbc1jeNlWYWgiMg== dependencies: - lodash "^4.17.15" - quibble "^0.6.4" + lodash "^4.17.21" + quibble "^0.9.2" stringify-object-es5 "^2.5.0" theredoc "^1.0.0" From 3d27a0835e60fe7be7d45a8bbb1ba84839c2fc37 Mon Sep 17 00:00:00 2001 From: Cory Forsyth Date: Mon, 13 Jan 2025 13:58:21 +0100 Subject: [PATCH 3/4] Replace testdouble with simpler stubbing --- jest.setup.js | 3 -- package.json | 4 +- tests/reports/pull-request.test.ts | 11 ++-- tests/reports/repository.test.ts | 11 ++-- tests/utils/date.test.ts | 9 ++-- .../generate-metrics-from-config.test.ts | 6 +-- yarn.lock | 50 +------------------ 7 files changed, 24 insertions(+), 70 deletions(-) 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 7b7c979..30e9f8d 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.20.2", - "testdouble-jest": "^2.0.0", "ts-node": "^9.1.1", "typescript": "^4.2.3" }, @@ -63,7 +61,7 @@ ] }, "volta": { - "node": "16.18.0", + "node": "22.13.0", "yarn": "1.22.10" } } 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 615f884..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.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, 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.9.2: - version "0.9.2" - resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.9.2.tgz#1729fdda002bb8bfdbbf6c1b36d75a40162185da" - integrity sha512-BrL7hrZcbyyt5ZDfePkGFDc3m82uUtxCPOnpRUrkOdtBnmV9ldQKxXORkKL8eIzToRNaCpIPyKyfdfq/tBlFAA== - dependencies: - lodash "^4.17.21" - resolve "^1.22.8" - 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.14.2, resolve@^1.18.1, resolve@^1.22.8, 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.20.2: - version "3.20.2" - resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.20.2.tgz#b7b6b7ae474fda194d57a3b10595bb1309825399" - integrity sha512-790e9vJKdfddWNOaxW1/V9FcMk48cPEl3eJSj2i8Hh1fX89qArEJ6cp3DBnaECpGXc3xKJVWbc1jeNlWYWgiMg== - dependencies: - lodash "^4.17.21" - quibble "^0.9.2" - 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" From fc3d796153fc26cd2d55a25308f46d06aea7cdfd Mon Sep 17 00:00:00 2001 From: Cory Forsyth Date: Mon, 13 Jan 2025 14:00:45 +0100 Subject: [PATCH 4/4] remove volta pin --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 30e9f8d..deea7f8 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ ] }, "volta": { - "node": "22.13.0", + "node": "16.18.0", "yarn": "1.22.10" } }