blob: 3de56ed229e57ed5db7a1017c62a6c40e4bcc433 [file] [log] [blame]
Tomás González010b6372025-04-29 17:13:47 +01001#!/usr/bin/env bash
2#
3# Copyright (c) 2025 Arm Limited. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
Tomás González3286e4b2025-06-05 18:25:09 +01008set -ex
9
Tomás González010b6372025-04-29 17:13:47 +010010echo '----------------------------------------------'
11echo '-- Running Cargo tests --'
12echo '----------------------------------------------'
13
14export LOG_TEST_FILENAME=$(pwd)/next-generic-checks.log
15export RUSTUP_HOME=/usr/local/rustup
16
Tomás González3286e4b2025-06-05 18:25:09 +010017REPO_SPACE=$1
18REPO_NAME=$2
Tomás González3286e4b2025-06-05 18:25:09 +010019
20cd "${REPO_NAME}"
21
Tomás González010b6372025-04-29 17:13:47 +010022TEST_CASE="cargo test checks"
23
24echo "# ${TEST_CASE}"
25echo >> "$LOG_TEST_FILENAME"
26echo "****** $TEST_CASE ******" >> "$LOG_TEST_FILENAME"
27echo >> "$LOG_TEST_FILENAME"
28
Tomás González010b6372025-04-29 17:13:47 +010029ERROR_COUNT=0
30
31# Run cargo test
32
Tomás Gonzálezeaa86c42025-07-28 12:19:15 +010033if [ "$REPO_NAME" == "rusted-firmware-a" ]; then
Tomás Gonzálezafd25082025-06-10 11:44:55 +010034 # These tests are platform independent. However, we are specifying a platform:
35 # The fvp platform is expected to cover all platform independent features that can be tested
36 # with cargo test.
37 IFS=" " read -a all_features <<< "$(make PLAT=fvp --silent list_features)"
Tomás González3286e4b2025-06-05 18:25:09 +010038else
Tomás Gonzálezeb05c392025-06-12 15:48:54 +010039 IFS=" " read -a all_features <<< ${TEST_FEATURES}
40 if [ ${#all_features[@]} = 0 ]; then
41 all_features+=("")
42 fi
Tomás González3286e4b2025-06-05 18:25:09 +010043fi
44
Tomás González010b6372025-04-29 17:13:47 +010045for features in "${all_features[@]}"; do
Tomás Gonzálezafd25082025-06-10 11:44:55 +010046 features=$(echo $features | sed "s/'//g")
Tomás González010b6372025-04-29 17:13:47 +010047 echo "cargo test features: '$features'" >> "$LOG_TEST_FILENAME" 2>&1
48 cargo test --features=$features >> "$LOG_TEST_FILENAME" 2>&1
49
50 if [ "$?" != 0 ]; then
51 echo "cargo test --features='$features': FAILURE"
52 ((ERROR_COUNT++))
53 else
54 echo "cargo test --features='$features': PASS"
55 fi
56
57 echo "-------------------------------------" >> "$LOG_TEST_FILENAME" 2>&1
58done
59
60echo
61
Tomás Gonzálezeb05c392025-06-12 15:48:54 +010062# Run cargo doc
63
Tomás Gonzálezeaa86c42025-07-28 12:19:15 +010064if [ "$REPO_NAME" != "rusted-firmware-a" ]; then
Tomás González2e7e1562025-06-18 14:34:34 +010065 echo "cargo doc --no-deps" >> "$LOG_TEST_FILENAME" 2>&1
Tomás Gonzálezeb05c392025-06-12 15:48:54 +010066
Tomás González2e7e1562025-06-18 14:34:34 +010067 RUSTDOCFLAGS="-D warnings" cargo doc --no-deps >> "$LOG_TEST_FILENAME" 2>&1
Tomás Gonzálezeb05c392025-06-12 15:48:54 +010068
Tomás González2e7e1562025-06-18 14:34:34 +010069 if [ "$?" != 0 ]; then
70 echo "cargo doc: FAILURE"
71 ((ERROR_COUNT++))
72 else
73 echo "cargo doc: PASS"
74 fi
75
76 echo "-------------------------------------" >> "$LOG_TEST_FILENAME" 2>&1
Tomás Gonzálezeb05c392025-06-12 15:48:54 +010077fi
78
Tomás González010b6372025-04-29 17:13:47 +010079cd -
80if [ "$ERROR_COUNT" != 0 ]; then
Tomás Gonzálezeb05c392025-06-12 15:48:54 +010081 echo "Some cargo checks have failed."
Tomás González010b6372025-04-29 17:13:47 +010082 exit 1
83fi
84
85exit 0