## Run the Taskwarrior tests, using stable rust to build TaskChampion. name: tests on: [push, pull_request] jobs: coverage: runs-on: ubuntu-latest steps: - name: Install apt packages run: sudo apt-get install -y build-essential cmake git uuid-dev faketime locales python3 curl gcovr ninja-build - name: Check out this repository uses: actions/checkout@v4.1.6 - name: Configure project run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=--coverage - name: Build project run: cmake --build build --target build_tests - name: Test project run: ctest --test-dir build -j 8 --output-on-failure - name: Generate a code coverage report uses: threeal/gcovr-action@v1.0.0 with: coveralls-out: coverage.coveralls.json excludes: | build - name: Sent to Coveralls uses: coverallsapp/github-action@v2 with: file: coverage.coveralls.json # MacOS tests do not run in Docker, and use the actions-rs Rust installaction tests-macos-12: needs: coverage name: tests (Mac OS 12.latest) if: false # see #3242 runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Cache cargo registry uses: actions/cache@v4 with: path: ~/.cargo/registry key: ${{ runner.os }}-stable-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@v4 with: path: target key: ${{ runner.os }}-stable-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: toolchain: "stable" override: true - name: Test MacOS run: bash test/scripts/test_macos.sh env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} tests-macos-13: needs: coverage name: tests (Mac OS 13.latest) if: false # see #3242 runs-on: macos-13 steps: - uses: actions/checkout@v4 - name: Cache cargo registry uses: actions/cache@v4 with: path: ~/.cargo/registry key: ${{ runner.os }}-stable-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@v4 with: path: target key: ${{ runner.os }}-stable-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: toolchain: "stable" override: true - name: Test MacOS run: bash test/scripts/test_macos.sh env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} tests: needs: coverage strategy: fail-fast: false matrix: include: - name: "Fedora 40" runner: ubuntu-latest dockerfile: fedora40 - name: "Fedora 39" runner: ubuntu-latest dockerfile: fedora39 - name: "Debian Testing" runner: ubuntu-latest dockerfile: debiantesting - name: "Ubuntu 20.04" runner: ubuntu-latest dockerfile: ubuntu2004 - name: "Ubuntu 22.04" runner: ubuntu-latest dockerfile: ubuntu2204 - name: "OpenSUSE Tumbleweed (Rolling)" runner: ubuntu-latest dockerfile: opensuse - name: "Archlinux Base (Rolling)" runner: ubuntu-latest dockerfile: arch runs-on: ${{ matrix.runner }} continue-on-error: ${{ matrix.continue-on-error == true }} steps: - uses: actions/checkout@v4 - name: Build ${{ matrix.name }} env: DOCKER_REGISTRY: docker.pkg.github.com DOCKER_CACHE_IMAGE: docker.pkg.github.com/${{ github.repository }}/taskwarrior_cache GITHUB_USER: ${{ github.actor }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CONTAINER: ${{ matrix.dockerfile }} run: docker compose build test-${{ env.CONTAINER }} - name: Test ${{ matrix.name }} run: docker compose run test-${{ env.CONTAINER }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CONTAINER: ${{ matrix.dockerfile }}