From f10f4cdcd88ca6be7ec735ed3a415ba13da83db0 Mon Sep 17 00:00:00 2001 From: ckohen Date: Sun, 3 Jul 2022 06:33:18 -0700 Subject: [PATCH] feat: codecov (#8219) --- .github/workflows/test.yml | 4 ++ codecov.yml | 26 ++++++++++ package.json | 2 +- packages/actions/package.json | 1 + .../actions/src/uploadCoverage/action.yml | 52 +++++++++++++++++++ packages/builders/package.json | 1 + packages/collection/package.json | 1 + packages/docgen/package.json | 1 + packages/proxy/package.json | 1 + packages/rest/package.json | 1 + packages/scripts/package.json | 1 + packages/website/package.json | 1 + vitest.config.ts | 7 ++- 13 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 codecov.yml create mode 100644 packages/actions/src/uploadCoverage/action.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 662aff7a2..d3ae682bc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,5 +33,9 @@ jobs: - name: Tests run: yarn test + - name: Upload Coverage + uses: ./packages/actions/src/uploadCoverage + if: github.repository_owner == 'discordjs' + - name: Build run: yarn build --cache-dir=".turbo" diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 000000000..8b363613c --- /dev/null +++ b/codecov.yml @@ -0,0 +1,26 @@ +codecov: + notify: + after_n_builds: 6 + strict_yaml_branch: main + +coverage: + range: '50...90' + status: + project: + default: + target: auto + threshold: 5% + informational: true + patch: off + +flag_management: + default_rules: + statuses: + - type: project + target: auto + threshold: 2% + informational: true + +comment: + require_changes: true + after_n_builds: 6 diff --git a/package.json b/package.json index d220d777b..b8359d653 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "build": "turbo run build", - "test": "turbo run test && vitest run", + "test": "turbo run test", "lint": "turbo run lint", "format": "turbo run format", "fmt": "turbo run format", diff --git a/packages/actions/package.json b/packages/actions/package.json index 2767294bc..7fa66ee60 100644 --- a/packages/actions/package.json +++ b/packages/actions/package.json @@ -4,6 +4,7 @@ "description": "A set of actions that we use for our workflows", "private": true, "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src __tests__ --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src __tests__ --ext mjs,js,ts --fix --cache" diff --git a/packages/actions/src/uploadCoverage/action.yml b/packages/actions/src/uploadCoverage/action.yml new file mode 100644 index 000000000..4ce1690bd --- /dev/null +++ b/packages/actions/src/uploadCoverage/action.yml @@ -0,0 +1,52 @@ +name: 'Upload Coverage' +description: 'Uploads code coverage reports to codecov with separate flags for separate packages' +runs: + using: 'composite' + steps: + - name: Upload Builders Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/builders/coverage/clover.xml + flags: builders + + - name: Upload Collection Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/collection/coverage/clover.xml + flags: collection + + - name: Upload Discord.js Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/discord.js/coverage/clover.xml + flags: discord.js + + - name: Upload Proxy Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/proxy/coverage/clover.xml + flags: proxy + + - name: Upload Rest Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/rest/coverage/clover.xml + flags: rest + + - name: Upload Voice Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/voice/coverage/clover.xml + flags: voice + + - name: Upload Website Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/website/coverage/clover.xml + flags: website + + - name: Upload Utilities Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/actions/coverage/clover.xml, ./packages/docgen/coverage/clover.xml, ./packages/scripts/coverage/clover.xml + flags: utilities diff --git a/packages/builders/package.json b/packages/builders/package.json index f886feee6..4e34a3d52 100644 --- a/packages/builders/package.json +++ b/packages/builders/package.json @@ -3,6 +3,7 @@ "version": "0.16.0-dev", "description": "A set of builders that you can use when creating your bot", "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src __tests__ --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src __tests__ --ext mjs,js,ts --fix --cache", diff --git a/packages/collection/package.json b/packages/collection/package.json index ce29541bc..9593043a4 100644 --- a/packages/collection/package.json +++ b/packages/collection/package.json @@ -3,6 +3,7 @@ "version": "0.8.0-dev", "description": "Utility data structure used in discord.js", "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src __tests__ --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src __tests__ --ext mjs,js,ts --fix --cache", diff --git a/packages/docgen/package.json b/packages/docgen/package.json index 50fd34329..0f30da9d2 100644 --- a/packages/docgen/package.json +++ b/packages/docgen/package.json @@ -3,6 +3,7 @@ "version": "0.12.0-dev", "description": "The docs.json generator for discord.js and its related projects", "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src --ext mjs,js,ts --fix --cache", diff --git a/packages/proxy/package.json b/packages/proxy/package.json index 37582b168..a535d5b62 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -3,6 +3,7 @@ "version": "1.0.0-dev", "description": "Tools for running an HTTP proxy for Discord's API", "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src __tests__ --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src __tests__ --ext mjs,js,ts --fix --cache", diff --git a/packages/rest/package.json b/packages/rest/package.json index be8f420e3..26cfa2711 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -3,6 +3,7 @@ "version": "0.6.0-dev", "description": "The REST API for discord.js", "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src __tests__ --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src __tests__ --ext mjs,js,ts --fix --cache", diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 8532b4f93..8ae25c9dd 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -4,6 +4,7 @@ "description": "A set of scripts that we use for our workflows", "private": true, "scripts": { + "test": "vitest run", "build": "tsup", "lint": "prettier --cache --check . && eslint src --ext mjs,js,ts --cache", "format": "prettier --cache --write . && eslint src --ext mjs,js,ts --fix --cache" diff --git a/packages/website/package.json b/packages/website/package.json index 57beae214..c962c658a 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -4,6 +4,7 @@ "description": "A set of builders that you can use when creating your bot", "private": true, "scripts": { + "test": "vitest run", "build": "yarn build:css && yarn build:remix", "build:css": "yarn generate:css", "build:remix": "remix build", diff --git a/vitest.config.ts b/vitest.config.ts index 392781545..e82dbbdcb 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,12 +2,15 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { - exclude: ['**/node_modules', '**/dist', '.idea', '.git', '.cache', 'packages/discord.js', 'packages/voice'], + exclude: ['**/node_modules', '**/dist', '.idea', '.git', '.cache'], passWithNoTests: true, coverage: { enabled: true, + all: true, reporter: ['text', 'lcov', 'clover'], - exclude: ['**/dist', '**/__tests__'], + include: ['src'], + // All ts files that only contain types, due to ALL + exclude: ['**/*.{interface,type,d}.ts'], }, }, });