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

test: bPool unit tests scaffolding #8

Merged
merged 21 commits into from
May 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ jobs:
- name: Install dependencies
run: yarn --frozen-lockfile --network-concurrency 1

- name: Create mock files with smock
run: yarn smock

- name: Precompile using 0.8.14 and via-ir=false
run: yarn build

Expand Down Expand Up @@ -58,6 +61,9 @@ jobs:
- name: Install dependencies
run: yarn --frozen-lockfile --network-concurrency 1

- name: Create mock files with smock
run: yarn smock

- name: Precompile using 0.8.14 and via-ir=false
run: yarn build

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@ broadcast/*/*/*

# Out dir
out

# Smock dir
test/smock
5 changes: 4 additions & 1 deletion .solhint.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
"immutable-name-snakecase": "warn",
"avoid-low-level-calls": "off",
"no-console": "off",
"max-line-length": ["warn", 120]
"max-line-length": ["warn", 120],
"TODO": "REMOVE_TEMPORARY_LINTER_SETTINGS_BELOW",
"custom-errors": "warn",
"definition-name-capwords": "warn"
}
}
1 change: 1 addition & 0 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ src = 'src/interfaces/'

[fuzz]
runs = 1000
max_test_rejects = 500000

wei3erHase marked this conversation as resolved.
Show resolved Hide resolved
[rpc_endpoints]
mainnet = "${MAINNET_RPC}"
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"lint:sol-logic": "solhint -c .solhint.json 'src/**/*.sol' 'script/**/*.sol'",
"lint:sol-tests": "solhint -c .solhint.tests.json 'test/**/*.sol'",
"prepare": "husky install",
"smock": "smock-foundry --contracts src/contracts",
"test": "forge test -vvv",
"test:integration": "forge test --match-contract Integration -vvv",
"test:unit": "forge test --match-contract Unit -vvv",
Expand All @@ -36,12 +37,13 @@
"package.json": "sort-package-json"
},
"dependencies": {
"solmate": "github:transmissions11/solmate#a9e3ea2"
wei3erHase marked this conversation as resolved.
Show resolved Hide resolved
"solmate": "github:transmissions11/solmate#c892309"
},
"devDependencies": {
"@commitlint/cli": "19.3.0",
"@commitlint/config-conventional": "19.2.2",
"@defi-wonderland/natspec-smells": "1.1.1",
"@defi-wonderland/smock-foundry": "1.5.0",
"forge-std": "github:foundry-rs/forge-std#5475f85",
"husky": ">=8",
"lint-staged": ">=10",
Expand Down
4 changes: 2 additions & 2 deletions src/contracts/BFactory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@

// Builds new BPools, logging their addresses and providing `isBPool(address) -> (bool)`

import './BPool.sol';

Check warning on line 18 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

global import of path ./BPool.sol is not allowed. Specify names to import individually or bind all exports of the module into a name (import "path" as Name)

contract BFactory is BBronze {
event LOG_NEW_POOL(address indexed caller, address indexed pool);

Check warning on line 21 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

event name must be in CapWords

event LOG_BLABS(address indexed caller, address indexed blabs);

Check warning on line 23 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

event name must be in CapWords

mapping(address => bool) private _isBPool;
mapping(address => bool) internal _isBPool;

Check warning on line 25 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

Function order is incorrect, state variable declaration can not go after event definition (line 23)

function isBPool(address b) external view returns (bool) {
return _isBPool[b];
Expand All @@ -36,7 +36,7 @@
return bpool;
}

address private _blabs;
address internal _blabs;

constructor() {
_blabs = msg.sender;
Expand All @@ -47,15 +47,15 @@
}

function setBLabs(address b) external {
require(msg.sender == _blabs, 'ERR_NOT_BLABS');

Check warning on line 50 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

Use Custom Errors instead of require statements
emit LOG_BLABS(msg.sender, b);
_blabs = b;
}

function collect(BPool pool) external {
require(msg.sender == _blabs, 'ERR_NOT_BLABS');

Check warning on line 56 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

Use Custom Errors instead of require statements
uint256 collected = IERC20(pool).balanceOf(address(this));
bool xfer = pool.transfer(_blabs, collected);
require(xfer, 'ERR_ERC20_FAILED');

Check warning on line 59 in src/contracts/BFactory.sol

View workflow job for this annotation

GitHub Actions / Lint Commit Messages

Use Custom Errors instead of require statements
}
}
20 changes: 10 additions & 10 deletions src/contracts/BPool.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import './BToken.sol';
contract BPool is BBronze, BToken, BMath {
struct Record {
bool bound; // is token bound to pool
uint256 index; // private
uint256 index; // internal
uint256 denorm; // denormalized weight
uint256 balance;
}
Expand Down Expand Up @@ -55,20 +55,20 @@ contract BPool is BBronze, BToken, BMath {
_;
}

bool private _mutex;
bool internal _mutex;

address private _factory; // BFactory address to push token exitFee to
address private _controller; // has CONTROL role
bool private _publicSwap; // true if PUBLIC can call SWAP functions
address internal _factory; // BFactory address to push token exitFee to
address internal _controller; // has CONTROL role
bool internal _publicSwap; // true if PUBLIC can call SWAP functions

// `setSwapFee` and `finalize` require CONTROL
// `finalize` sets `PUBLIC can SWAP`, `PUBLIC can JOIN`
uint256 private _swapFee;
bool private _finalized;
uint256 internal _swapFee;
bool internal _finalized;

address[] private _tokens;
mapping(address => Record) private _records;
uint256 private _totalWeight;
address[] internal _tokens;
mapping(address => Record) internal _records;
uint256 internal _totalWeight;

constructor() {
_controller = msg.sender;
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/BToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ abstract contract BTokenBase is BNum, IERC20 {
}

contract BToken is BTokenBase {
string private _name = 'Balancer Pool Token';
string private _symbol = 'BPT';
uint8 private _decimals = 18;
string internal _name = 'Balancer Pool Token';
string internal _symbol = 'BPT';
uint8 internal _decimals = 18;

function name() public view returns (string memory) {
return _name;
Expand Down
23 changes: 0 additions & 23 deletions src/contracts/Migrations.sol

This file was deleted.

Loading
Loading