Skip to content

Commit

Permalink
dev: migrate to starknet-foundry (#876)
Browse files Browse the repository at this point in the history
* dev: before moving files

* dev: used starknet-foundry in contracts package

* dev: used starknet-foundry in contracts package

* fix codespell errors
  • Loading branch information
enitrat committed Aug 27, 2024
1 parent 29034e3 commit 4e29cc6
Show file tree
Hide file tree
Showing 36 changed files with 1,129 additions and 382 deletions.
2 changes: 2 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[codespell]
ignore-words-list = crate
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
scarb 2.7.1
starknet-foundry 0.27.0
starknet-foundry 0.28.0
31 changes: 31 additions & 0 deletions Scarb.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,18 @@ version = 1
[[package]]
name = "alexandria_data_structures"
version = "0.1.0"
dependencies = [
"snforge_std",
]

[[package]]
name = "contracts"
version = "0.1.0"
dependencies = [
"evm",
"openzeppelin",
"snforge_std",
"snforge_utils",
"utils",
]

Expand All @@ -21,6 +26,8 @@ dependencies = [
"contracts",
"garaga",
"openzeppelin",
"snforge_std",
"snforge_utils",
"utils",
]

Expand All @@ -32,11 +39,35 @@ source = "git+https://github.com/keep-starknet-strange/garaga.git#933784eee38113
[[package]]
name = "openzeppelin"
version = "0.1.0"
dependencies = [
"snforge_std",
]

[[package]]
name = "snforge_scarb_plugin"
version = "0.1.0"
source = "git+https://github.com/foundry-rs/starknet-foundry.git?tag=v0.28.0#4dfe39d96690ed6b3d56971512700de3f58288ea"

[[package]]
name = "snforge_std"
version = "0.28.0"
source = "git+https://github.com/foundry-rs/starknet-foundry.git?tag=v0.28.0#4dfe39d96690ed6b3d56971512700de3f58288ea"
dependencies = [
"snforge_scarb_plugin",
]

[[package]]
name = "snforge_utils"
version = "0.1.0"
dependencies = [
"snforge_std",
]

[[package]]
name = "utils"
version = "0.1.0"
dependencies = [
"alexandria_data_structures",
"evm",
"snforge_std",
]
4 changes: 0 additions & 4 deletions Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ license-file = "LICENSE"

[workspace.dependencies]
starknet = "2.7.1"
cairo_test = "2.7.1"

[workspace.tool.fmt]
sort-module-level-items = true

[dev-dependencies]
cairo_test = "2.7.1"
6 changes: 5 additions & 1 deletion crates/alexandria_data_structures/Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,8 @@ version = "0.1.0"
[dependencies]

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

[scripts]
test = "snforge test --max-n-steps 4294967295"
test-profiling = "snforge test --max-n-steps 4294967295 --build-profile"
9 changes: 8 additions & 1 deletion crates/contracts/Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,16 @@ fmt.workspace = true
[[target.starknet-contract]]
casm = true
casm-add-pythonic-hints = true
build-external-contracts = ["openzeppelin::token::erc20::erc20::ERC20"]

[lib]
name = "contracts"

[dev-dependencies]
cairo_test = "2.7.1"
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry.git", tag = "v0.28.0" }
assert_macros = "0.1.0"
snforge_utils = { path = "../snforge_utils" }

[scripts]
test = "snforge test --max-n-steps 4294967295"
test-profiling = "snforge test --max-n-steps 4294967295 --build-profile"
6 changes: 3 additions & 3 deletions crates/contracts/src/kakarot_core/kakarot.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,22 @@ pub mod KakarotCore {
EOAClassHashChange: EOAClassHashChange,
}

#[derive(Drop, starknet::Event)]
#[derive(Copy, Drop, starknet::Event)]
struct AccountDeployed {
#[key]
evm_address: EthAddress,
#[key]
starknet_address: ContractAddress,
}

#[derive(Drop, starknet::Event)]
#[derive(Copy, Drop, starknet::Event)]
struct AccountClassHashChange {
old_class_hash: ClassHash,
new_class_hash: ClassHash,
}


#[derive(Drop, starknet::Event)]
#[derive(Copy, Drop, starknet::Event)]
struct EOAClassHashChange {
old_class_hash: ClassHash,
new_class_hash: ClassHash,
Expand Down
5 changes: 5 additions & 0 deletions crates/contracts/src/lib.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ mod test_utils;
// Account transparent proxy
mod uninitialized_account;

//TODO: hide this behind a feature flag
mod test_contracts {
mod test_upgradeable;
}

mod mocks {
mod cairo1_helpers_fixture;
}
1 change: 0 additions & 1 deletion crates/contracts/src/storage.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ mod tests {
StorageBaseAddress, StorageAddress, storage_base_address_from_felt252
};
use starknet::syscalls::storage_read_syscall;
use starknet::testing::set_contract_address;
use super::DerefMut;
use super::SnapshotDeref;
use super::StorageBytecode;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
use MockContractUpgradeableV0::HasComponentImpl_upgradeable_component;
use contracts::components::upgradeable::{IUpgradeableDispatcher, IUpgradeableDispatcherTrait};
use contracts::components::upgradeable::{upgradeable_component};
use contracts::test_utils;
use core::serde::Serde;
use core::starknet::{deploy_syscall, ClassHash, ContractAddress, testing};

Expand Down Expand Up @@ -67,23 +66,42 @@ mod MockContractUpgradeableV1 {
}
}

#[test]
fn test_upgradeable_update_contract() {
let (contract_address, _) = deploy_syscall(
MockContractUpgradeableV0::TEST_CLASS_HASH.try_into().unwrap(), 0, [].span(), false
)
.unwrap();

let version = IMockContractUpgradeableDispatcher { contract_address: contract_address }
.version();

assert(version == 0, 'version is not 0');

let new_class_hash: ClassHash = MockContractUpgradeableV1::TEST_CLASS_HASH.try_into().unwrap();

IUpgradeableDispatcher { contract_address: contract_address }.upgrade_contract(new_class_hash);

let version = IMockContractUpgradeableDispatcher { contract_address: contract_address }
.version();
assert(version == 1, 'version is not 1');
#[cfg(test)]
mod tests {
use snforge_std::{declare, DeclareResultTrait};
use starknet::{deploy_syscall, ClassHash};
use super::{
IMockContractUpgradeableDispatcher, IUpgradeableDispatcher, IUpgradeableDispatcherTrait,
IMockContractUpgradeableDispatcherTrait
};

#[test]
fn test_upgradeable_update_contract() {
let mock_contract_upgradeable_v0_class_hash = (*declare("MockContractUpgradeableV0")
.unwrap()
.contract_class()
.class_hash);
let (contract_address, _) = deploy_syscall(
mock_contract_upgradeable_v0_class_hash, 0, [].span(), false
)
.unwrap();

let version = IMockContractUpgradeableDispatcher { contract_address: contract_address }
.version();

assert(version == 0, 'version is not 0');

let mock_contract_upgradeable_v1_class_hash = (*declare("MockContractUpgradeableV1")
.unwrap()
.contract_class()
.class_hash);
let new_class_hash: ClassHash = mock_contract_upgradeable_v1_class_hash;

IUpgradeableDispatcher { contract_address: contract_address }
.upgrade_contract(new_class_hash);

let version = IMockContractUpgradeableDispatcher { contract_address: contract_address }
.version();
assert(version == 1, 'version is not 1');
}
}
Loading

0 comments on commit 4e29cc6

Please sign in to comment.