#!/bin/bash set -e # # Copyright 2018 Google Inc. All rights reserved. # # 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. if [[ "$1" == "mips-unknown-linux-gnu" ]]; then TARGET_FLAG="--target mips-unknown-linux-gnu" export CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_LINKER=mips-linux-gnu-gcc export CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_RUNNER="qemu-mips -L /usr/mips-linux-gnu" fi function check_test_result() { if [[ $? == 0 ]]; then echo OK: $1 passed. else echo KO: $1 failed. exit 1 fi } cd ./rust_serialize_test cargo run $TARGET_FLAG -- --quiet check_test_result "Rust serde tests" cd ../rust_no_std_compilation_test rustup install nightly rustup component add rust-src --toolchain nightly rustup target add thumbv7m-none-eabi cargo +nightly build check_test_result "Rust flatbuffers test no_std compilation" cd ../rust_usage_test cargo test $TARGET_FLAG -- --quiet check_test_result "Rust tests" cargo test $TARGET_FLAG --no-default-features -- --quiet check_test_result "Rust tests (no_std)" cargo run $TARGET_FLAG --bin=flatbuffers_alloc_check check_test_result "Rust flatbuffers heap alloc test" cargo run $TARGET_FLAG --bin=flexbuffers_alloc_check check_test_result "Rust flexbuffers heap alloc test" rustup component add clippy cargo clippy $TARGET_FLAG check_test_result "No Cargo clippy lints test" cargo bench $TARGET_FLAG # This test is dependent on flatc. if [[ -f ../../flatc ]]; then cd outdir cargo test check_test_result "Rust generated file in \$OUT_DIR" cd .. fi # RUST_NIGHTLY environment variable set in dockerfile. if [[ $RUST_NIGHTLY == 1 ]]; then rustup +nightly component add miri MIRIFLAGS="-Zmiri-disable-isolation" cargo +nightly miri test fi