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