diff --git a/.travis.yml b/.travis.yml index 5772328a..8d4530f6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,10 @@ # Travis configuration. Build the simulator and run its tests. +addons: + apt: + packages: + - "python3-pip" + language: rust cache: diff --git a/ci/get_features.py b/ci/get_features.py new file mode 100755 index 00000000..3220dc3b --- /dev/null +++ b/ci/get_features.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +# Copyright 2020 JUUL Labs +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import os.path +import toml + +parser = argparse.ArgumentParser(description='Print features from a Cargo.toml.') +parser.add_argument('infile', help='Input file to parse') + +args = parser.parse_args() +if not os.path.isfile(args.infile): + print("File not found") + exit(1) + +try: + cargo_toml = open(args.infile).read() +except Exception: + print("Error reading \"{}\"".format(args.infile)) + exit(1) + +config = toml.loads(cargo_toml) +if 'features' not in config: + print("Missing \"[features]\" section") + exit(1) + +print(" ".join([k for k in config['features'] if k != 'default'])) diff --git a/ci/requirements.txt b/ci/requirements.txt new file mode 100644 index 00000000..bd79a658 --- /dev/null +++ b/ci/requirements.txt @@ -0,0 +1 @@ +toml diff --git a/ci/sim_install.sh b/ci/sim_install.sh index b9a4caea..8ec96cf4 100755 --- a/ci/sim_install.sh +++ b/ci/sim_install.sh @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +pip3 install --user -r ci/requirements.txt + pushd sim && cargo fetch [[ $? -ne 0 ]] && exit 1 popd diff --git a/ci/sim_run.sh b/ci/sim_run.sh index 3a9b0dff..6c0e3f27 100755 --- a/ci/sim_run.sh +++ b/ci/sim_run.sh @@ -12,13 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +GET_FEATURES="$(pwd)/ci/get_features.py" +CARGO_TOML="$(pwd)/sim/Cargo.toml" + pushd sim +all_features="$(${GET_FEATURES} ${CARGO_TOML})" +[ $? -ne 0 ] && exit 1 + EXIT_CODE=0 if [[ ! -z $SINGLE_FEATURES ]]; then - all_features="sig-rsa sig-ecdsa overwrite-only validate-primary-slot enc-rsa enc-kw bootstrap" - if [[ $SINGLE_FEATURES =~ "none" ]]; then echo "Running cargo with no features" cargo test