mirror of
https://github.com/pezkuwichain/revive-differential-tests.git
synced 2026-06-09 19:11:03 +00:00
142 lines
6.5 KiB
YAML
142 lines
6.5 KiB
YAML
name: "Run Revive Differential Tests"
|
|
description: "Builds and runs revive-differential-tests (retester) from this repo against the caller's Polkadot SDK."
|
|
|
|
inputs:
|
|
# Setup arguments & environment
|
|
polkadot-sdk-path:
|
|
description: "The path of the polkadot-sdk that should be compiled for the tests to run against."
|
|
required: false
|
|
default: "."
|
|
type: string
|
|
cargo-command:
|
|
description: "The cargo command to use in compilations and running of tests (e.g., forklift cargo)."
|
|
required: false
|
|
default: "cargo"
|
|
type: string
|
|
revive-differential-tests-ref:
|
|
description: "The branch, tag or SHA to checkout for the revive-differential-tests."
|
|
required: false
|
|
default: "main"
|
|
type: string
|
|
resolc-version:
|
|
description: "The version of resolc to install and use in tests."
|
|
required: false
|
|
default: "0.5.0"
|
|
type: string
|
|
use-compilation-caches:
|
|
description: "Controls if the compilation caches will be used for the test run or not."
|
|
required: false
|
|
default: true
|
|
type: boolean
|
|
# Test Execution Arguments
|
|
platform:
|
|
description: "The identifier of the platform to run the tests on (e.g., geth-evm-solc, revive-dev-node-revm-solc)"
|
|
required: true
|
|
type: string
|
|
polkadot-omnichain-node-chain-spec-path:
|
|
description: "The path of the chain-spec of the chain we're spawning'. This is only required if the polkadot-omni-node is one of the selected platforms."
|
|
required: false
|
|
type: string
|
|
polkadot-omnichain-node-parachain-id:
|
|
description: "The id of the parachain to spawn with the polkadot-omni-node. This is only required if the polkadot-omni-node is one of the selected platforms."
|
|
type: number
|
|
required: false
|
|
expectations-file-path:
|
|
description: "Path to the expectations file to use to compare against."
|
|
type: string
|
|
required: false
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Checkout the Differential Tests Repository
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
with:
|
|
repository: paritytech/revive-differential-tests
|
|
ref: ${{ inputs['revive-differential-tests-ref'] }}
|
|
path: revive-differential-tests
|
|
submodules: recursive
|
|
- name: Installing the Latest Resolc
|
|
shell: bash
|
|
if: ${{ runner.os == 'Linux' && runner.arch == 'X64' }}
|
|
run: |
|
|
VERSION="${{ inputs['resolc-version'] }}"
|
|
ASSET_URL="https://github.com/paritytech/revive/releases/download/v$VERSION/resolc-x86_64-unknown-linux-musl"
|
|
echo "Downloading resolc v$VERSION from $ASSET_URL"
|
|
curl -Lsf --show-error -o resolc "$ASSET_URL"
|
|
chmod +x resolc
|
|
./resolc --version
|
|
- name: Installing Retester
|
|
shell: bash
|
|
run: ${{ inputs['cargo-command'] }} install --locked --path revive-differential-tests/crates/core
|
|
- name: Creating a workdir for retester
|
|
shell: bash
|
|
run: mkdir workdir
|
|
- name: Downloading & Initializing the compilation caches
|
|
shell: bash
|
|
if: ${{ inputs['use-compilation-caches'] == true }}
|
|
run: |
|
|
curl -fL --retry 3 --retry-all-errors --connect-timeout 10 -o cache.tar.gz "https://github.com/paritytech/revive-differential-tests/releases/download/compilation-caches-v1.1/cache.tar.gz"
|
|
tar -zxf cache.tar.gz -C ./workdir > /dev/null 2>&1
|
|
- name: Building the dependencies from the Polkadot SDK
|
|
shell: bash
|
|
run: |
|
|
${{ inputs['cargo-command'] }} build --locked --profile release -p pallet-revive-eth-rpc -p revive-dev-node --manifest-path ${{ inputs['polkadot-sdk-path'] }}/Cargo.toml
|
|
${{ inputs['cargo-command'] }} build --locked --profile release --bin polkadot-omni-node --manifest-path ${{ inputs['polkadot-sdk-path'] }}/Cargo.toml
|
|
- name: Installing retester
|
|
shell: bash
|
|
run: ${{ inputs['cargo-command'] }} install --path ./revive-differential-tests/crates/core
|
|
- name: Installing report-processor
|
|
shell: bash
|
|
run: ${{ inputs['cargo-command'] }} install --path ./revive-differential-tests/crates/report-processor
|
|
- name: Running the Differential Tests
|
|
shell: bash
|
|
run: |
|
|
OMNI_ARGS=()
|
|
if [[ -n "${{ inputs['polkadot-omnichain-node-parachain-id'] }}" ]]; then
|
|
OMNI_ARGS+=(
|
|
--polkadot-omni-node.parachain-id
|
|
"${{ inputs['polkadot-omnichain-node-parachain-id'] }}"
|
|
)
|
|
fi
|
|
if [[ -n "${{ inputs['polkadot-omnichain-node-chain-spec-path'] }}" ]]; then
|
|
OMNI_ARGS+=(
|
|
--polkadot-omni-node.chain-spec-path
|
|
"${{ inputs['polkadot-omnichain-node-chain-spec-path'] }}"
|
|
)
|
|
fi
|
|
|
|
retester test \
|
|
--test ./revive-differential-tests/resolc-compiler-tests/fixtures/solidity/simple \
|
|
--test ./revive-differential-tests/resolc-compiler-tests/fixtures/solidity/complex \
|
|
--test ./revive-differential-tests/resolc-compiler-tests/fixtures/solidity/translated_semantic_tests \
|
|
--platform ${{ inputs['platform'] }} \
|
|
--report.file-name report.json \
|
|
--concurrency.number-of-nodes 10 \
|
|
--concurrency.number-of-threads 10 \
|
|
--concurrency.number-of-concurrent-tasks 100 \
|
|
--working-directory ./workdir \
|
|
--revive-dev-node.consensus manual-seal-200 \
|
|
--revive-dev-node.path ${{ inputs['polkadot-sdk-path'] }}/target/release/revive-dev-node \
|
|
--eth-rpc.path ${{ inputs['polkadot-sdk-path'] }}/target/release/eth-rpc \
|
|
--polkadot-omni-node.path ${{ inputs['polkadot-sdk-path'] }}/target/release/polkadot-omni-node \
|
|
--resolc.path ./resolc \
|
|
"${OMNI_ARGS[@]}" || true
|
|
- name: Generate the expectation file
|
|
shell: bash
|
|
run: report-processor generate-expectations-file --report-path ./workdir/report.json --output-path ./workdir/expectations.json --remove-prefix ./revive-differential-tests/resolc-compiler-tests
|
|
- name: Upload the Report to the CI
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
|
|
with:
|
|
name: ${{ inputs['platform'] }}-report.json
|
|
path: ./workdir/report.json
|
|
- name: Upload the Report to the CI
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
|
|
with:
|
|
name: ${{ inputs['platform'] }}.json
|
|
path: ./workdir/expectations.json
|
|
- name: Check Expectations
|
|
shell: bash
|
|
if: ${{ inputs['expectations-file-path'] != '' }}
|
|
run: report-processor compare-expectation-files --base-expectation-path ${{ inputs['expectations-file-path'] }} --other-expectation-path ./workdir/expectations.json
|