From 17b5a3cb54db390c1df5359f97ac7821409ce980 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 18 Sep 2024 06:59:45 -0700 Subject: [PATCH] ci: add codecov integration, closes leather-io/issues@34 --- .github/workflows/code-checks.yml | 21 +++++++++++- .gitignore | 1 + apps/mobile/.gitignore | 7 +++- apps/mobile/ios/Podfile.lock | 2 +- codecov.yml | 45 ++++++++++++++++++++++++ config/vitest-configs.ts | 1 - package.json | 2 ++ packages/bitcoin/package.json | 1 - packages/crypto/package.json | 3 +- packages/query/package.json | 1 - packages/query/vitest.config.js | 1 - packages/stacks/package.json | 2 ++ packages/utils/package.json | 1 - pnpm-lock.yaml | 57 ++++--------------------------- vitest.workspace.js | 1 - 15 files changed, 85 insertions(+), 61 deletions(-) create mode 100644 codecov.yml diff --git a/.github/workflows/code-checks.yml b/.github/workflows/code-checks.yml index 63ba223a..7c927f07 100644 --- a/.github/workflows/code-checks.yml +++ b/.github/workflows/code-checks.yml @@ -85,5 +85,24 @@ jobs: - run: pnpm build - - name: Run unit tests + - name: Run unit tests with code coverage run: pnpm test:unit + + test-coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/provision + with: + fetch-depth: 0 + + - run: pnpm build + + - name: Run unit tests with code coverage + run: pnpm test:coverage + + - name: Upload results to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{secrets.CODECOV_TOKEN}} + files: ./app/mobile/coverage/.tmp/coverage-0.json diff --git a/.gitignore b/.gitignore index 8c4a199c..5d9e3981 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ tsconfig.tsbuildinfo .DS_Store leather-styles **/.env +coverage \ No newline at end of file diff --git a/apps/mobile/.gitignore b/apps/mobile/.gitignore index 4315d2a9..609544a9 100644 --- a/apps/mobile/.gitignore +++ b/apps/mobile/.gitignore @@ -40,4 +40,9 @@ artifacts/ # The following patterns were generated by expo-cli expo-env.d.ts -# @end expo-cli \ No newline at end of file +# @end expo-cli + +# Coverage reports +coverage +tmp +.tmp \ No newline at end of file diff --git a/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock index 618696f8..fbee2334 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -1997,7 +1997,7 @@ SPEC CHECKSUMS: SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d - Yoga: b9a182ab00cf25926e7f79657d08c5d23c2d03b0 + Yoga: 348f8b538c3ed4423eb58a8e5730feec50bce372 PODFILE CHECKSUM: 1183a5e3969c957f2df7140e9b85ba46d355b320 diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..af16be2f --- /dev/null +++ b/codecov.yml @@ -0,0 +1,45 @@ +coverage: + status: + project: + default: + informational: true + patch: + default: + informational: true + +comment: + layout: 'condensed_header, diff, flags, files, components' + require_changes: false # if true: only post the comment if coverage changes + hide_project_coverage: false # [true :: only show coverage on the git diff aka patch coverage] + +codecov: + require_ci_to_pass: false + +component_management: + individual_components: + - component_id: packages-bitcoin # this is an identifier that should not be changed + name: bitcoin # this is a display name, and can be changed freely + paths: + - packages/bitcoin + + - component_id: packages-query + name: query + paths: + - packages/query + + - component_id: packages-utils + name: utils + paths: + - packages/utils + + - component_id: packages-crypto + name: crypto + paths: + - packages/crypto + + - component_id: packages-stacks + name: stacks + paths: + - packages/stacks +# When modifying this file, please validate using +# curl -X POST --data-binary @codecov.yml https://codecov.io/validate diff --git a/config/vitest-configs.ts b/config/vitest-configs.ts index 1a8b3a92..c2de2a77 100644 --- a/config/vitest-configs.ts +++ b/config/vitest-configs.ts @@ -2,7 +2,6 @@ export const defaultVitestUnitTestingConfig = { test: { include: 'src/**/*.spec.{ts,tsx}', coverage: { - provider: 'istanbul', reporter: ['text', 'json-summary', 'json', 'html'], reportsDirectory: './coverage', }, diff --git a/package.json b/package.json index 6eae2f04..560c5c1d 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "syncpack:format": "syncpack format", "syncpack:lint": "syncpack lint", "test": "turbo run test", + "test:coverage": "pnpm -r test:coverage", "test:unit": "pnpm -r test:unit", "typecheck": "turbo run typecheck" }, @@ -37,6 +38,7 @@ "@leather.io/prettier-config": "workspace:*", "@leather.io/tsconfig-config": "workspace:*", "@ls-lint/ls-lint": "2.2.3", + "@vitest/coverage-v8": "2.0.5", "dependency-cruiser": "16.3.10", "eslint": "8.53.0", "husky": "9.1.4", diff --git a/packages/bitcoin/package.json b/packages/bitcoin/package.json index 6b4d94a9..7c17eb1e 100644 --- a/packages/bitcoin/package.json +++ b/packages/bitcoin/package.json @@ -51,7 +51,6 @@ "@leather.io/prettier-config": "workspace:*", "@leather.io/rpc": "workspace:*", "@leather.io/tsconfig-config": "workspace:*", - "@vitest/coverage-istanbul": "0.34.6", "eslint": "8.53.0", "prettier": "3.3.3", "tslib": "2.6.2", diff --git a/packages/crypto/package.json b/packages/crypto/package.json index c1df5a69..8e325b94 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -8,6 +8,7 @@ "build": "tsup", "build:watch": "tsup --watch --onSuccess 'tsup --dts-only'", "prepublish": "pnpm build", + "test:coverage": "vitest run --coverage", "test:unit": "vitest run", "typecheck": "tsc --noEmit" }, @@ -21,8 +22,6 @@ "just-memoize": "2.2.0" }, "devDependencies": { - "@vitest/coverage-istanbul": "0.34.6", - "@vitest/coverage-v8": "2.0.4", "tsup": "8.1.0", "vitest": "2.0.5" }, diff --git a/packages/query/package.json b/packages/query/package.json index d88be6f8..ae9c7091 100644 --- a/packages/query/package.json +++ b/packages/query/package.json @@ -65,7 +65,6 @@ "@types/jsdom": "21.1.3", "@types/lodash.get": "4.4.9", "@types/react": "18.2.79", - "@vitest/coverage-istanbul": "0.34.6", "concurrently": "8.2.2", "eslint": "8.53.0", "jsdom": "22.1.0", diff --git a/packages/query/vitest.config.js b/packages/query/vitest.config.js index 68803f78..e6621f07 100644 --- a/packages/query/vitest.config.js +++ b/packages/query/vitest.config.js @@ -4,7 +4,6 @@ export default defineProject({ test: { include: 'src/**/*.spec.{ts,tsx}', coverage: { - provider: 'istanbul', reporter: ['text', 'json-summary', 'json', 'html'], reportsDirectory: './coverage', }, diff --git a/packages/stacks/package.json b/packages/stacks/package.json index 77226e8a..fd2e3f67 100644 --- a/packages/stacks/package.json +++ b/packages/stacks/package.json @@ -10,6 +10,8 @@ "build:watch": "tsup --watch --onSuccess 'tsup --dts-only'", "prepublish": "pnpm build", "test": "vitest run", + "test:coverage": "vitest run --coverage", + "test:unit": "vitest run", "typecheck": "tsc --noEmit", "types": "tsc --declaration --emitDeclarationOnly" }, diff --git a/packages/utils/package.json b/packages/utils/package.json index e54e3e55..712aaf74 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -36,7 +36,6 @@ "@leather.io/eslint-config": "workspace:*", "@leather.io/prettier-config": "workspace:*", "@leather.io/tsconfig-config": "workspace:*", - "@vitest/coverage-istanbul": "0.34.6", "eslint": "8.53.0", "prettier": "3.3.3", "tsup": "8.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 702585b4..ddb36b75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,6 +42,9 @@ importers: '@ls-lint/ls-lint': specifier: 2.2.3 version: 2.2.3 + '@vitest/coverage-v8': + specifier: 2.0.5 + version: 2.0.5(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0)) dependency-cruiser: specifier: 16.3.10 version: 16.3.10 @@ -461,9 +464,6 @@ importers: '@leather.io/tsconfig-config': specifier: workspace:* version: link:../tsconfig-config - '@vitest/coverage-istanbul': - specifier: 0.34.6 - version: 0.34.6(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0)) eslint: specifier: 8.53.0 version: 8.53.0 @@ -529,12 +529,6 @@ importers: specifier: 2.2.0 version: 2.2.0 devDependencies: - '@vitest/coverage-istanbul': - specifier: 0.34.6 - version: 0.34.6(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0)) - '@vitest/coverage-v8': - specifier: 2.0.4 - version: 2.0.4(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0)) tsup: specifier: 8.1.0 version: 8.1.0(@microsoft/api-extractor@7.47.9(@types/node@22.5.5))(@swc/core@1.7.26)(postcss@8.4.47)(typescript@5.6.2) @@ -715,9 +709,6 @@ importers: '@types/react': specifier: 18.2.79 version: 18.2.79 - '@vitest/coverage-istanbul': - specifier: 0.34.6 - version: 0.34.6(vitest@2.0.5(@types/node@22.5.5)(jsdom@22.1.0)(lightningcss@1.27.0)(terser@5.33.0)) concurrently: specifier: 8.2.2 version: 8.2.2 @@ -1061,9 +1052,6 @@ importers: '@leather.io/tsconfig-config': specifier: workspace:* version: link:../tsconfig-config - '@vitest/coverage-istanbul': - specifier: 0.34.6 - version: 0.34.6(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0)) eslint: specifier: 8.53.0 version: 8.53.0 @@ -5129,15 +5117,10 @@ packages: peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - '@vitest/coverage-istanbul@0.34.6': - resolution: {integrity: sha512-5KaBNZPDSk2ybavC3rZ1pWGniw7sJ5usuwVGRUYzJwiBfWvnLpuUer7bjw7qUCRGdKJXrBgb/Dsgif9rkwMX/A==} + '@vitest/coverage-v8@2.0.5': + resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==} peerDependencies: - vitest: '>=0.32.0 <1' - - '@vitest/coverage-v8@2.0.4': - resolution: {integrity: sha512-i4lx/Wpg5zF1h2op7j0wdwuEQxaL/YTwwQaKuKMHYj7MMh8c7I4W7PNfOptZBCSBZI0z1qwn64o0pM/pA8Tz1g==} - peerDependencies: - vitest: 2.0.4 + vitest: 2.0.5 '@vitest/expect@0.34.7': resolution: {integrity: sha512-G9iEtwrD6ZQ4MVHZufif9Iqz3eLtuwBBNx971fNAGPaugM7ftAWjQN+ob2zWhtzURp8RK3zGXOxVb01mFo3zAQ==} @@ -19812,33 +19795,7 @@ snapshots: graphql: 15.8.0 wonka: 4.0.15 - '@vitest/coverage-istanbul@0.34.6(vitest@2.0.5(@types/node@22.5.5)(jsdom@22.1.0)(lightningcss@1.27.0)(terser@5.33.0))': - dependencies: - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - picocolors: 1.1.0 - test-exclude: 6.0.0 - vitest: 2.0.5(@types/node@22.5.5)(jsdom@22.1.0)(lightningcss@1.27.0)(terser@5.33.0) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-istanbul@0.34.6(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0))': - dependencies: - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - picocolors: 1.1.0 - test-exclude: 6.0.0 - vitest: 2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0) - transitivePeerDependencies: - - supports-color - - '@vitest/coverage-v8@2.0.4(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0))': + '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@22.5.5)(jsdom@25.0.0)(lightningcss@1.27.0)(terser@5.33.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 diff --git a/vitest.workspace.js b/vitest.workspace.js index 2a82b5d7..62036813 100644 --- a/vitest.workspace.js +++ b/vitest.workspace.js @@ -7,7 +7,6 @@ export default defineWorkspace([ test: { include: 'src/**/*.spec.{ts,tsx}', coverage: { - provider: 'istanbul', reporter: ['text', 'json-summary', 'json', 'html', 'lcov'], reportsDirectory: './coverage', reportOnFailure: true,