externalTests: Refactor setup and input verification

This commit is contained in:
Kamil Śliwak 2021-12-03 12:57:39 +01:00
parent 0edbd90f52
commit 081b80ccb2
8 changed files with 45 additions and 60 deletions

View File

@ -28,25 +28,20 @@
set -e
if [ ! -f "$1" ]
then
echo "Usage: $0 <path to soljson.js>"
exit 1
fi
SOLJSON="$1"
REPO_ROOT="$(dirname "$0")"
source scripts/common.sh
source test/externalTests/common.sh
verify_input "$@"
printTask "Running external tests..."
"$REPO_ROOT/externalTests/zeppelin.sh" "$SOLJSON"
"$REPO_ROOT/externalTests/gnosis.sh" "$SOLJSON"
"$REPO_ROOT/externalTests/gnosis-v2.sh" "$SOLJSON"
"$REPO_ROOT/externalTests/colony.sh" "$SOLJSON"
"$REPO_ROOT/externalTests/ens.sh" "$SOLJSON"
"$REPO_ROOT/externalTests/zeppelin.sh" "$@"
"$REPO_ROOT/externalTests/gnosis.sh" "$@"
"$REPO_ROOT/externalTests/gnosis-v2.sh" "$@"
"$REPO_ROOT/externalTests/colony.sh" "$@"
"$REPO_ROOT/externalTests/ens.sh" "$@"
# Disabled temporarily as it needs to be updated to latest Truffle first.
#test_truffle Gnosis https://github.com/axic/pm-contracts.git solidity-050

View File

@ -24,8 +24,8 @@ set -e
source scripts/common.sh
source test/externalTests/common.sh
verify_input "$1"
SOLJSON="$1"
verify_input "$@"
BINARY_PATH="$1"
function compile_fn { yarn run provision:token:contracts; }
function test_fn { yarn run test:contracts; }
@ -42,7 +42,7 @@ function colony_test
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
print_optimizer_levels_or_exit "$selected_optimizer_levels"
setup_solcjs "$DIR" "$SOLJSON"
setup_solcjs "$DIR" "$BINARY_PATH"
download_project "$repo" "$branch" "$DIR"
neutralize_package_json_hooks

View File

@ -35,52 +35,41 @@ function print_optimizer_levels_or_exit
function verify_input
{
[[ -f "$1" ]] || fail "Usage: $0 <path to soljson.js>"
local binary_path="$1"
(( $# == 1 )) || fail "Usage: $0 <path to soljson.js>"
[[ -f "$binary_path" ]] || fail "The compiler binary does not exist at '${binary_path}'"
}
function verify_version_input
{
[[ $1 != "" && -f "$1" && $2 != "" ]] || fail "Usage: $0 <path to soljson.js> <version>"
}
function setup
{
local soljson="$1"
local branch="$2"
setup_solcjs "$DIR" "$soljson" "$branch" "solc"
cd solc
}
function setup_solcjs
{
local dir="$1"
local soljson="$2"
local branch="${3:-master}"
local path="${4:-solc/}"
local test_dir="$1"
local binary_path="$2"
local solcjs_branch="${3:-master}"
local install_dir="${4:-solc/}"
cd "$dir"
cd "$test_dir"
printLog "Setting up solc-js..."
git clone --depth 1 -b "$branch" https://github.com/ethereum/solc-js.git "$path"
cd "$path"
git clone --depth 1 -b "$solcjs_branch" https://github.com/ethereum/solc-js.git "$install_dir"
pushd "$install_dir"
npm install
cp "$soljson" soljson.js
cp "$binary_path" soljson.js
SOLCVERSION=$(./solcjs --version)
SOLCVERSION_SHORT=$(echo "$SOLCVERSION" | sed -En 's/^([0-9.]+).*\+commit\.[0-9a-f]+.*$/\1/p')
printLog "Using solcjs version $SOLCVERSION"
cd ..
printLog "Using compiler version $SOLCVERSION"
popd
}
function download_project
{
local repo="$1"
local branch="$2"
local dir="$3"
local solcjs_branch="$2"
local test_dir="$3"
printLog "Cloning $branch of $repo..."
git clone --depth 1 "$repo" -b "$branch" "$dir/ext"
printLog "Cloning $solcjs_branch of $repo..."
git clone --depth 1 "$repo" -b "$solcjs_branch" "$test_dir/ext"
cd ext
echo "Current commit hash: $(git rev-parse HEAD)"
}

View File

@ -24,8 +24,8 @@ set -e
source scripts/common.sh
source test/externalTests/common.sh
verify_input "$1"
export SOLJSON="$1"
verify_input "$@"
BINARY_PATH="$1"
function compile_fn { npx truffle compile; }
function test_fn { npm run test; }
@ -42,7 +42,7 @@ function ens_test
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
print_optimizer_levels_or_exit "$selected_optimizer_levels"
setup_solcjs "$DIR" "$SOLJSON"
setup_solcjs "$DIR" "$BINARY_PATH"
download_project "$repo" "$branch" "$DIR"
# Use latest Truffle. Older versions crash on the output from 0.8.0.

View File

@ -24,10 +24,9 @@ set -e
source scripts/common.sh
source test/externalTests/common.sh
verify_input "$1"
SOLJSON="$1"
verify_input "$@"
BINARY_PATH="$1"
function install_fn { npm install --package-lock; }
function compile_fn { npx truffle compile; }
function test_fn { npm test; }
@ -43,7 +42,7 @@ function gnosis_safe_test
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
print_optimizer_levels_or_exit "$selected_optimizer_levels"
setup_solcjs "$DIR" "$SOLJSON"
setup_solcjs "$DIR" "$BINARY_PATH"
download_project "$repo" "$branch" "$DIR"
sed -i 's|github:gnosis/mock-contract#sol_0_5_0|github:solidity-external-tests/mock-contract#master_080|g' package.json

View File

@ -24,8 +24,8 @@ set -e
source scripts/common.sh
source test/externalTests/common.sh
verify_input "$1"
SOLJSON="$1"
verify_input "$@"
BINARY_PATH="$1"
function compile_fn { npx truffle compile; }
function test_fn { npm test; }
@ -42,7 +42,7 @@ function gnosis_safe_test
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
print_optimizer_levels_or_exit "$selected_optimizer_levels"
setup_solcjs "$DIR" "$SOLJSON"
setup_solcjs "$DIR" "$BINARY_PATH"
download_project "$repo" "$branch" "$DIR"
sed -i 's|github:gnosis/mock-contract#sol_0_5_0|github:solidity-external-tests/mock-contract#master_080|g' package.json

View File

@ -24,10 +24,11 @@ set -e
source scripts/common.sh
source test/externalTests/common.sh
verify_version_input "$1" "$2"
SOLJSON="$1"
VERSION="$2"
[[ $SOLJSON != "" && -f "$SOLJSON" && $VERSION != "" ]] || fail "Usage: $0 <path to soljson.js> <version>"
function compile_fn { echo "Nothing to compile."; }
function test_fn { npm test; }
@ -37,7 +38,8 @@ function solcjs_test
SOLCJS_INPUT_DIR="$TEST_DIR"/test/externalTests/solc-js
# set up solc-js on the branch specified
setup "$SOLJSON" master
setup_solcjs "$DIR" "$SOLJSON" master solc/
cd solc/
printLog "Updating index.js file..."
echo "require('./determinism.js');" >> test/index.js

View File

@ -24,8 +24,8 @@ set -e
source scripts/common.sh
source test/externalTests/common.sh
verify_input "$1"
SOLJSON="$1"
verify_input "$@"
BINARY_PATH="$1"
function compile_fn { npm run compile; }
function test_fn { npm test; }
@ -42,11 +42,11 @@ function zeppelin_test
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
print_optimizer_levels_or_exit "$selected_optimizer_levels"
setup_solcjs "$DIR" "$SOLJSON"
setup_solcjs "$DIR" "$BINARY_PATH"
download_project "$repo" "$branch" "$DIR"
neutralize_package_json_hooks
force_hardhat_compiler_binary "$config_file" "$SOLJSON"
force_hardhat_compiler_binary "$config_file" "$BINARY_PATH"
force_hardhat_compiler_settings "$config_file" "$min_optimizer_level"
npm install