2
2
3
3
set -eu
4
4
5
+ function executable_not_found_in_dist_error {
6
+ 1>&2 echo " Executable \" $1 \" not found in specified dist dir. Exiting."
7
+ exit 1
8
+ }
9
+
5
10
# Returns the directory of the test-utils.sh script
6
11
function get_test_utls_dir {
7
12
local script_path=" ${BASH_SOURCE[0]} "
@@ -24,7 +29,14 @@ LATEST_STABLE_RELEASE=$(jq -r '[.[] | select(.prerelease==false)] | .[0].tag_nam
24
29
function get_current_version {
25
30
local app_dir
26
31
app_dir=" $( get_test_utls_dir) /../.."
27
- cargo run -q --manifest-path=" $app_dir /Cargo.toml" --bin mullvad-version
32
+ if [ -n " ${TEST_DIST_DIR+x} " ]; then
33
+ if [ ! -x " ${TEST_DIST_DIR%/ } /mullvad-version" ]; then
34
+ executable_not_found_in_dist_error mullvad-version
35
+ fi
36
+ " ${TEST_DIST_DIR%/ } /mullvad-version"
37
+ else
38
+ cargo run -q --manifest-path=" $app_dir /Cargo.toml" --bin mullvad-version
39
+ fi
28
40
}
29
41
30
42
CURRENT_VERSION=$( get_current_version)
@@ -224,12 +236,20 @@ function run_tests_for_os {
224
236
exit 1
225
237
fi
226
238
227
- echo " **********************************"
228
- echo " * Building test runner"
229
- echo " **********************************"
230
-
231
- nice_time build_test_runner " $vm "
239
+ if [ -n " ${TEST_DIST_DIR+x} " ]; then
240
+ if [ ! -x " ${TEST_DIST_DIR%/ } /test-runner" ]; then
241
+ executable_not_found_in_dist_error test-runner
242
+ fi
232
243
244
+ echo " **********************************"
245
+ echo " * Using test-runner in $TEST_DIST_DIR "
246
+ echo " **********************************"
247
+ else
248
+ echo " **********************************"
249
+ echo " * Building test runner"
250
+ echo " **********************************"
251
+ nice_time build_test_runner " $vm "
252
+ fi
233
253
234
254
echo " **********************************"
235
255
echo " * Running tests"
@@ -256,15 +276,26 @@ function run_tests_for_os {
256
276
test_dir=$( get_test_utls_dir) /..
257
277
read -ra test_filters_arg <<< " ${TEST_FILTERS:-}" # Split the string by words into an array
258
278
pushd " $test_dir "
259
- if ! RUST_LOG_STYLE=always cargo run --bin test-manager \
260
- run-tests \
279
+ if [ -n " ${TEST_DIST_DIR+x} " ]; then
280
+ if [ ! -x " ${TEST_DIST_DIR%/ } /test-manager" ]; then
281
+ executable_not_found_in_dist_error test-manager
282
+ fi
283
+ test_manager=" ${TEST_DIST_DIR%/ } /test-manager"
284
+ runner_dir_flag=(" --runner-dir" " $TEST_DIST_DIR " )
285
+ else
286
+ test_manager=" cargo run --bin test-manager"
287
+ runner_dir_flag=()
288
+ fi
289
+
290
+ if ! RUST_LOG_STYLE=always $test_manager run-tests \
261
291
--account " ${ACCOUNT_TOKEN:? Error: ACCOUNT_TOKEN not set} " \
262
292
--app-package " ${APP_PACKAGE:? Error: APP_PACKAGE not set} " \
263
293
" ${upgrade_package_arg[@]} " \
264
294
" ${test_report_arg[@]} " \
265
295
--package-dir " ${package_dir} " \
266
296
--vm " $vm " \
267
297
" ${test_filters_arg[@]} " \
298
+ " ${runner_dir_flag[@]} " \
268
299
2>&1 | sed -r " s/${ACCOUNT_TOKEN} /\{ACCOUNT_TOKEN\}/g" ; then
269
300
echo " Test run failed"
270
301
exit 1
@@ -279,7 +310,7 @@ function build_current_version {
279
310
app_dir=" $( get_test_utls_dir) /../.."
280
311
local app_filename
281
312
# TODO: TEST_OS must be set to local OS manually, should be set automatically
282
- app_filename=$( get_app_filename " $CURRENT_VERSION " " ${TEST_OS:? Error: TEST_OS not set} " )
313
+ app_filename=$( get_app_filename " $CURRENT_VERSION " " ${TEST_OS:? Error: TEST_OS not set} " )
283
314
local package_dir
284
315
package_dir=$( get_package_dir)
285
316
local app_package=" $package_dir " /" $app_filename "
@@ -310,4 +341,4 @@ function build_current_version {
310
341
else
311
342
echo " GUI e2e executable for current version already exists at $gui_test_bin , skipping build"
312
343
fi
313
- }
344
+ }
0 commit comments