diff --git a/tests/functional/codegen/features/test_assert.py b/tests/functional/codegen/features/test_assert.py index efde44fbad..406bade926 100644 --- a/tests/functional/codegen/features/test_assert.py +++ b/tests/functional/codegen/features/test_assert.py @@ -28,6 +28,8 @@ def foo(): def test_assert_reason(w3, get_contract_with_gas_estimation, tx_failed, memory_mocker): code = """ +err: String[32] + @external def test(a: int128) -> int128: assert a > 1, "larger than one please" @@ -43,6 +45,17 @@ def test2(a: int128, b: int128, extra_reason: String[32]) -> int128: @external def test3(reason_str: String[32]): raise reason_str + +@external +def test4(a: int128, reason_str: String[32]) -> int128: + self.err = reason_str + assert a > 1, self.err + return 1 + a + +@external +def test5(reason_str: String[32]): + self.err = reason_str + raise self.err """ c = get_contract_with_gas_estimation(code) @@ -66,6 +79,15 @@ def test3(reason_str: String[32]): c.test3("An exception") assert _fixup_err_str(e_info.value.args[0]) == "An exception" + assert c.test4(2, "msg") == 3 + with pytest.raises(TransactionFailed) as e_info: + c.test4(0, "larger than one again please") + assert _fixup_err_str(e_info.value.args[0]) == "larger than one again please" + + with pytest.raises(TransactionFailed) as e_info: + c.test5("A storage exception") + assert _fixup_err_str(e_info.value.args[0]) == "A storage exception" + invalid_code = [ """