Repository: vyperlang/vyper

Issue:
test fail with web3.py 5.21.0
### Version Information

* vyper Version (output of `vyper --version`): latest master (cff69d63)
* OS: macos
* Python Version (output of `python --version`): 3.9.6

### What's your issue about?

tests fail

tests/cli/vyper_json/test_parse_args_vyperjson.py::test_pretty_json - json.decoder.J...
FAILED tests/cli/vyper_json/test_parse_args_vyperjson.py::test_to_stdout - json.decoder.JSO...
FAILED tests/parser/features/test_assert.py::test_assert_reason[False] - AssertionError: as...
FAILED tests/parser/features/test_assert.py::test_assest_reason_revert

misses the string "execution reverted"



Discussion:
which version of web3?
I bumped these 3 packages to get it work with more recent package to make latest ape and brownie work in parallel.

web3==5.21.0
pytest-xdist>=2.3.0
pytest==6.2.4
So to clarify, the tests are failing with web3==5.21.0?

Have you tried upgrading to vyper 0.2.15?
yes, those 4 tests fail with web3==5.21.0. with earlier packages I can't get the tests to run, probably because of ape or brownie packages, not entirely sure. 

I am using latest master (cff69d63). I put the wrong version number in the issue.
Can you post your whole command and output please?
@benjyz I've confirmed the issue is with the new version of web3. Would you be willing to submit a PR updating these tests to be compatible with the new web3? I think the best thing to do is to strip out the `"execution reverted:"` prefix from each of the relevant strings.
ok sure, will see if I can make it all work. now I get 91 failed, I assume thats the fuzzing tests.

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -15,7 +15,7 @@
         "pytest-xdist>=1.32,<2.0",
         "eth-tester[py-evm]>=0.5.0b1,<0.6",
         "py-evm==0.4.0a4",  # NOTE: temporarily pinned until we have support for py-evm 0.5.0a0+
-        "web3==5.12.3",
+        "web3==5.21.0",
         "tox>=3.15,<4.0",
         "lark-parser==0.10.0",
         "hypothesis[lark]>=5.37.1,<6.0",


Test patch:
diff --git a/tests/parser/features/test_assert.py b/tests/parser/features/test_assert.py
--- a/tests/parser/features/test_assert.py
+++ b/tests/parser/features/test_assert.py
@@ -3,6 +3,11 @@
 from eth_tester.exceptions import TransactionFailed
 
 
+# web3 returns f"execution reverted: {err_str}"
+def _fixup_err_str(s):
+    return s.replace("execution reverted: ", "")
+
+
 def test_assert_refund(w3, get_contract_with_gas_estimation, assert_tx_failed):
     code = """
 @external
@@ -45,21 +50,21 @@ def test3(reason_str: String[32]):
     with pytest.raises(TransactionFailed) as e_info:
         c.test(0)
 
-    assert e_info.value.args[0] == "larger than one please"
+    assert _fixup_err_str(e_info.value.args[0]) == "larger than one please"
     # a = 0, b = 1
     with pytest.raises(TransactionFailed) as e_info:
         c.test2(0, 1, "")
-    assert e_info.value.args[0] == "a is not large enough"
+    assert _fixup_err_str(e_info.value.args[0]) == "a is not large enough"
     # a = 1, b = 0
     with pytest.raises(TransactionFailed) as e_info:
         c.test2(2, 2, " because I said so")
-    assert e_info.value.args[0] == "b may only be 1" + " because I said so"
+    assert _fixup_err_str(e_info.value.args[0]) == "b may only be 1" + " because I said so"
     # return correct value
     assert c.test2(5, 1, "") == 17
 
     with pytest.raises(TransactionFailed) as e_info:
         c.test3("An exception")
-    assert e_info.value.args[0] == "An exception"
+    assert _fixup_err_str(e_info.value.args[0]) == "An exception"
 
 
 invalid_code = [
@@ -183,7 +188,7 @@ def test(x: uint256[3]) -> bool:
     assert_tx_failed(lambda: c.test([1, 3, 5]))
 
 
-def test_assest_reason_revert_length(w3, get_contract, memory_mocker):
+def test_assert_reason_revert_length(w3, get_contract, memory_mocker):
     code = """
 @external
 def test() -> int128:
@@ -194,7 +199,7 @@ def test() -> int128:
     w3.manager.provider.ethereum_tester.backend.is_eip838_error = lambda err: False
     with pytest.raises(TransactionFailed) as e_info:
         c.test()
-    error_bytes = eval(e_info.value.args[0])
+    error_bytes = eval(_fixup_err_str(e_info.value.args[0]))
     assert len(error_bytes) == 100
     msg = decode_single("string", error_bytes[36:])
     assert msg == "oops"