From e6716e320805416ee17d64a136de0912eefeb0f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Thu, 1 Jun 2023 16:39:11 +0200 Subject: [PATCH] Helpers for removing decorations form solc output --- scripts/common_cmdline.sh | 27 +++++++++++++++++ test/cmdlineTests/~via_ir_equivalence/test.sh | 30 +++++++++---------- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/scripts/common_cmdline.sh b/scripts/common_cmdline.sh index d364f6444..1b40f50d5 100644 --- a/scripts/common_cmdline.sh +++ b/scripts/common_cmdline.sh @@ -103,3 +103,30 @@ function compileFull false fi } + +function stripCLIDecorations +{ + sed -e '/^=======.*=======$/d' \ + -e '/^Binary:$/d' \ + -e '/^Binary of the runtime part:$/d' \ + -e '/^Opcodes:$/d' \ + -e '/^IR:$/d' \ + -e '/^Optimized IR:$/d' \ + -e '/^EVM assembly:$/d' \ + -e '/^JSON AST (compact format):$/d' \ + -e '/^Function signatures:$/d' \ + -e '/^Contract Storage Layout:$/d' \ + -e '/^Developer Documentation$/d' \ + -e '/^User Documentation$/d' \ + -e '/^Contract JSON ABI$/d' \ + -e '/^Metadata:$/d' \ + -e '/^EVM$/d' \ + -e '/^Pretty printed source:$/d' \ + -e '/^Text representation:$/d' \ + -e '/^Binary representation:$/d' +} + +function stripEmptyLines +{ + sed -e '/^\s*$/d' +} diff --git a/test/cmdlineTests/~via_ir_equivalence/test.sh b/test/cmdlineTests/~via_ir_equivalence/test.sh index 4da72d151..c318f262a 100755 --- a/test/cmdlineTests/~via_ir_equivalence/test.sh +++ b/test/cmdlineTests/~via_ir_equivalence/test.sh @@ -3,6 +3,8 @@ set -eo pipefail # shellcheck source=scripts/common.sh source "${REPO_ROOT}/scripts/common.sh" +# shellcheck source=scripts/common_cmdline.sh +source "${REPO_ROOT}/scripts/common_cmdline.sh" function test_via_ir_equivalence() { @@ -21,24 +23,24 @@ function test_via_ir_equivalence() [[ $optimize_flag == "" ]] || optimizer_flags+=("$optimize_flag") [[ $optimize_flag == "" ]] || output_file_prefix+="_optimize" - msg_on_error --no-stderr "$SOLC" --ir-optimized --debug-info location "${optimizer_flags[@]}" "$solidity_file" | - sed '/^Optimized IR:$/d' | - split_on_empty_lines_into_numbered_files "$output_file_prefix" ".yul" + msg_on_error --no-stderr \ + "$SOLC" --ir-optimized --debug-info location "${optimizer_flags[@]}" "$solidity_file" | + stripCLIDecorations | + split_on_empty_lines_into_numbered_files "$output_file_prefix" ".yul" local asm_output_two_stage asm_output_via_ir for yul_file in $(find . -name "${output_file_prefix}*.yul" | sort -V); do asm_output_two_stage+=$( - msg_on_error --no-stderr "$SOLC" --strict-assembly --asm "${optimizer_flags[@]}" "$yul_file" | - sed '/^Text representation:$/d' | - sed '/^=======/d' + msg_on_error --no-stderr \ + "$SOLC" --strict-assembly --asm "${optimizer_flags[@]}" "$yul_file" | stripCLIDecorations ) done asm_output_via_ir=$( - msg_on_error --no-stderr "$SOLC" --via-ir --asm --debug-info location "${optimizer_flags[@]}" "$solidity_file" | - sed '/^EVM assembly:$/d' | - sed '/^=======/d' + msg_on_error --no-stderr \ + "$SOLC" --via-ir --asm --debug-info location "${optimizer_flags[@]}" "$solidity_file" | + stripCLIDecorations ) diff_values "$asm_output_two_stage" "$asm_output_via_ir" --ignore-space-change --ignore-blank-lines @@ -47,16 +49,14 @@ function test_via_ir_equivalence() for yul_file in $(find . -name "${output_file_prefix}*.yul" | sort -V); do bin_output_two_stage+=$( - msg_on_error --no-stderr "$SOLC" --strict-assembly --bin "${optimizer_flags[@]}" "$yul_file" | - sed '/^Binary representation:$/d' | - sed '/^=======/d' + msg_on_error --no-stderr \ + "$SOLC" --strict-assembly --bin "${optimizer_flags[@]}" "$yul_file" | stripCLIDecorations ) done bin_output_via_ir=$( - msg_on_error --no-stderr "$SOLC" --via-ir --bin "${optimizer_flags[@]}" "$solidity_file" | - sed '/^Binary:$/d' | - sed '/^=======/d' + msg_on_error --no-stderr \ + "$SOLC" --via-ir --bin "${optimizer_flags[@]}" "$solidity_file" | stripCLIDecorations ) diff_values "$bin_output_two_stage" "$bin_output_via_ir" --ignore-space-change --ignore-blank-lines