name: Unit Test Coverage on: push: paths-ignore: - "**.md" - "channel.yaml" - "install.sh" - "tests/snapshotter/**" - "tests/install/**" - "tests/cgroup/**" - ".github/**" - "!.github/workflows/unitcoverage.yaml" pull_request: paths-ignore: - "**.md" - "channel.yaml" - "install.sh" - "tests/snapshotter/**" - "tests/install/**" - "tests/cgroup/**" - ".github/**" - "!.github/workflows/unitcoverage.yaml" workflow_dispatch: {} permissions: contents: read jobs: test-unit-linux: name: Unit Tests (linux) runs-on: ubuntu-24.04 timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 1 - name: Install Go uses: ./.github/actions/setup-go - name: Run Unit Tests run: | go test -coverpkg ./pkg/... -coverprofile coverage.out ./pkg/... -run Unit go tool cover -func coverage.out - name: On Failure, Launch Debug Session if: ${{ failure() }} uses: lhotari/action-upterm@b0357f23233f5ea6d58947c0c402e0631bab7334 # v1 with: wait-timeout-minutes: 5 - name: Upload Results To Codecov uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./coverage.out flags: unittests # optional verbose: true # optional (default = false) test-unit-windows: name: Unit Tests (windows) runs-on: windows-2022 timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 1 - name: Install Go uses: ./.github/actions/setup-go - name: Run Unit Tests run: | go test -coverpkg ./pkg/... -coverprofile coverage.out ./pkg/... -run Unit go tool cover -func coverage.out - name: Upload Results To Codecov uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./coverage.out flags: unittests # optional verbose: true # optional (default = false) test-mods: name: Test K8s Modules runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Build test-mods run: docker build --target test-mods -t k3s:mod -f Dockerfile.test . - name: Run test-mods run: docker run -i k3s:mod