An example of writing and testing an Upgradeable smart contract using the OpenZeppelin UUPS Libraries.
Here's a more complete walkthrough of upgradeable contracts and Transparent vs. UUPS
# this runs the deploy script on a local network, to run for real you'll need to broadcast.
# See forge scripting for more info.
forge script DeployUUPS
forge test
forge install foundry-rs/forge-std
forge install OpenZeppelin/openzeppelin-contracts
forge install OpenZeppelin/openzeppelin-contracts-upgradeable
forge install paulrberg/prb-test@0.1.2