# Running the machine tests This document is a quick how-to run machine tests. Not all dependencies, like `gvproxy` are documented. You must install `gvproxy` in all cases described below. ## General notes ### Environment must be clean You must not have any machines defined before running tests. Consider running `podman machine reset` prior to running tests. ### ### Scoping tests You can scope tests in the machine suite by adding various incantations of `FOCUS=`. For example, add `FOCUS_FILE=basic_test.go` to only run basic test. Or add `FOCUS="simple init with start"` to only run one test case. For windows, the syntax differs slightly. In windows, executing something like following achieves the same result: `./winmake localmachine "basic_test.go start_test.go"` To focus on one specific test on windows, run `ginkgo` manually: ```pwsh $remotetags = "remote exclude_graphdriver_btrfs containers_image_openpgp" $focus_file = "basic_test.go" $focus_test = "podman build contexts" ./test/tools/build/ginkgo.exe ` -v --tags "$remotetags" -timeout=90m --trace --no-color ` --focus-file $focus_file ` --focus "$focus_test" ` ./pkg/machine/e2e/. ``` Note that ginkgo.exe is built when running the command `winmake.ps1 localmachine` so make sure to run it before trying the command above. ## Linux ### QEMU 1. `make localmachine` ## Microsoft Windows ### Hyper-V 1. Open a powershell as admin 1. `.\winmake.ps1 podman-remote && .\winmake.ps1 win-gvproxy` 1. `$env:CONTAINERS_HELPER_BINARY_DIR="$pwd\bin\windows"` 1. `$env:CONTAINERS_MACHINE_PROVIDER="hyperv"` 1. `.\winmake localmachine` ### WSL 1. Open a powershell as a regular user 1. `.\winmake.ps1 podman-remote && .\winmake.ps1 win-gvproxy` 1. `$env:CONTAINERS_HELPER_BINARY_DIR="$pwd\bin\windows"` 1. `$env:CONTAINERS_MACHINE_PROVIDER="wsl"` 1. `.\winmake localmachine` ## MacOS Macs now support two different machine providers: `applehv` and `libkrun`. The `applehv` provider is the default. Note: On macOS, an error will occur if the path length of `$TMPDIR` is longer than 22 characters. Please set the appropriate path to `$TMPDIR`. Also, if `$TMPDIR` is empty, `/private/tmp` will be set. ### Apple Hypervisor 1. `brew install vfkit` 1. `make podman-remote` 1. `make localmachine` ### [Libkrun](https://github.com/containers/libkrun) 1. `brew install krunkit` 1. `make podman-remote` 1. `export CONTAINERS_MACHINE_PROVIDER="libkrun"` 1. `make localmachine`