mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 12:05:50 +00:00
* Fix Miri flag passing and bump Rust version. * Fix Miri problems from Arrays PR. SafeSliceAccess was removed for Arrays. It's kind of unsound. It has two properties: 1. EndianSafe 2. Alignment 1 We only need 1. in create_vector_direct to memcpy data. We both 1. and 2. for accessing things with slices as buffers are built on &[u8] which is unaligned. Conditional compilation implements SafeSliceAccess for >1byte scalars (like f32) on LittleEndian machines which is wrong since they don't satisfy 2. This UB is still accessible for Vectors (though not exercised our tests) as it implements SafeSliceAccess. I'll fix this later by splitting SafeSliceAccess into its 2 properties. Co-authored-by: Casper Neo <cneo@google.com>
68 lines
1.9 KiB
Bash
Executable File
68 lines
1.9 KiB
Bash
Executable File
#!/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_usage_test
|
|
cargo test $TARGET_FLAG -- --quiet
|
|
check_test_result "Rust tests"
|
|
|
|
|
|
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"
|
|
|
|
# TODO(caspern): Fix this.
|
|
# Temporarily disabled due to error in upstream configuration
|
|
# https://github.com/google/flatbuffers/issues/6491
|
|
#
|
|
# 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
|