foundry-rs / forge-std

Forge Standard Library is a collection of helpful contracts for use with forge and foundry. It leverages forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes. For more in-depth usage examples checkout the tests.
Apache License 2.0
836 stars 331 forks source link

Meta: Upstreaming the assertions to PRBTest #128

Closed PaulRBerg closed 2 years ago

PaulRBerg commented 2 years ago

This discussion is contingent on bumping the pragma to >=0.8.0 <0.9.0.

Building up on the arguments I have made in Why Choose PRBTest Over DSTest?:

  1. Switching to PRBTest would free Forge Std of the path dependence problem that plagues DSTest (that is, all DappHub projects depend upon DSTest, so updating it is painful to orchestrate). PRBTest is a brand new project, and I have designed it from the get go to never suffer from path dependence.
  2. Letting PRBTest handle all testing assertions would take a burden off the shoulders of Forge Std. Forge Std could instead focus on its juiciest features, such as StdStorage, and could continue "moving fast and breaking things" knowing that unless PRBTest is explicitly version bumped, the assertion syntax will remain the same.
  3. Forge Std wouldn't have to maintain the Vm interface anymore.
  4. Forge Std wouldn't have to maintain the tests in StdAssertions.t.sol anymore.
  5. PRBTest has a more permissive license than DSTest. MIT versus GPL v3.

Finally, on a personal level, Foundry has become my primary development framework. It's what I recommend to anyone looking to jump into Ethereum development. I've also recently become a frequent contributor to Forge Std and the Foundry Book. Upstreaming the assertions to PRBTest would make us both more agile.

ZeroEkkusu commented 2 years ago

Closing, as discussed in #139.