revive-runner: consider non-reverted transactions as success (#82)

Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
This commit is contained in:
Cyrill Leutwiler
2024-10-14 13:24:59 +02:00
committed by GitHub
parent adda5a0f12
commit e5233fc46e
3 changed files with 21 additions and 16 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ const EXECUTABLE_ARGS_BENCH: [&str; 6] = [
"-", "-",
]; ];
const GAS_USED_MARKER: &str = "EVM gas used:"; const GAS_USED_MARKER: &str = "EVM gas used:";
const REVERT_MARKER: &str = "error: execution reverted"; const REVERT_MARKER: &str = " error: ";
/// The geth EVM state dump structure /// The geth EVM state dump structure
#[derive(Clone, Debug, Default, Serialize, Deserialize)] #[derive(Clone, Debug, Default, Serialize, Deserialize)]
+6 -11
View File
@@ -21,16 +21,8 @@ pragma solidity ^0.8;
"Solidity": { "Solidity": {
"contract": "Caller" "contract": "Caller"
} }
}
}
},
{
"Call": {
"dest": {
"Instantiated": 0
}, },
"value": 123, "value": 123
"data": "1eb16e5b000000000000000000000000d8b934580fce35a11b58c6d73adee468a2833fa8"
} }
}, },
{ {
@@ -49,11 +41,14 @@ contract Callee {
function echo(bytes memory payload) public pure returns (bytes memory) { function echo(bytes memory payload) public pure returns (bytes memory) {
return payload; return payload;
} }
receive() external payable {}
} }
contract Caller { contract Caller {
function value_transfer(address payable destination) public payable { constructor() payable {
destination.transfer(msg.value); Callee callee = new Callee();
payable(address(callee)).transfer(msg.value);
} }
function call(bytes memory payload) public returns (bytes memory) { function call(bytes memory payload) public returns (bytes memory) {
+14 -4
View File
@@ -161,7 +161,7 @@ impl VerifyCallExpectation {
fn verify(self, result: &CallResult) { fn verify(self, result: &CallResult) {
assert_eq!( assert_eq!(
self.success, self.success,
result.is_ok(), !result.did_revert(),
"contract execution result mismatch: {result:?}" "contract execution result mismatch: {result:?}"
); );
@@ -190,12 +190,21 @@ pub enum CallResult {
impl CallResult { impl CallResult {
/// Check if the call was successful /// Check if the call was successful
fn is_ok(&self) -> bool { fn did_revert(&self) -> bool {
match self { match self {
Self::Exec { result, .. } => result.result.is_ok(), Self::Exec { result, .. } => result
Self::Instantiate { result, .. } => result.result.is_ok(), .result
.as_ref()
.map(|r| r.did_revert())
.unwrap_or(true),
Self::Instantiate { result, .. } => result
.result
.as_ref()
.map(|r| r.result.did_revert())
.unwrap_or(true),
} }
} }
/// Get the output of the call /// Get the output of the call
fn output(&self) -> Vec<u8> { fn output(&self) -> Vec<u8> {
match self { match self {
@@ -211,6 +220,7 @@ impl CallResult {
.unwrap_or_default(), .unwrap_or_default(),
} }
} }
/// Get the gas consumed by the call /// Get the gas consumed by the call
fn gas_consumed(&self) -> Weight { fn gas_consumed(&self) -> Weight {
match self { match self {