mirror of https://github.com/ConsenSys/mythril
Add pre-commit hook definition + test (#1877)
* Add pre-commit hook + test * Update README.md * Update README.md * update README.md Co-authored-by: Nikhil Parasaram <tommycjniko@gmail.com> --------- Co-authored-by: Nikhil Parasaram <nikhilparasaram@gmail.com> Co-authored-by: Nikhil Parasaram <tommycjniko@gmail.com>pull/1874/head
parent
e64be9d3a3
commit
9bbe7d607e
@ -0,0 +1,32 @@ |
|||||||
|
name: pre-commit |
||||||
|
|
||||||
|
on: |
||||||
|
push: |
||||||
|
branches: |
||||||
|
- master |
||||||
|
- develop |
||||||
|
tags: |
||||||
|
- '*' |
||||||
|
pull_request: |
||||||
|
paths: |
||||||
|
- .github/workflows/pre-commit-hooks-test.yml |
||||||
|
- .pre-commit-hooks.yaml |
||||||
|
- tests/pre-commit-hooks/* |
||||||
|
- requirements.txt |
||||||
|
- setup.py |
||||||
|
|
||||||
|
jobs: |
||||||
|
hooks-test: |
||||||
|
runs-on: ubuntu-latest |
||||||
|
name: test hooks |
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v4 |
||||||
|
- uses: actions/setup-python@v5 |
||||||
|
with: |
||||||
|
python-version: '3.12' |
||||||
|
- name: Install pre-commit |
||||||
|
run: | |
||||||
|
python -m pip install pre-commit |
||||||
|
- name: Test hooks |
||||||
|
run: | |
||||||
|
./tests/pre-commit-hooks/test.sh |
@ -0,0 +1,8 @@ |
|||||||
|
- id: mythril |
||||||
|
name: Mythril |
||||||
|
description: Analyze EVM bytecode with Mythril |
||||||
|
entry: myth |
||||||
|
args: |
||||||
|
- analyze |
||||||
|
language: python |
||||||
|
types: ["solidity"] |
@ -0,0 +1,14 @@ |
|||||||
|
// SPDX-License-Identifier: Apache-2.0 |
||||||
|
pragma solidity ^0.8.26; |
||||||
|
|
||||||
|
contract Counter { |
||||||
|
uint256 public number; |
||||||
|
|
||||||
|
function setNumber(uint256 newNumber) public { |
||||||
|
number = newNumber; |
||||||
|
} |
||||||
|
|
||||||
|
function increment() public { |
||||||
|
number++; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
|
||||||
|
set -o errtrace -o nounset -o pipefail -o errexit |
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" |
||||||
|
|
||||||
|
# Create temp working directory for mock repo |
||||||
|
MOCK_REPO=$(mktemp -d) |
||||||
|
if [[ ! "$MOCK_REPO" || ! -d "$MOCK_REPO" ]]; then |
||||||
|
echo "Could not create temp dir" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
function cleanup { |
||||||
|
echo "Deleting temp working directory $MOCK_REPO" |
||||||
|
rm -rf "$MOCK_REPO" |
||||||
|
} |
||||||
|
trap cleanup EXIT |
||||||
|
|
||||||
|
# Filling the mock repo |
||||||
|
pushd "$MOCK_REPO" >/dev/null || exit 1 |
||||||
|
git init --initial-branch=master |
||||||
|
git config user.email "test@example.com" |
||||||
|
git config user.name "pre-commit test" |
||||||
|
cp "$SCRIPT_DIR/Counter.sol" . |
||||||
|
git add . |
||||||
|
git commit -m "Initial commit" |
||||||
|
|
||||||
|
# Run pre-commit inside the mock repo while referencing the mythril directory, |
||||||
|
# where the .pre-commit-hooks.yaml is located. |
||||||
|
pre-commit try-repo "$SCRIPT_DIR/../.." mythril --verbose --color=always --all-files |
Loading…
Reference in new issue