Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration to 0x coverage tools #1699

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -40,3 +40,6 @@ build/

# IntelliJ IDE
.idea

# 0x artifacts
.0x-artifacts/*
30 changes: 30 additions & 0 deletions contracts/mocks/ERC20NoReturnMock.sol
@@ -0,0 +1,30 @@
pragma solidity ^0.5.2;

contract ERC20NoReturnMock {
mapping (address => uint256) private _allowances;

// IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,
// we write to a dummy state variable.
uint256 private _dummy;

function transfer(address, uint256) public {
_dummy = 0;
}

function transferFrom(address, address, uint256) public {
_dummy = 0;
}

function approve(address, uint256) public {
_dummy = 0;
}

function setAllowance(uint256 allowance_) public {
_allowances[msg.sender] = allowance_;
}

function allowance(address owner, address) public view returns (uint256) {
return _allowances[owner];
}
}

29 changes: 29 additions & 0 deletions contracts/mocks/ERC20ReturnFalseMock.sol
@@ -0,0 +1,29 @@
pragma solidity ^0.5.2;

contract ERC20ReturnFalseMock {
uint256 private _allowance;

// IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,
// we write to a dummy state variable.
uint256 private _dummy;

function transfer(address, uint256) public returns (bool) {
_dummy = 0;
return false;
}

function transferFrom(address, address, uint256) public returns (bool) {
_dummy = 0;
return false;
}

function approve(address, uint256) public returns (bool) {
_dummy = 0;
return false;
}

function allowance(address, address) public view returns (uint256) {
require(_dummy == 0);
return 0;
}
}
33 changes: 33 additions & 0 deletions contracts/mocks/ERC20ReturnTrueMock.sol
@@ -0,0 +1,33 @@
pragma solidity ^0.5.2;

contract ERC20ReturnTrueMock {
mapping (address => uint256) private _allowances;

// IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,
// we write to a dummy state variable.
uint256 private _dummy;

function transfer(address, uint256) public returns (bool) {
_dummy = 0;
return true;
}

function transferFrom(address, address, uint256) public returns (bool) {
_dummy = 0;
return true;
}

function approve(address, uint256) public returns (bool) {
_dummy = 0;
return true;
}

function setAllowance(uint256 allowance_) public {
_allowances[msg.sender] = allowance_;
}

function allowance(address owner, address) public view returns (uint256) {
return _allowances[owner];
}
}

129 changes: 0 additions & 129 deletions contracts/mocks/SafeERC20Helper.sol

This file was deleted.

43 changes: 43 additions & 0 deletions contracts/mocks/SafeERC20Wrapper.sol
@@ -0,0 +1,43 @@
pragma solidity ^0.5.2;

import "../token/ERC20/IERC20.sol";
import "../token/ERC20/SafeERC20.sol";
import "./ERC20ReturnTrueMock.sol";

contract SafeERC20Wrapper {
using SafeERC20 for IERC20;

IERC20 private _token;

constructor (IERC20 token) public {
_token = token;
}

function transfer() public {
_token.safeTransfer(address(0), 0);
}

function transferFrom() public {
_token.safeTransferFrom(address(0), address(0), 0);
}

function approve(uint256 amount) public {
_token.safeApprove(address(0), amount);
}

function increaseAllowance(uint256 amount) public {
_token.safeIncreaseAllowance(address(0), amount);
}

function decreaseAllowance(uint256 amount) public {
_token.safeDecreaseAllowance(address(0), amount);
}

function setAllowance(uint256 allowance_) public {
ERC20ReturnTrueMock(address(_token)).setAllowance(allowance_);
}

function allowance() public view returns (uint256) {
return _token.allowance(address(0), address(0));
}
}