mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-10 12:09:31 +00:00
presubmit has slightly diverged from what we are runnning in CI, so things like running tests with user space emulation tend to break. This should make sure that presubmit continues to work. We can utilized user-space emulation as when we reorganize our tests to have unit tests that do not have special system requirements. Then CI will be running those tests with user-space emulation as well. BUG=b:244185215 TEST=./tools/presubmit [--quick/--all] Change-Id: I46f6498ad030ad50d42d3365c908a16e6573b5d7 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3867535 Commit-Queue: Dennis Kempin <denniskempin@google.com> Tested-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
117 lines
2.8 KiB
Bash
Executable file
117 lines
2.8 KiB
Bash
Executable file
#!/bin/bash
|
|
# Copyright 2021 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
set -e
|
|
|
|
cd "$(dirname $0)/.."
|
|
|
|
HELP="This will run presubmit checks for crosvm.
|
|
|
|
To run all checks just run
|
|
|
|
$ ./tools/presubmit
|
|
|
|
The checks can be run in parallel for faster execution:
|
|
|
|
$ ./tools/presubmit --tmux
|
|
|
|
This will open a tmux session to run all presubmit builds in parallel. It will
|
|
create a nested tmux session if you are already using it.
|
|
|
|
All tests are executed in the local development environment. If your host is not
|
|
set up for aarch64 builds, it will use './tools/dev_container' to build run
|
|
those.
|
|
|
|
There are three levels of presubmit tests that can be run:
|
|
|
|
$ ./tools/presubmit --quick
|
|
$ ./tools/presubmit
|
|
$ ./tools/presubmit --all
|
|
|
|
The quick mode will only cover x86 and does not require a dev_container. The
|
|
default mode will add aarch64 tests, and the all mode will test everything that
|
|
is also tested on Kokoro.
|
|
"
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-q | --quick)
|
|
QUICK=true
|
|
shift
|
|
;;
|
|
-a | --all)
|
|
ALL=true
|
|
shift
|
|
;;
|
|
--tmux)
|
|
RUN_IN_TMUX=true
|
|
shift
|
|
;;
|
|
-h | --help)
|
|
echo "$HELP"
|
|
exit 0
|
|
shift
|
|
;;
|
|
*)
|
|
echo "unknown argument $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
run_commands_in_tmux() {
|
|
local tmux_commands=(
|
|
set-option -g default-shell /bin/bash \;
|
|
new-session "$1; read -p 'Press enter to close.'" \;
|
|
)
|
|
for cmd in "${@:2}"; do
|
|
tmux_commands+=(
|
|
split-window -h "$cmd; read -p 'Press enter to close.'" \;
|
|
)
|
|
done
|
|
tmux_commands+=(
|
|
select-layout even-horizontal \;
|
|
)
|
|
TMUX="" tmux "${tmux_commands[@]}"
|
|
}
|
|
|
|
run_commands() {
|
|
for cmd in "$@"; do
|
|
echo "$ ${cmd}"
|
|
bash -c "$cmd"
|
|
echo
|
|
done
|
|
}
|
|
|
|
aarch64_wrapper() {
|
|
if ! (rustup target list --installed | grep -q aarch64 &&
|
|
dpkg --print-foreign-architectures | grep -q arm64); then
|
|
echo "./tools/dev_container"
|
|
fi
|
|
}
|
|
|
|
commands=(
|
|
"./tools/health-check"
|
|
"./tools/run_tests --target=host"
|
|
)
|
|
|
|
if [ "$ALL" == true ]; then
|
|
commands+=(
|
|
"$(aarch64_wrapper) ./tools/run_tests --target=vm:aarch64"
|
|
"$(aarch64_wrapper) ./tools/run_tests --target=vm:aarch64 --build-target=armhf"
|
|
"./tools/run_tests --target=host --build-target=mingw64 --build-only"
|
|
"cargo build --verbose --no-default-features"
|
|
)
|
|
elif [ "$QUICK" != true ]; then
|
|
commands+=(
|
|
"$(aarch64_wrapper) ./tools/run_tests --target=vm:aarch64"
|
|
"./tools/run_tests --target=host --build-target=mingw64 --build-only"
|
|
)
|
|
fi
|
|
|
|
if [ "$RUN_IN_TMUX" = true ]; then
|
|
run_commands_in_tmux "${commands[@]}"
|
|
else
|
|
run_commands "${commands[@]}"
|
|
fi
|