diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml new file mode 100644 index 0000000..d315a1b --- /dev/null +++ b/.github/workflows/run-tests.yaml @@ -0,0 +1,18 @@ +name: Run tests +run-name: Run tests +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + run-tests: + runs-on: ubuntu-22.04 + steps: + - name: Check out source Repo + uses: actions/checkout@v3 + - name: Build test container image + run: docker build -t test_image . + - name: Run tests in container image + run: docker run --rm -i test_image cargo test diff --git a/Dockerfile b/Dockerfile index fca0812..955eeec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,9 +8,15 @@ COPY ./Cargo.toml . COPY ./Cargo.lock . COPY ./rust-toolchain.toml . COPY ./x86_64-os.json . +COPY ./tests ./tests +RUN apt-get update && \ + apt-get install qemu-system -y RUN cargo install bootimage && \ + rustup toolchain install nightly-aarch64-unknown-linux-gnu && \ + rustup toolchain install nightly-x86_64-unknown-linux-gnu && \ rustup component add rust-src --toolchain nightly-aarch64-unknown-linux-gnu && \ + rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu && \ rustup component add llvm-tools-preview CMD ["cargo","bootimage"] diff --git a/README.md b/README.md index 2b244d7..44a5e3f 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,17 @@ Hobby OS implementation in Rust ```bash qemu-system-x86_64 -drive format=raw,file=target/x86_64-os/debug/bootimage-os.bin ``` + +## Tests + +Run tests in Docker: + +```bash +docker run --rm -it $(docker build -q -f Dockerfile.test .) +``` + +Run tests on host system: + +```bash +cargo test +```