mirror of
https://github.com/pezkuwichain/revive-differential-tests.git
synced 2026-04-22 21:57:58 +00:00
8009f5880c
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
# revive-differential-tests
|
|
|
|
The revive differential testing framework allows to define smart contract tests in a declarative manner in order to compile and execute them against different Ethereum-compatible blockchain implmentations. This is useful to:
|
|
- Analyze observable differences in contract compilation and execution across different blockchain implementations, including contract storage, account balances, transaction output and emitted events on a per-transaction base.
|
|
- Collect and compare benchmark metrics such as code size, gas usage or transaction throughput per seconds (TPS) of different blockchain implementations.
|
|
- Ensure reproducible contract builds across multiple compiler implementations or multiple host platforms.
|
|
- Implement end-to-end regression tests for Ethereum-compatible smart contract stacks.
|
|
|
|
# Declarative test format
|
|
|
|
For now, the format used to write tests is the [matter-labs era compiler format](https://github.com/matter-labs/era-compiler-tests?tab=readme-ov-file#matter-labs-simplecomplex-format). This allows us to re-use many tests from their corpora.
|
|
|
|
# The `retester` utility
|
|
|
|
The `retester` helper utilty is used to run the tests. To get an idea of what `retester` can do, please consults its command line help:
|
|
|
|
```
|
|
cargo run -p revive-dt-core -- --help
|
|
```
|
|
|
|
For example, to run the [complex Solidity tests](https://github.com/matter-labs/era-compiler-tests/tree/main/solidity/complex), define a corpus structure as follows:
|
|
|
|
```json
|
|
{
|
|
"name": "ML Solidity Complex",
|
|
"path": "/path/to/era-compiler-tests/solidity/complex"
|
|
}
|
|
```
|
|
|
|
Assuming this to be saved in a `ml-solidity-complex.json` file, the following command will try to compile and execute the tests found inside the corpus:
|
|
|
|
```bash
|
|
RUST_LOG=debug cargo r --release -p revive-dt-core -- --corpus ml-solidity-complex.json
|
|
```
|