summaryrefslogtreecommitdiffhomepage
path: root/test/scripts/test-utils.sh
diff options
context:
space:
mode:
authorMagnus Lindstrom <magnus.lindstrom@mullvad.net>2024-08-16 10:06:33 +0200
committerMagnus Lindstrom <magnus.lindstrom@mullvad.net>2024-08-16 14:17:44 +0200
commitb0ccea7e5c0d2946dea2acf4462977d410c85bab (patch)
tree78bc77d112ddedc88e35159db60edbe4d4271a8c /test/scripts/test-utils.sh
parent172d9da83582d7e2522e4c7861713b4572e08dcc (diff)
downloadmullvadvpn-b0ccea7e5c0d2946dea2acf4462977d410c85bab.tar.xz
mullvadvpn-b0ccea7e5c0d2946dea2acf4462977d410c85bab.zip
Remove cargo dependency when running e2e tests
This commit enables the usage of the dist/ directory, and also adds mullvad-version to it so that test-by-version.sh can operate without rust installed at all. To make use of predefined binaries in a separate directory, refer to that directory by using the env var TEST_DIST_DIR=<dir path> and the binaries will be used if they can be found there. If TEST_DIST_DIR is specified, all of the following binaries need to be there: - connection-checker - mullvad-version - test-manager - test-runner Also added a /dev/null redirect of a cd output so that one's able to use CDPATH while running the tests.
Diffstat (limited to 'test/scripts/test-utils.sh')
-rwxr-xr-xtest/scripts/test-utils.sh51
1 files changed, 41 insertions, 10 deletions
diff --git a/test/scripts/test-utils.sh b/test/scripts/test-utils.sh
index 3486483600..8a3745725f 100755
--- a/test/scripts/test-utils.sh
+++ b/test/scripts/test-utils.sh
@@ -2,6 +2,11 @@
set -eu
+function executable_not_found_in_dist_error {
+ 1>&2 echo "Executable \"$1\" not found in specified dist dir. Exiting."
+ exit 1
+}
+
# Returns the directory of the test-utils.sh script
function get_test_utls_dir {
local script_path="${BASH_SOURCE[0]}"
@@ -24,7 +29,14 @@ LATEST_STABLE_RELEASE=$(jq -r '[.[] | select(.prerelease==false)] | .[0].tag_nam
function get_current_version {
local app_dir
app_dir="$(get_test_utls_dir)/../.."
- cargo run -q --manifest-path="$app_dir/Cargo.toml" --bin mullvad-version
+ if [ -n "${TEST_DIST_DIR+x}" ]; then
+ if [ ! -x "${TEST_DIST_DIR%/}/mullvad-version" ]; then
+ executable_not_found_in_dist_error mullvad-version
+ fi
+ "${TEST_DIST_DIR%/}/mullvad-version"
+ else
+ cargo run -q --manifest-path="$app_dir/Cargo.toml" --bin mullvad-version
+ fi
}
CURRENT_VERSION=$(get_current_version)
@@ -224,12 +236,20 @@ function run_tests_for_os {
exit 1
fi
- echo "**********************************"
- echo "* Building test runner"
- echo "**********************************"
-
- nice_time build_test_runner "$vm"
+ if [ -n "${TEST_DIST_DIR+x}" ]; then
+ if [ ! -x "${TEST_DIST_DIR%/}/test-runner" ]; then
+ executable_not_found_in_dist_error test-runner
+ fi
+ echo "**********************************"
+ echo "* Using test-runner in $TEST_DIST_DIR"
+ echo "**********************************"
+ else
+ echo "**********************************"
+ echo "* Building test runner"
+ echo "**********************************"
+ nice_time build_test_runner "$vm"
+ fi
echo "**********************************"
echo "* Running tests"
@@ -256,8 +276,18 @@ function run_tests_for_os {
test_dir=$(get_test_utls_dir)/..
read -ra test_filters_arg <<<"${TEST_FILTERS:-}" # Split the string by words into an array
pushd "$test_dir"
- if ! RUST_LOG_STYLE=always cargo run --bin test-manager \
- run-tests \
+ if [ -n "${TEST_DIST_DIR+x}" ]; then
+ if [ ! -x "${TEST_DIST_DIR%/}/test-manager" ]; then
+ executable_not_found_in_dist_error test-manager
+ fi
+ test_manager="${TEST_DIST_DIR%/}/test-manager"
+ runner_dir_flag=("--runner-dir" "$TEST_DIST_DIR")
+ else
+ test_manager="cargo run --bin test-manager"
+ runner_dir_flag=()
+ fi
+
+ if ! RUST_LOG_STYLE=always $test_manager run-tests \
--account "${ACCOUNT_TOKEN:?Error: ACCOUNT_TOKEN not set}" \
--app-package "${APP_PACKAGE:?Error: APP_PACKAGE not set}" \
"${upgrade_package_arg[@]}" \
@@ -265,6 +295,7 @@ function run_tests_for_os {
--package-dir "${package_dir}" \
--vm "$vm" \
"${test_filters_arg[@]}" \
+ "${runner_dir_flag[@]}" \
2>&1 | sed -r "s/${ACCOUNT_TOKEN}/\{ACCOUNT_TOKEN\}/g"; then
echo "Test run failed"
exit 1
@@ -279,7 +310,7 @@ function build_current_version {
app_dir="$(get_test_utls_dir)/../.."
local app_filename
# TODO: TEST_OS must be set to local OS manually, should be set automatically
- app_filename=$(get_app_filename "$CURRENT_VERSION" "${TEST_OS:?Error: TEST_OS not set}")
+ app_filename=$(get_app_filename "$CURRENT_VERSION" "${TEST_OS:?Error: TEST_OS not set}")
local package_dir
package_dir=$(get_package_dir)
local app_package="$package_dir"/"$app_filename"
@@ -310,4 +341,4 @@ function build_current_version {
else
echo "GUI e2e executable for current version already exists at $gui_test_bin, skipping build"
fi
-} \ No newline at end of file
+}