1#!/bin/bash -x
2
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15GET_FEATURES="$(pwd)/ci/get_features.py"
16CARGO_TOML="$(pwd)/sim/Cargo.toml"
17
18pushd sim
19
20all_features="$(${GET_FEATURES} ${CARGO_TOML})"
21[ $? -ne 0 ] && exit 1
22
23EXIT_CODE=0
24
25if [[ ! -z $SINGLE_FEATURES ]]; then
26  if [[ $SINGLE_FEATURES =~ "none" ]]; then
27    echo "Running cargo with no features"
28    time cargo test --no-run
29    time cargo test
30    rc=$? && [ $rc -ne 0 ] && EXIT_CODE=$rc
31  fi
32
33  for feature in $all_features; do
34    if [[ $SINGLE_FEATURES =~ $feature ]]; then
35      echo "Running cargo for feature=\"${feature}\""
36      time cargo test --no-run --features $feature
37      time cargo test --features $feature
38      rc=$? && [ $rc -ne 0 ] && EXIT_CODE=$rc
39    fi
40  done
41fi
42
43if [[ ! -z $MULTI_FEATURES ]]; then
44  IFS=','
45  read -ra multi_features <<< "$MULTI_FEATURES"
46
47  # psa crypto tests require single thread mode
48  TEST_ARGS=''
49  for features in "${multi_features[@]}"; do
50    if [[ $features =~ "psa" ]]; then
51        TEST_ARGS='--test-threads=1'
52        break
53    fi
54  done
55
56  for features in "${multi_features[@]}"; do
57    echo "Running cargo for features=\"${features}\""
58    time cargo test --no-run --features "$features" -- $TEST_ARGS
59    time cargo test --features "$features" -- $TEST_ARGS
60    rc=$? && [ $rc -ne 0 ] && EXIT_CODE=$rc
61  done
62fi
63
64popd
65exit $EXIT_CODE
66