Skip to content

Commit

Permalink
snforge migration (#1077)
Browse files Browse the repository at this point in the history
* Migrate erc20 tests (#1022)

* feat: migrate event tests

* feat: update workflow

* feat: add foundry utils

* feat: finish erc20 and erc20votes migration

* feat: remove dual case tests

* refactor: format files

* refactor: variable name

* Update src/tests/token.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/token/erc20.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/utils/foundry.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/token/erc20/test_erc20_votes.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* feat: apply review updates

---------

Co-authored-by: Andrew Fleming <[email protected]>

* Snforge utils and some common changes (#1030)

* Update gitignore with snfoundry cache dir

* Delete foundry utils file

* Add snfoundry-related test utils, comment out previous utils

* Update ERC20 event helpers

* Update ERC20 tests

* Update ERC20Votes tests

* Run linter

* Add util function to drop single event

* Fix review issues

* Make Github workflow run on every PR

* Fix review issues

* Bump snforge version

* Support snforge 0.26 in test utils

* Update ERC20 tests to support snforge upgrade

* Run linter

* Re-add dual20 tests (#1028)

* feat: migrate event tests

* feat: update workflow

* feat: add foundry utils

* feat: finish erc20 and erc20votes migration

* feat: remove dual case tests

* refactor: format files

* refactor: variable name

* Update src/tests/token.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/token/erc20.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/utils/foundry.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/token/erc20/test_erc20_votes.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* feat: apply review updates

* feat: readd dual20 tests

* refactor: remove unnecessary import

* feat: add dual20 import

---------

Co-authored-by: Andrew Fleming <[email protected]>

* Migrate security tests (#1034)

* migrate pausable and initializable tests

* migrate reentrancy guard tests

* clean up tests

* fix fmt

* add event trait to pausable, fix tests

* Apply suggestions from code review

Co-authored-by: Eric Nordelo <[email protected]>

* fix fmt

---------

Co-authored-by: Eric Nordelo <[email protected]>

* Migrate erc1155 tests (#1037)

* feat: update common module

* feat: migrate dual modules

* feat: finish component test migration

* refactor: remove unnecessary imports

* feat: apply review updates

* Migrate erc721 tests (#1027)

* feat: migrate event tests

* feat: update workflow

* feat: add foundry utils

* feat: finish erc20 and erc20votes migration

* feat: remove dual case tests

* refactor: format files

* refactor: variable name

* Update src/tests/token.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/token/erc20.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/utils/foundry.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/token/erc20/test_erc20_votes.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* feat: apply review updates

* feat: migrate erc721 components tests

* refactor: remove extra line

* feat: apply review updates

* feat: update utilities

* feat: apply review updates

* fix: ignore tests

---------

Co-authored-by: Andrew Fleming <[email protected]>

* Check ignored tests (#1049)

* test: check ignored tests and add reason

* feat: apply review updates

* Migrate Ownable tests (#1033)

* Update ERC20Votes tests

* Run linter

* Add test helpers for Ownable tests

* Migrate Ownable tests

* Migrate OwnableTwoStep tests

* Migrate Ownable Dual Dispatcher tests

* Support event changes in snforge 0.26

* Resolve review issues

* Address review comments

* Migrate Upgrades tests (#1051)

* Migrate Upgrades tests to Foundry

* Update src/tests/upgrades/test_upgradeable.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* Update src/tests/upgrades/test_upgradeable.cairo

Co-authored-by: Andrew Fleming <[email protected]>

---------

Co-authored-by: Eric Nordelo <[email protected]>
Co-authored-by: Andrew Fleming <[email protected]>

* Migrate erc20 preset tests (#1055)

* feat: include erc20 preset tests

* feat: tests updated

* feat: remove unused imports

* feat: add deployments

* Update src/tests/utils/common.cairo

Co-authored-by: Andrew Fleming <[email protected]>

* feat: apply review updates

---------

Co-authored-by: Andrew Fleming <[email protected]>

* feat: update ignored tests messages (#1056)

* Migrate erc1155 preset tests (#1057)

* feat: update tests

* refactor: remove unnecessary import

* Migrate cryptography and UDC tests (#1059)

* fix import name

* migrate cryptography tests

* migrate udc tests

* fix fmt

* fix impl name

* fix event assertions

* re-add class hash helper

* Migrate eth account tests (#1058)

* feat: update dual_eth_account tests

* feat: update eth_account tests

* refactor: remove unused helpers

* refactor: some inconsistencies

* Update src/tests/account/ethereum/test_eth_account.cairo

Co-authored-by: immrsd <[email protected]>

* feat: apply review updates

* refactor: format files

* Update src/tests/account/ethereum/test_eth_account.cairo

Co-authored-by: Andrew Fleming <[email protected]>

---------

Co-authored-by: immrsd <[email protected]>
Co-authored-by: Andrew Fleming <[email protected]>

* Migrate eth account preset tests (#1060)

* feat: update dual_eth_account tests

* feat: update eth_account tests

* refactor: remove unused helpers

* feat: update eth account preset tests

* Update src/tests/account/ethereum/test_eth_account.cairo

Co-authored-by: immrsd <[email protected]>

* Update src/tests/presets/test_eth_account.cairo

Co-authored-by: immrsd <[email protected]>

* feat: apply review updates

---------

Co-authored-by: immrsd <[email protected]>

* Migrate AccessControl Tests (#1044)

* Migrate AccessControl tests

* Migrate AccessControl Dual Dispatcher tests

* Fix imports

* Address review comments

* Update error messages

* Bring back separator line

* Fix ignore reasons in access module

* Fix review issues

* Migrate Starknet Account tests (#1050)

* Update test utils and helpers

* Update signature tests

* Update account tests

* Update dual account tests

* Run linter

* Run linter

* Fix review issues

* Update ignore reason messages

* Run linter

* Support eth account tests changes

* Run linter

* Improve setup functions, remove unused imports

* Remove unnecessary accept_ownership step, make use of serialized_sign fn

* Migrate Starknet Account Preset tests (#1069)

* Update test utils and helpers

* Update signature tests

* Update account tests

* Update dual account tests

* Run linter

* Run linter

* Fix review issues

* Update ignore reason messages

* Run linter

* Support eth account tests changes

* Run linter

* Improve setup functions, remove unused imports

* Remove unnecessary accept_ownership step, make use of serialized_sign fn

* Migrate Starknet Account Preset tests, make some code improvements

* Run linter

* Remove unnecessary clone

* Update the comment for assert_entrypoint_not_found_error function

* Minor review fixes

* Bump scarb, merge changes from main in snforge migration (#1076)

* Remove unnecessary `mut`, minor fixes (#1032)

* clean up code

* change array syntax

* fix fmt

* Improve SNIP12 examples (#1036)

* docs: improve examples

* refactor: remove empty line

* Update docs/modules/ROOT/pages/guides/snip12.adoc

Co-authored-by: Andrew Fleming <[email protected]>

---------

Co-authored-by: Andrew Fleming <[email protected]>

* Release v0.15.0-rc.0 (#1039)

* feat: update CHANGELOG

* Bump version to 0.15.0-rc.0

* docs: add missing header

* feat: apply review suggestions

---------

Co-authored-by: ericnordelo <[email protected]>

* Bump cairo to 2.7.0-rc.1 (#1025)

* feat: migrate modules

* feat: delete cairo_project.toml

* feat: update tests

* feat: apply review updates

* fix: remove extra line

* feat: add CHANGELOG entry

* fix: CHANGELOG

* Bump Scarb to 2.7.0-rc.2 (#1052)

* bump scarb to 2.7.0-rc.2

* add changelog entry

* update changelog entry

* bump scarb in installation page

* Add timelock component (#996)

* start timelock comp draft

* move timelock to own dir, finish drafting component

* tmp: add utility impls

* add timelock mock

* add test mod for timelock

* fix commnet

* add constructor to timelock mock

* set min_delay in initializer

* start tests

* fix fmt

* fix schedule assertion

* add schedule tests

* fix fmt

* remove unused import

* fix errs, _before_call

* start execute tests

* fix fmt

* fix after_call

* add execute tests

* add abi interface

* add reentrancy mock for timelock

* add tests for cancel and update_delay

* fix hash_op test

* add execute with predecessor test

* add timelock utils, add operation_state debug impl

* fix fmt

* improve imports

* improve _execute

* add basic mock for tests

* add tmp call struct

* add batch fns to interface

* add batch fns

* refactor tests to use dedicated mock, add batch tests

* fix fmt

* remove use clause

* add timelock mixin

* fix interface name

* improve event assertions

* fix execute and schedule events

* fix fmt

* add safe token transfer tests

* fix fmt

* tidy up code

* add descriptions to events

* clean up code

* inline CallPartialEq fns

* start fn descriptions

* remove comments

* remove comment

* fix fmt

* add changelog entries

* improve spacing

* add line break to hash test

* clean up tests

* clean up tests

* fix constants in attacker impl

* add initializer helper, register access control support

* add _before_call and _after_call tests

* fix reentrant batch mock call

* add _schedule and _execute tests

* add timelock description

* fix formatting

* fix comments

* fix comment

* fmt

* tidy up tests

* remove batch helper fn

* remove event from mocks

* Apply suggestions from code review

Co-authored-by: Eric Nordelo <[email protected]>

* update spdx

* remove token receiver support

* add additional cancel tests

* Apply suggestions from code review

Co-authored-by: Eric Nordelo <[email protected]>

* initializer: remove mut, use while loop

* fix fmt

* add assert_only_self fn

* fix getter comments re: pending/waiting

* add assert_only_role

* add specific op errors

* make event names consistent

* fix test

* remove serialization from HashCallImpl

* remove unused components from mock

* clean up code

* update to 2.7.0-rc.1

* fix fmt

* import Call from corelib

* update spdx

* fix fmt

* move OperationState, derive debug

* fix fmt

* fix hash impls

* add for loops

* fix PartialEq, add tests

* fix fmt

* simplify mixin fns

* switch Poseidon to Pedersen

* make admin a req in initializer

* update tests with admin

* fix fmt

* fix comment

* undo changes

* add no admin initializer test

---------

Co-authored-by: Eric Nordelo <[email protected]>

* bump scarb to 2.7.0-rc.4 (#1064)

* bump scarb to 2.7.0-rc.4

* add changelog

* bump scarb in installation page

* feat: update workflow and fix warning (#1066)

* Add actionlint (#1067)

* add actionlint for workflows

* remove codecov and gitmodules

* bump checkout to v4, add double quotes, fmt

* bump md lint

* re-add cairo version

* group redirects

* fix link in security

* add local actionlint matcher json

* re-add changelog entry

* add tmp usc install to ci

* fix ci

---------

Co-authored-by: Eric Nordelo <[email protected]>
Co-authored-by: ericnordelo <[email protected]>
Co-authored-by: JChoy <[email protected]>

* Migrate timelock tests (#1061)

* Remove unnecessary `mut`, minor fixes (#1032)

* clean up code

* change array syntax

* fix fmt

* Improve SNIP12 examples (#1036)

* docs: improve examples

* refactor: remove empty line

* Update docs/modules/ROOT/pages/guides/snip12.adoc

Co-authored-by: Andrew Fleming <[email protected]>

---------

Co-authored-by: Andrew Fleming <[email protected]>

* Release v0.15.0-rc.0 (#1039)

* feat: update CHANGELOG

* Bump version to 0.15.0-rc.0

* docs: add missing header

* feat: apply review suggestions

---------

Co-authored-by: ericnordelo <[email protected]>

* Bump cairo to 2.7.0-rc.1 (#1025)

* feat: migrate modules

* feat: delete cairo_project.toml

* feat: update tests

* feat: apply review updates

* fix: remove extra line

* feat: add CHANGELOG entry

* fix: CHANGELOG

* Bump Scarb to 2.7.0-rc.2 (#1052)

* bump scarb to 2.7.0-rc.2

* add changelog entry

* update changelog entry

* bump scarb in installation page

* Add timelock component (#996)

* start timelock comp draft

* move timelock to own dir, finish drafting component

* tmp: add utility impls

* add timelock mock

* add test mod for timelock

* fix commnet

* add constructor to timelock mock

* set min_delay in initializer

* start tests

* fix fmt

* fix schedule assertion

* add schedule tests

* fix fmt

* remove unused import

* fix errs, _before_call

* start execute tests

* fix fmt

* fix after_call

* add execute tests

* add abi interface

* add reentrancy mock for timelock

* add tests for cancel and update_delay

* fix hash_op test

* add execute with predecessor test

* add timelock utils, add operation_state debug impl

* fix fmt

* improve imports

* improve _execute

* add basic mock for tests

* add tmp call struct

* add batch fns to interface

* add batch fns

* refactor tests to use dedicated mock, add batch tests

* fix fmt

* remove use clause

* add timelock mixin

* fix interface name

* improve event assertions

* fix execute and schedule events

* fix fmt

* add safe token transfer tests

* fix fmt

* tidy up code

* add descriptions to events

* clean up code

* inline CallPartialEq fns

* start fn descriptions

* remove comments

* remove comment

* fix fmt

* add changelog entries

* improve spacing

* add line break to hash test

* clean up tests

* clean up tests

* fix constants in attacker impl

* add initializer helper, register access control support

* add _before_call and _after_call tests

* fix reentrant batch mock call

* add _schedule and _execute tests

* add timelock description

* fix formatting

* fix comments

* fix comment

* fmt

* tidy up tests

* remove batch helper fn

* remove event from mocks

* Apply suggestions from code review

Co-authored-by: Eric Nordelo <[email protected]>

* update spdx

* remove token receiver support

* add additional cancel tests

* Apply suggestions from code review

Co-authored-by: Eric Nordelo <[email protected]>

* initializer: remove mut, use while loop

* fix fmt

* add assert_only_self fn

* fix getter comments re: pending/waiting

* add assert_only_role

* add specific op errors

* make event names consistent

* fix test

* remove serialization from HashCallImpl

* remove unused components from mock

* clean up code

* update to 2.7.0-rc.1

* fix fmt

* import Call from corelib

* update spdx

* fix fmt

* move OperationState, derive debug

* fix fmt

* fix hash impls

* add for loops

* fix PartialEq, add tests

* fix fmt

* simplify mixin fns

* switch Poseidon to Pedersen

* make admin a req in initializer

* update tests with admin

* fix fmt

* fix comment

* undo changes

* add no admin initializer test

---------

Co-authored-by: Eric Nordelo <[email protected]>

* fix fmt

* bump scarb to 2.7.0-rc.4 (#1064)

* bump scarb to 2.7.0-rc.4

* add changelog

* bump scarb in installation page

* fix fmt

* feat: update workflow and fix warning (#1066)

* bump scarb

* add tmp usc install in ci

* fix changelog

---------

Co-authored-by: Eric Nordelo <[email protected]>
Co-authored-by: ericnordelo <[email protected]>
Co-authored-by: JChoy <[email protected]>

---------

Co-authored-by: Andrew Fleming <[email protected]>
Co-authored-by: immrsd <[email protected]>
Co-authored-by: Andrew Fleming <[email protected]>
Co-authored-by: ericnordelo <[email protected]>
Co-authored-by: JChoy <[email protected]>
  • Loading branch information
6 people authored Aug 1, 2024
1 parent f72cab9 commit 8561d75
Show file tree
Hide file tree
Showing 53 changed files with 4,001 additions and 3,301 deletions.
14 changes: 11 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ name: Lint and test

on:
pull_request:
branches:
- main
push:
branches:
- main
Expand All @@ -21,6 +19,13 @@ jobs:
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: ${{ env.SCARB_VERSION }}
- name: Extract foundry version
run: |
FOUNDRY_VERSION=$(grep 'snforge_std = ' Scarb.toml | sed 's/snforge_std = .\+ tag = "v\(.*\)".*/\1/')
echo "FOUNDRY_VERSION=$FOUNDRY_VERSION" >> "$GITHUB_ENV"
- uses: foundry-rs/setup-snfoundry@v3
with:
starknet-foundry-version: ${{ env.FOUNDRY_VERSION }}
- name: Markdown lint
uses: DavidAnson/markdownlint-cli2-action@b4c9feab76d8025d1e83c653fa3990936df0e6c8 # v16
with:
Expand All @@ -29,5 +34,8 @@ jobs:
!PULL_REQUEST_TEMPLATE.md
- name: Cairo lint
run: scarb fmt --check
- name: Temporary USC manually install
run: |
curl -L https://raw.githubusercontent.com/software-mansion/universal-sierra-compiler/master/scripts/install.sh | sh -s -- v2.2.0-rc.1
- name: Cairo test
run: scarb test
run: snforge test
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ corelib/
# Scarb
target/

# Starknet Foundry
.snfoundry_cache/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
8 changes: 8 additions & 0 deletions Scarb.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,11 @@ version = 1
[[package]]
name = "openzeppelin"
version = "0.15.0-rc.0"
dependencies = [
"snforge_std",
]

[[package]]
name = "snforge_std"
version = "0.26.0"
source = "git+https://github.com/foundry-rs/starknet-foundry.git?tag=v0.26.0#50eb589db65e113efe4f09241feb59b574228c7e"
4 changes: 1 addition & 3 deletions Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ keywords = ["openzeppelin", "starknet", "cairo", "contracts", "security", "stand

[dependencies]
starknet = "2.7.0-rc.3"

[dev-dependencies]
cairo_test = "2.7.0-rc.3"
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry.git", tag = "v0.26.0" }

[lib]

Expand Down
2 changes: 0 additions & 2 deletions docs/modules/ROOT/pages/accounts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,6 @@ Here’s an example of a basic contract:
mod MyEthAccount {
use openzeppelin::account::EthAccountComponent;
use openzeppelin::account::interface::EthPublicKey;
use openzeppelin::account::utils::secp256k1::Secp256k1PointSerde;
use openzeppelin::introspection::src5::SRC5Component;
use starknet::ClassHash;
Expand Down Expand Up @@ -389,7 +388,6 @@ First, let's take the example account we created before and deploy it:
mod MyEthAccount {
use openzeppelin::account::EthAccountComponent;
use openzeppelin::account::interface::EthPublicKey;
use openzeppelin::account::utils::secp256k1::Secp256k1PointSerde;
use openzeppelin::introspection::src5::SRC5Component;

component!(path: EthAccountComponent, storage: eth_account, event: EthAccountEvent);
Expand Down
1 change: 0 additions & 1 deletion src/tests.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ mod cryptography;
mod governance;
#[cfg(test)]
mod introspection;
#[cfg(test)]
mod mocks;
#[cfg(test)]
mod presets;
Expand Down
44 changes: 24 additions & 20 deletions src/tests/access/common.cairo
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
use openzeppelin::access::ownable::OwnableComponent::OwnershipTransferred;
use openzeppelin::access::ownable::OwnableComponent;
use openzeppelin::tests::utils::EventSpyExt;
use openzeppelin::tests::utils;
use openzeppelin::utils::serde::SerializedAppend;
use snforge_std::EventSpy;
use starknet::ContractAddress;

pub(crate) fn assert_only_event_ownership_transferred(
contract: ContractAddress, previous_owner: ContractAddress, new_owner: ContractAddress
) {
assert_event_ownership_transferred(contract, previous_owner, new_owner);
utils::assert_no_events_left(contract);
}

pub(crate) fn assert_event_ownership_transferred(
contract: ContractAddress, previous_owner: ContractAddress, new_owner: ContractAddress
) {
let event = utils::pop_log::<OwnableComponent::Event>(contract).unwrap();
let expected = OwnableComponent::Event::OwnershipTransferred(
OwnershipTransferred { previous_owner, new_owner }
);
assert!(event == expected);
#[generate_trait]
pub(crate) impl OwnableSpyHelpersImpl of OwnableSpyHelpers {
fn assert_only_event_ownership_transferred(
ref self: EventSpy,
contract: ContractAddress,
previous_owner: ContractAddress,
new_owner: ContractAddress
) {
self.assert_event_ownership_transferred(contract, previous_owner, new_owner);
self.assert_no_events_left_from(contract);
}

let mut indexed_keys = array![];
indexed_keys.append_serde(selector!("OwnershipTransferred"));
indexed_keys.append_serde(previous_owner);
indexed_keys.append_serde(new_owner);
utils::assert_indexed_keys(event, indexed_keys.span());
fn assert_event_ownership_transferred(
ref self: EventSpy,
contract: ContractAddress,
previous_owner: ContractAddress,
new_owner: ContractAddress
) {
let expected = OwnableComponent::Event::OwnershipTransferred(
OwnershipTransferred { previous_owner, new_owner }
);
self.assert_emitted_single(contract, expected);
}
}
Loading

0 comments on commit 8561d75

Please sign in to comment.