Skip to content

Commit e63064f

Browse files
committed
added test for passing a gas value in send()
1 parent 882d373 commit e63064f

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

tests/parser/functions/test_send.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,46 @@ def __default__():
5656
assert receiver.last_sender() == sender.address
5757
assert w3.eth.get_balance(sender.address) == 0
5858
assert w3.eth.get_balance(receiver.address) == 1
59+
60+
def test_gas_kwarg(get_contract, w3):
61+
"""
62+
Tests to verify that send to default function will send limited gas (2300),
63+
but raw_call can send more.
64+
"""
65+
66+
sender_code = """
67+
@external
68+
def test_send(receiver: address):
69+
send(receiver, 1, gas=50000)
70+
71+
@external
72+
def test_call(receiver: address):
73+
raw_call(receiver, b"", gas=50000, max_outsize=0, value=1)
74+
"""
75+
76+
# default function writes variable, this requires more gas than send can pass
77+
receiver_code = """
78+
last_sender: public(address)
79+
80+
@external
81+
@payable
82+
def __default__():
83+
self.last_sender = msg.sender
84+
"""
85+
86+
sender = get_contract(sender_code, value=1)
87+
receiver = get_contract(receiver_code)
88+
89+
sender.test_send(receiver.address, transact={"gas": 100000})
90+
91+
# no value transfer hapenned, variable was not changed
92+
assert receiver.last_sender() == sender.address
93+
assert w3.eth.get_balance(sender.address) == 0
94+
assert w3.eth.get_balance(receiver.address) == 1
95+
96+
sender.test_call(receiver.address, transact={"gas": 100000})
97+
98+
# value transfer hapenned, variable was changed
99+
assert receiver.last_sender() == sender.address
100+
assert w3.eth.get_balance(sender.address) == 0
101+
assert w3.eth.get_balance(receiver.address) == 1

0 commit comments

Comments
 (0)