All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- incorrect caller address bug
- significantly reduced ram usage
#[fuzzer(...)]
attribute allowing to specify a fuzzer configuration for a single test case- Support for
u8
,u16
,u32
,u64
,u128
,u256
types to fuzzer --clean-cache
flag- Changed interface of
L1Handler.execute
andL1Handler
(droppedfee
parameter, added result handling withRevertedTransaction
) - Contract now has associated state, more about it here
- cheatcodes (
prank
,roll
,warp
) now work on forked Cairo 0 contracts
- Spying events interface is updated to enable the use of events defined inside contracts in assertions
- Test are executed in parallel
- Fixed inconsistent pointers bug foundry-rs#659
- Fixed an issue where
deploy_at
would not trigger the constructors foundry-rs#805
var
library function for reading environmental variables
- Using any concrete
block_id
when using forking mode, would lead to crashes
- Support for scarb workspaces
- Initial version of fuzz testing with randomly generated values
#[fork(...)]
attribute allowing testing against a network fork
- Tests are collected only from a package tree (
src/lib.cairo
as an entrypoint) andtests
folder:- If there is a
lib.cairo
file intests
folder, then it is treated as an entrypoint to thetests
package from which tests are collected - Otherwise, all test files matching
tests/*.cairo
regex are treated as modules and added to a single virtuallib.cairo
, which is treated as described above
- If there is a
account add
command for importing accounts to the accounts fileaccount create
command for creating openzeppelin accounts with starkli-style keystoreaccount deploy
command for deploying openzeppelin accounts with starkli-style keystore
--add-profile
no longer accepts-a
for short- allow the
id
property in multicalls to be referenced in the inputs ofdeploy
andinvoke
calls
deploy_at
cheatcode- printing failures summary at the end of an execution
- filtering tests now uses an absolute module tree path — it is possible to filter tests by module names, etc.
- non-zero exit code is returned when any tests fail
- mock_call works with dispatchers if contract does not exists
- support for starkli-style accounts, allowing the use of existing accounts
- fixed misleading error message when there was no scarb in PATH and
--path-to-scarb-toml
was passed - modified
multicall new
command output, to be in line with other commands outputs
- support for
keccak_syscall
syscall. It can be used directly in cairo tests l1_handler_execute
cheatcode- support for
roll
ing/warp
ing/prank
ing the constructor logic (precalculate address, prank, assert pranked state in constructor) spy_events
cheatcode- Functions
read_json
andFileParser<T>::parse_json
to load data from json files and deserialize it
- rename
TxtParser
trait toFileParser
- rename
parse_txt
trait toread_txt
- support for printing in contracts
spoof
cheatcode- snforge command-line flag
--init
- Support for custom networks - accounts created on custom networks are saved in
accounts-file
under network's chain_id accounts-file
field in Scarb.toml profile- Include the class hash of an account contract in the
accounts-file
--network
option together with thenetwork
field in Scarb.toml profile — previously used as a validation factor; now networks are identified by their chain_id
#[should_panic]
attribute support- Documentation to public methods
- Information sections to documentation about importing
snforge_std
- Print support for basic numeric data types
- Functions
parse_txt
andTxtParser<T>::deserialize_txt
to load data from plain text files and serialize it get_class_hash
cheatcodemock_call
cheatcodeprecalculate_address
cheatcode
- Exported
snforge_std
as a Scarb package, now you have to import it explicitly with e.g.use snforge_std::declare
and add it as a dependency to your Scarb.toml
[dependencies]
# ...
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.4.0" }
-
Moved
ForgeConfigFromScarb
toscarb.rs
and renamed toForgeConfig
-
Made private:
print_collected_tests_count
print_running_tests
print_test_result
print_test_summary
TestCaseSummary::from_run_result
TestCaseSummary::skipped
extract_result_data
StarknetArtifacts
StarknetContractArtifactPaths
StarknetContract
-
Split
dependencies_for_package
into separate methods:paths_for_package
corelib_for_package
target_name_for_package
compilation_unit_for_package
-
Fails test when user tries to use syscalls not supported by forge test runner
-
Updated cairo-lang to 2.1.0, starknet-api to 0.4.1 and blockifier to 0.2.0-rc0
- Added
--class-hash
flag to account create/deploy, allowing for custom openzeppelin account contract class hash
warp
cheatcoderoll
cheatcodeprank
cheatcode- Most unsafe libfuncs can now be used in contracts
declare
return type tostarknet::ClassHash
, doesn't return aResult
PreparedContract
class_hash
changed tostarknet::ClassHash
deploy
return type tostarknet::ContractAddress
- Using the same cairo file names as corelib files no longer fails test execution
- multicall as a single transaction
- account creation and deployment
--wait
flag to wait for transaction to be accepted/rejected
- sierra and casm artifacts are now required in Scarb.toml for contract declaration
- improved error messages
class_hash
es calculation- Test collection
- Initial release