diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 662aff7a2d18..d3ae682bc27f 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 000000000000..8b363613c007 --- /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 d220d777bbde..b8359d6538de 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 2767294bc668..7fa66ee60b35 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 000000000000..4ce1690bd02f --- /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 f886feee6081..4e34a3d521dd 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 ce29541bc11d..9593043a44e2 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 50fd343293e8..0f30da9d247f 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 37582b1682ab..a535d5b62f4f 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 be8f420e38bc..26cfa2711c56 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 8532b4f9351e..8ae25c9dd804 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 57beae214849..c962c658a1fd 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 392781545183..e82dbbdcb7b2 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'], }, }, });