xref: /aosp_15_r20/external/flatbuffers/tests/RustTest.sh (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Worker#!/bin/bash
2*890232f2SAndroid Build Coastguard Workerset -e
3*890232f2SAndroid Build Coastguard Worker#
4*890232f2SAndroid Build Coastguard Worker# Copyright 2018 Google Inc. All rights reserved.
5*890232f2SAndroid Build Coastguard Worker#
6*890232f2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
7*890232f2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
8*890232f2SAndroid Build Coastguard Worker# You may obtain a copy of the License at
9*890232f2SAndroid Build Coastguard Worker#
10*890232f2SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
11*890232f2SAndroid Build Coastguard Worker#
12*890232f2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
13*890232f2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
14*890232f2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*890232f2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
16*890232f2SAndroid Build Coastguard Worker# limitations under the License.
17*890232f2SAndroid Build Coastguard Worker
18*890232f2SAndroid Build Coastguard Workerif [[ "$1" == "mips-unknown-linux-gnu" ]]; then
19*890232f2SAndroid Build Coastguard Worker    TARGET_FLAG="--target mips-unknown-linux-gnu"
20*890232f2SAndroid Build Coastguard Worker    export CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_LINKER=mips-linux-gnu-gcc
21*890232f2SAndroid Build Coastguard Worker    export CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_RUNNER="qemu-mips -L /usr/mips-linux-gnu"
22*890232f2SAndroid Build Coastguard Workerfi
23*890232f2SAndroid Build Coastguard Worker
24*890232f2SAndroid Build Coastguard Worker
25*890232f2SAndroid Build Coastguard Workerfunction check_test_result() {
26*890232f2SAndroid Build Coastguard Worker    if [[ $? == 0 ]]; then
27*890232f2SAndroid Build Coastguard Worker        echo OK: $1 passed.
28*890232f2SAndroid Build Coastguard Worker    else
29*890232f2SAndroid Build Coastguard Worker        echo KO: $1 failed.
30*890232f2SAndroid Build Coastguard Worker        exit 1
31*890232f2SAndroid Build Coastguard Worker    fi
32*890232f2SAndroid Build Coastguard Worker}
33*890232f2SAndroid Build Coastguard Worker
34*890232f2SAndroid Build Coastguard Workercd ./rust_serialize_test
35*890232f2SAndroid Build Coastguard Workercargo run $TARGET_FLAG -- --quiet
36*890232f2SAndroid Build Coastguard Workercheck_test_result "Rust serde tests"
37*890232f2SAndroid Build Coastguard Worker
38*890232f2SAndroid Build Coastguard Workercd ../rust_usage_test
39*890232f2SAndroid Build Coastguard Workercargo test $TARGET_FLAG -- --quiet
40*890232f2SAndroid Build Coastguard Workercheck_test_result "Rust tests"
41*890232f2SAndroid Build Coastguard Worker
42*890232f2SAndroid Build Coastguard Workercargo test $TARGET_FLAG --no-default-features --features no_std -- --quiet
43*890232f2SAndroid Build Coastguard Workercheck_test_result "Rust tests (no_std)"
44*890232f2SAndroid Build Coastguard Worker
45*890232f2SAndroid Build Coastguard Workercargo run $TARGET_FLAG --bin=flatbuffers_alloc_check
46*890232f2SAndroid Build Coastguard Workercheck_test_result "Rust flatbuffers heap alloc test"
47*890232f2SAndroid Build Coastguard Worker
48*890232f2SAndroid Build Coastguard Workercargo run $TARGET_FLAG --bin=flexbuffers_alloc_check
49*890232f2SAndroid Build Coastguard Workercheck_test_result "Rust flexbuffers heap alloc test"
50*890232f2SAndroid Build Coastguard Worker
51*890232f2SAndroid Build Coastguard Worker# TODO(caspern): Fix this.
52*890232f2SAndroid Build Coastguard Worker#   Temporarily disabled due to error in upstream configuration
53*890232f2SAndroid Build Coastguard Worker#   https://github.com/google/flatbuffers/issues/6491
54*890232f2SAndroid Build Coastguard Worker#
55*890232f2SAndroid Build Coastguard Worker# rustup component add clippy
56*890232f2SAndroid Build Coastguard Worker# cargo clippy $TARGET_FLAG
57*890232f2SAndroid Build Coastguard Worker# check_test_result "No Cargo clippy lints test"
58*890232f2SAndroid Build Coastguard Worker
59*890232f2SAndroid Build Coastguard Workercargo bench $TARGET_FLAG
60*890232f2SAndroid Build Coastguard Worker
61*890232f2SAndroid Build Coastguard Worker# This test is dependent on flatc.
62*890232f2SAndroid Build Coastguard Workerif [[ -f ../../flatc ]]; then
63*890232f2SAndroid Build Coastguard Worker    cd outdir
64*890232f2SAndroid Build Coastguard Worker    cargo test
65*890232f2SAndroid Build Coastguard Worker    check_test_result "Rust generated file in \$OUT_DIR"
66*890232f2SAndroid Build Coastguard Worker    cd ..
67*890232f2SAndroid Build Coastguard Workerfi
68*890232f2SAndroid Build Coastguard Worker
69*890232f2SAndroid Build Coastguard Worker# RUST_NIGHTLY environment variable set in dockerfile.
70*890232f2SAndroid Build Coastguard Workerif [[ $RUST_NIGHTLY == 1 ]]; then
71*890232f2SAndroid Build Coastguard Worker  rustup +nightly component add miri
72*890232f2SAndroid Build Coastguard Worker  MIRIFLAGS="-Zmiri-disable-isolation" cargo +nightly miri test
73*890232f2SAndroid Build Coastguard Workerfi
74