From 93f7d5f8f0be28d84158a6ccde7fd7d2050598d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Wed, 19 Jan 2022 17:02:20 +0100 Subject: [PATCH] External tests for Pool Together v4 --- .circleci/config.yml | 8 +++ test/externalTests.sh | 1 + test/externalTests/pool-together.sh | 78 +++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100755 test/externalTests/pool-together.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index b53bdb72b..0813fe576 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -552,6 +552,13 @@ defaults: # NOTE: Tests crash on nodejs 17: "Error: error:0308010C:digital envelope routines::unsupported" nodejs_version: '16' resource_class: medium + - job_native_test_ext_pool_together: &job_native_test_ext_pool_together + <<: *workflow_ubuntu2004_static + name: t_native_test_ext_pool_together + project: pool-together + binary_type: native + # NOTE: Tests crash on nodejs 17: "Error: error:0308010C:digital envelope routines::unsupported" + nodejs_version: '16' - job_ems_test_ext_colony: &job_ems_test_ext_colony <<: *workflow_emscripten name: t_ems_test_ext_colony @@ -1433,6 +1440,7 @@ workflows: - t_ems_ext: *job_native_test_ext_euler - t_ems_ext: *job_native_test_ext_yield_liquidator - t_ems_ext: *job_native_test_ext_bleeps + - t_ems_ext: *job_native_test_ext_pool_together # Windows build and tests - b_win: *workflow_trigger_on_tags diff --git a/test/externalTests.sh b/test/externalTests.sh index 4968f5213..560ca2744 100755 --- a/test/externalTests.sh +++ b/test/externalTests.sh @@ -46,3 +46,4 @@ printTask "Running external tests..." "$REPO_ROOT/externalTests/euler.sh" "$@" "$REPO_ROOT/externalTests/yield-liquidator.sh" "$@" "$REPO_ROOT/externalTests/bleeps.sh" "$@" +"$REPO_ROOT/externalTests/pool-together.sh" "$@" diff --git a/test/externalTests/pool-together.sh b/test/externalTests/pool-together.sh new file mode 100755 index 000000000..1cabd6a50 --- /dev/null +++ b/test/externalTests/pool-together.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# ------------------------------------------------------------------------------ +# This file is part of solidity. +# +# solidity is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# solidity is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with solidity. If not, see +# +# (c) 2022 solidity contributors. +#------------------------------------------------------------------------------ + +set -e + +source scripts/common.sh +source test/externalTests/common.sh + +verify_input "$@" +BINARY_TYPE="$1" +BINARY_PATH="$2" +SELECTED_PRESETS="$3" + +function compile_fn { yarn compile; } +function test_fn { yarn test; } + +function pool_together_test +{ + local repo="https://github.com/pooltogether/v4-core" + local ref_type=branch + local ref=master + local config_file="hardhat.config.ts" + local config_var="config" + + local compile_only_presets=() + local settings_presets=( + "${compile_only_presets[@]}" + #ir-no-optimize # Compilation fails with "YulException: Variable var_amount_205 is 9 slot(s) too deep inside the stack." + #ir-optimize-evm-only # Compilation fails with "YulException: Variable var_amount_205 is 9 slot(s) too deep inside the stack." + #ir-optimize-evm+yul # FIXME: ICE due to https://github.com/ethereum/solidity/issues/12558 + legacy-no-optimize + legacy-optimize-evm-only + legacy-optimize-evm+yul + ) + + [[ $SELECTED_PRESETS != "" ]] || SELECTED_PRESETS=$(circleci_select_steps_multiarg "${settings_presets[@]}") + print_presets_or_exit "$SELECTED_PRESETS" + + setup_solc "$DIR" "$BINARY_TYPE" "$BINARY_PATH" + download_project "$repo" "$ref_type" "$ref" "$DIR" + + neutralize_package_lock + neutralize_package_json_hooks + force_hardhat_compiler_binary "$config_file" "$BINARY_TYPE" "$BINARY_PATH" + force_hardhat_compiler_settings "$config_file" "$(first_word "$SELECTED_PRESETS")" "$config_var" + yarn install + + # These come with already compiled artifacts. We want them recompiled with latest compiler. + rm -r node_modules/@pooltogether/yield-source-interface/artifacts/ + rm -r node_modules/@pooltogether/uniform-random-number/artifacts/ + rm -r node_modules/@pooltogether/owner-manager-contracts/artifacts/ + + replace_version_pragmas + + for preset in $SELECTED_PRESETS; do + hardhat_run_test "$config_file" "$preset" "${compile_only_presets[*]}" compile_fn test_fn "$config_var" + done +} + +external_test Pool-Together-V4 pool_together_test