From acb10b4688f7eb442e01fee6552562d347b34476 Mon Sep 17 00:00:00 2001 From: Jason Garber <“jgarber@users.noreply.github.com”> Date: Fri, 18 Mar 2022 17:19:50 -0400 Subject: [PATCH 1/3] Add string parameter to ReturnValue test fixture --- tests/convert/test_return_value.py | 18 +++++++++++------- .../contracts/BrownieTester.sol | 7 ++++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/tests/convert/test_return_value.py b/tests/convert/test_return_value.py index 9c80fff0d..a994b0573 100644 --- a/tests/convert/test_return_value.py +++ b/tests/convert/test_return_value.py @@ -5,10 +5,14 @@ from brownie.convert.datatypes import EthAddress, HexString, ReturnValue, Wei from brownie.project import compile_source +string_fixture = "bar" + @pytest.fixture def return_value(accounts, tester): - yield tester.manyValues(88, [False, False, False], accounts[2], [("0x1234", "0x6666")]) + yield tester.manyValues( + 88, [False, False, False], accounts[2], [("0x1234", "0x6666")], string_fixture + ) def test_type(return_value): @@ -22,7 +26,7 @@ def test_type(return_value): def test_len(return_value): - assert len(return_value) == 4 + assert len(return_value) == 5 def test_count(return_value): @@ -53,7 +57,7 @@ def test_contains_conversions(accounts, return_value): def test_eq_conversions(accounts, return_value): - data = [88, [False, False, False], accounts[2], [("0x1234", "0x6666")]] + data = [88, [False, False, False], accounts[2], [("0x1234", "0x6666")], string_fixture] assert return_value == data assert return_value == tuple(data) data[1] = tuple(data[1]) @@ -62,7 +66,7 @@ def test_eq_conversions(accounts, return_value): def test_ne_conversions(accounts, return_value): - data = [88, [False, False, False], accounts[2], [("0x1234", "0x6666")]] + data = [88, [False, False, False], accounts[2], [("0x1234", "0x6666")], string_fixture] assert not return_value != data assert not return_value != tuple(data) data[1] = tuple(data[1]) @@ -73,14 +77,14 @@ def test_ne_conversions(accounts, return_value): def test_dict(accounts, return_value): d = return_value.dict() assert isinstance(d, dict) - assert len(d) == 4 + assert len(d) == 5 assert len(d["_bool"]) == 3 - assert sorted(d) == ["_addr", "_bool", "_bytes", "_num"] + assert sorted(d) == ["_addr", "_bool", "_bytes", "_num", "_string"] assert d["_addr"] == accounts[2] def test_keys(return_value): - assert list(return_value.keys()) == ["_num", "_bool", "_addr", "_bytes"] + assert list(return_value.keys()) == ["_num", "_bool", "_addr", "_bytes", "_string"] def test_items(return_value): diff --git a/tests/data/brownie-test-project/contracts/BrownieTester.sol b/tests/data/brownie-test-project/contracts/BrownieTester.sol index 594c8e27a..6e2e30fac 100644 --- a/tests/data/brownie-test-project/contracts/BrownieTester.sol +++ b/tests/data/brownie-test-project/contracts/BrownieTester.sol @@ -88,13 +88,14 @@ contract BrownieTester { uint a, bool[] calldata b, address c, - bytes32[2][] calldata d + bytes32[2][] calldata d, + string calldata e ) external view - returns (uint _num, bool[] memory _bool, address _addr, bytes32[2][] memory _bytes) + returns (uint _num, bool[] memory _bool, address _addr, bytes32[2][] memory _bytes, string memory _string) { - return (a, b, c, d); + return (a, b, c, d, e); } function useSafeMath(uint a, uint b) external returns (uint) { From 03a12558fd0b1bdf7190a243fd2f46c2d1f56683 Mon Sep 17 00:00:00 2001 From: Jason Garber <“jgarber@users.noreply.github.com”> Date: Fri, 18 Mar 2022 17:21:33 -0400 Subject: [PATCH 2/3] Show that a space in the string throws an exception --- tests/convert/test_return_value.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/convert/test_return_value.py b/tests/convert/test_return_value.py index a994b0573..72f463cf2 100644 --- a/tests/convert/test_return_value.py +++ b/tests/convert/test_return_value.py @@ -5,7 +5,7 @@ from brownie.convert.datatypes import EthAddress, HexString, ReturnValue, Wei from brownie.project import compile_source -string_fixture = "bar" +string_fixture = "bar baz" @pytest.fixture From 93009d4d544fa72ad2bf1cd8fbed69487e5f74b4 Mon Sep 17 00:00:00 2001 From: Jason Garber <“jgarber@users.noreply.github.com”> Date: Fri, 18 Mar 2022 17:26:45 -0400 Subject: [PATCH 3/3] Handle TypeError when converting string to Wei --- brownie/convert/datatypes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/brownie/convert/datatypes.py b/brownie/convert/datatypes.py index 1c5ffbd2d..8b878fba5 100644 --- a/brownie/convert/datatypes.py +++ b/brownie/convert/datatypes.py @@ -401,5 +401,5 @@ def _convert_str(value: Any) -> Wei: return value try: return Wei(value) - except ValueError: + except (ValueError, TypeError): return value