Solidity test generator is a tool that generates Truffle compatible JavaScript tests for a smart contract written in Solidity language. This tool is a PoC and is not reliable with large scale smart contracts.
- Mythril Classic with test input generation module:
https://github.com/pauliax/mythril-classic/
-
Solidity compilator (solc), recommended version: 0.4.25
-
NodeJS & npm
-
node-gyp:
npm install -g node-gyp- Python 2.7, on Windows can be installed by running this command:
npm install --global --production windows-build-tools- Install dependencies after cloning this repo:
npm install-
Add Myth and solc to environment variables
-
Ubuntu 18.0.4 (also works on WSL)
-
Truffle 4:
npm install -g truffle@4- Add truffle-assertions to your Truffle project:
npm install truffle-assertions- If you want to check the code coverage, add solidity-coverage to your Truffle project (https://github.com/sc-forks/solidity-coverage):
npm install --save-dev solidity-coverageYou can run solidity-coverage by running this command:
./node_modules/.bin/solidity-coverage- Run Mythril Classic on smart contract and place generated txs.json file to data folder:
./myth -v 4 -xo jsonv2 <PATH_TO_THE_SMART_CONTRACT> -m test_input_generator- Run Solidity compilator with --abi flag on the same smart contract:
solc --abi <PATH_TO_THE_SMART_CONTRACT>- Run Solidity test generator:
node indexGenerated test file is placed in generated-tests directory. You need to manually move this file to your Truffle project. Also, do not forget to install truffle-assertions package. Run the tests:
truffle testSometimes generated tests fail so you need to manually review them and fix or comment them out.
TBA