Skip to content

Commit

Permalink
fix: issue preventing transferring a value of 0. (#1795)
Browse files Browse the repository at this point in the history
  • Loading branch information
antazoey authored Dec 20, 2023
1 parent 207aae0 commit c255427
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/ape/api/accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,13 +198,13 @@ def transfer(
if data:
txn.data = self.conversion_manager.convert(data, bytes)

if not value and not kwargs.get("send_everything"):
if value is None and not kwargs.get("send_everything"):
raise AccountsError("Must provide 'VALUE' or use 'send_everything=True'")

elif value and kwargs.get("send_everything"):
elif value is not None and kwargs.get("send_everything"):
raise AccountsError("Cannot use 'send_everything=True' with 'VALUE'.")

elif value:
elif value is not None:
txn.value = self.conversion_manager.convert(value, int)
if txn.value < 0:
raise AccountsError("Value cannot be negative.")
Expand Down
13 changes: 13 additions & 0 deletions tests/functional/test_accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,19 @@ def test_transfer_using_type_0(sender, receiver, convert):
assert receiver.balance == expected


def test_transfer_value_of_0(sender, receiver):
"""
There was a bug where this failed, thinking there was no value.
"""
initial_balance = receiver.balance
sender.transfer(receiver, 0)
assert receiver.balance == initial_balance

# Also show conversion works.
sender.transfer(receiver, "0 wei")
assert receiver.balance == initial_balance


def test_deploy(owner, contract_container, chain, clean_contracts_cache):
contract = owner.deploy(contract_container, 0)
assert contract.address
Expand Down

0 comments on commit c255427

Please sign in to comment.