Skip to content

Test

Test #22

Workflow file for this run

name: Build Linux
on:
push:
jobs:
build-linux-kernel:
uses: ./.github/workflows/build-linux.yml
secrets: inherit
test:
needs: [build-linux-kernel]
name: Test and coverage
runs-on: ubuntu-22.04
env:
LLVM_GSYMUTIL: /usr/bin/llvm-gsymutil-14
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
- name: Install required tools
run: sudo apt-get install -y llvm-14
# We don't want a custom test runner because we run in a VM.
- name: Remove .cargo/config.toml
run: rm .cargo/config.toml
- name: Build main.sh
env:
ARTIFACT_URL: ${{ needs.build-linux-kernel.outputs.kernel-artifact-url }}
PYTHON: ${{ steps.py312.outputs.python-path }}
run: |
cargo test --no-run
# Yes, there appears to be no way to just retrieve the
# uploaded artifact. One can't use actions/download-artifact
# and provide any of the outputs of actions/upload-artifact.
# Neither does it seem possible to just download the thing
# directly, because contents are unconditionally zipped. Good.
# Lord.
curl --location \
--fail-with-body \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
--header "X-GitHub-Api-Version: 2022-11-28" \
--output artifact.zip \
"${ARTIFACT_URL}"
# This unzip will produce the kernel bzImage.
unzip artifact.zip
cat <<EOF > main.sh
set -e
export PYTHON=${PYTHON}
cargo test --features=dont-generate-unit-test-files -- --include-ignored
EOF
cat main.sh
chmod a+x main.sh
- name: Test
uses: danobi/vmtest-action@master
with:
kernel: bzImage
command: sh -c 'cd ${{ github.workspace }} && ./main.sh'