mirror of
https://github.com/OMGeeky/tarpc.git
synced 2025-12-28 23:27:25 +01:00
When `-- features tls` is specified for tarpc, RPC communication can also occur over a `TlsStream<TcpStream>` instead of a `TcpStream`. * The functional tests have been refactored to use a common set of functions for constructing the client and server structs so that all the tests are shared across non-tls and tls test runs. * Update pre-push to test TLS * The `cfg_attr` logic caused many false warnings from clippy, so for now the crate docs for TLS are not tested.
131 lines
3.4 KiB
Bash
Executable File
131 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2016 Google Inc. All Rights Reserved.
|
|
#
|
|
# Licensed under the MIT License, <LICENSE or http://opensource.org/licenses/MIT>.
|
|
# This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
# Pre-push hook for the tarpc repository. To use this hook, copy it to .git/hooks in your repository
|
|
# root.
|
|
#
|
|
# This hook runs tests to make sure only working code is being pushed. If present, rustup is used
|
|
# to build and test the code on the appropriate toolchains. The working copy must not contain
|
|
# uncommitted changes, since the script currently just runs cargo build/test in the working copy.
|
|
#
|
|
# Options:
|
|
#
|
|
# - TARPC_ALLOW_DIRTY, default = 0
|
|
#
|
|
# Setting this variable to 1 will run tests even though there are code changes in the working
|
|
# copy. Set to 0 by default, since the intent is to test the code that's being pushed, not changes
|
|
# still in the working copy.
|
|
#
|
|
# - TARPC_USE_CURRENT_TOOLCHAIN, default = 0
|
|
#
|
|
# Setting this variable to 1 will just run cargo build and cargo test, rather than running
|
|
# stable/beta/nightly.
|
|
#
|
|
# Note that these options are most useful for testing the hooks themselves. Use git push --no-verify
|
|
# to skip the pre-push hook altogether.
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
PREFIX="${GREEN}[PREPUSH]${NC}"
|
|
FAILURE="${RED}FAILED${NC}"
|
|
WARNING="${YELLOW}[WARNING]${NC}"
|
|
SKIPPED="${YELLOW}SKIPPED${NC}"
|
|
SUCCESS="${GREEN}ok${NC}"
|
|
|
|
printf "${PREFIX} Clean working copy ... "
|
|
git diff --exit-code &>/dev/null
|
|
if [ "$?" == 0 ]; then
|
|
printf "${SUCCESS}\n"
|
|
else
|
|
if [ "${TARPC_ALLOW_DIRTY}" == "1" ]
|
|
then
|
|
printf "${SKIPPED}\n"
|
|
else
|
|
printf "${FAILURE}\n"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
PREPUSH_RESULT=0
|
|
|
|
# args:
|
|
# 1 - cargo command to run (build/test)
|
|
# 2 - rust toolchain (nightly/stable/beta)
|
|
run_cargo() {
|
|
if [ "$1" == "build" ]; then
|
|
VERB=Building
|
|
else
|
|
VERB=Testing
|
|
fi
|
|
if [ "$2" != "" ]; then
|
|
printf "${PREFIX} $VERB on $2... "
|
|
if [ "$2" != "nightly" ]; then
|
|
rustup run $2 cargo $1 &>/dev/null
|
|
else
|
|
rustup run nightly cargo $1 --features unstable &>/dev/null
|
|
rustup run nightly cargo $1 --features unstable,tls &>/dev/null
|
|
fi
|
|
else
|
|
printf "${PREFIX} $VERB... "
|
|
cargo $1 &>/dev/null
|
|
cargo $1 --features tls &>/dev/null
|
|
fi
|
|
if [ "$?" != "0" ]; then
|
|
printf "${FAILURE}\n"
|
|
PREPUSH_RESULT=1
|
|
else
|
|
printf "${SUCCESS}\n"
|
|
fi
|
|
}
|
|
|
|
TOOLCHAIN_RESULT=0
|
|
check_toolchain() {
|
|
printf "${PREFIX} Checking for $1 toolchain ... "
|
|
if [[ $(rustup toolchain list) =~ $1 ]]; then
|
|
printf "${SUCCESS}\n"
|
|
else
|
|
TOOLCHAIN_RESULT=1
|
|
PREPUSH_RESULT=1
|
|
printf "${FAILURE}\n"
|
|
fi
|
|
}
|
|
|
|
printf "${PREFIX} Checking for rustup or current toolchain directive... "
|
|
command -v rustup &>/dev/null
|
|
if [ "$?" == 0 ] && [ "${TARPC_USE_CURRENT_TOOLCHAIN}" == "" ]; then
|
|
printf "${SUCCESS}\n"
|
|
|
|
check_toolchain stable
|
|
check_toolchain beta
|
|
check_toolchain nightly
|
|
if [ ${TOOLCHAIN_RESULT} == 1 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
run_cargo build stable
|
|
run_cargo build beta
|
|
run_cargo build nightly
|
|
|
|
# We still rely on some nightly stuff for tests
|
|
run_cargo test nightly
|
|
else
|
|
if [ "${TARPC_USE_CURRENT_TOOLCHAIN}" == "" ]; then
|
|
printf "${YELLOW}NOT FOUND${NC}\n"
|
|
printf "${WARNING} Falling back to current toolchain: $(rustc -V)\n"
|
|
else
|
|
printf "${SUCCESS}\n"
|
|
fi
|
|
|
|
run_cargo build
|
|
run_cargo test
|
|
fi
|
|
|
|
exit $PREPUSH_RESULT
|