name: Test on: push: pull_request: workflow_dispatch: inputs: short-integration-tests: description: 'Run only short integration tests' required: false default: false type: boolean jobs: nix-env: name: Initialize Nix runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Nix packages uses: diamondburned/cache-install@main generate: name: Generate needs: [nix-env] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Nix packages uses: diamondburned/cache-install@main - name: Generate run: | go generate ./... if ! git diff --exit-code; then echo '::error::Repository differ after `go generate`.' exit 1 fi build: name: Build runs-on: ubuntu-latest needs: [generate] steps: - uses: actions/checkout@v2 - name: Install Nix packages uses: diamondburned/cache-install@main - name: Build run: go build ./... unit-test: name: Unit Test runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v2 - name: Install Nix packages uses: diamondburned/cache-install@main - name: Test run: go test $TEST_FLAGS ./... env: TEST_FLAGS: >- -verbose=${{ runner.debug }} integration-test: name: Integration Test concurrency: integration-test runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v2 - name: Install Nix packages uses: diamondburned/cache-install@main - name: Test run: | go test -coverprofile /tmp/coverage.out -race $TEST_FLAGS ./... go tool cover -func /tmp/coverage.out env: TEST_FLAGS: >- -verbose=${{ runner.debug }} -short=${{ github.event-name == "workflow_dispatch" || github.event.inputs.short-integration-tests == 'true' }} CHANNEL_ID: ${{ secrets.CHANNEL_ID }} GUILD_ID: ${{ secrets.GUILD_ID }} VOICE_ID: ${{ secrets.VOICE_ID }} BOT_TOKEN: ${{ secrets.BOT_TOKEN }} - name: Upload coverage profile uses: actions/upload-artifact@v3 with: name: coverage path: /tmp/coverage.out