Test generation for Solidity in Foundry format (https://github.com/foundry-rs/foundry).
Project description
solidity_testgen
Test generation for Solidity in Foundry format (https://github.com/foundry-rs/foundry)
Example of Contract under Test:
contract C {
uint x;
function f(uint _x) public {}
function g(uint _x, uint _y) public {}
function w(uint _x) public {}
function i(uint _x) internal {}
}
Expected results of Test Generation:
import "forge-std/Test.sol";
import "../src/contract_under_test.sol";
contract contract_under_test_Test is Test {
C c0, c1, c2, ... cN;
function setUp() public {
c0 = new C(); c1 = new C(); ... cN = new C();
}
function test_0() public {
c0.f();
c0.g();
....
c0.w();
}
........
function test_n() public {
cN.g();
cN.w();
....
cN.w();
}
}
Dependencies / Setup
Also don't forget to get your user permission to interact with docker: https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue
-
Python3 & pip
-
GenHtml (part or lcov)
After dependencies are installed, you can install the package by calling:
sudo pip3 install solTg
After this, solTg can be used from any directory, calling the command:
solTg -i <input file/directory with .sol files>
Or you can run it locally, it is needed to install all the package requirements first, by calling
pip install -r requirements.txt
run test generation for specified sol-file with Python
solTg -i ./src/Loop_1.sol
You can also give specific output dir:
solTg -i folder_path -o ../testgen_output
If project is to be run from the repo, call:
python3 ./solTg/RunAll.py -i <some file/dir>
Run forge project:
build project
forge build
run all tests
forge test
run specified test
forge test --match Loop*
Generate a report:
python3 ./scripts/ReportBuilder.py -i testgen_dir
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.