Add storage layout diff checks (#2991)
parent
f44589e454
commit
3501755816
@ -0,0 +1,6 @@ |
||||
--- |
||||
'@hyperlane-xyz/sdk': patch |
||||
'@hyperlane-xyz/core': patch |
||||
--- |
||||
|
||||
Rename StaticProtocolFee hook to ProtocolFee for clarity |
@ -0,0 +1,66 @@ |
||||
name: Check Storage Layout Changes |
||||
|
||||
on: |
||||
pull_request: |
||||
branches: [main] |
||||
paths: |
||||
- 'solidity/**' |
||||
workflow_dispatch: |
||||
|
||||
jobs: |
||||
diff-check: |
||||
runs-on: ubuntu-latest |
||||
|
||||
steps: |
||||
# Checkout the PR branch |
||||
- name: Checkout PR branch |
||||
uses: actions/checkout@v3 |
||||
with: |
||||
ref: ${{ github.event.pull_request.head.sha }} |
||||
submodules: recursive |
||||
|
||||
- uses: actions/setup-node@v3 |
||||
with: |
||||
node-version: 18 |
||||
|
||||
- name: yarn-cache |
||||
uses: actions/cache@v3 |
||||
with: |
||||
path: | |
||||
**/node_modules |
||||
.yarn |
||||
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }} |
||||
|
||||
- name: yarn-install |
||||
run: yarn install |
||||
|
||||
- name: foundry-install |
||||
uses: onbjerg/foundry-toolchain@v1 |
||||
|
||||
# Run the command on PR branch |
||||
- name: Run command on PR branch |
||||
run: yarn workspace @hyperlane-xyz/core storage HEAD-storage |
||||
|
||||
# Checkout the target branch (base) |
||||
- name: Checkout target branch (base) contracts |
||||
env: |
||||
BASE_REF: ${{ github.event.pull_request.base.sha }} |
||||
run: | |
||||
git fetch origin $BASE_REF |
||||
git checkout $BASE_REF -- solidity/contracts |
||||
|
||||
# Run the command on the target branch |
||||
- name: Run command on target branch |
||||
run: yarn workspace @hyperlane-xyz/core storage base-storage |
||||
|
||||
# Compare outputs |
||||
- name: Compare outputs |
||||
run: diff --unified solidity/base-storage solidity/HEAD-storage > layout.diff |
||||
|
||||
- name: Comment PR with layout diff |
||||
uses: yorhodes/actions-comment-pull-request@v2.4.6 |
||||
with: |
||||
header: Storage Layout Diff |
||||
filePath: layout.diff |
||||
mdLanguage: diff |
||||
comment_tag: storagelayoutdiff |
@ -0,0 +1,21 @@ |
||||
#!/bin/bash |
||||
OUTPUT_PATH=${1:-storage} |
||||
EXCLUDE="test|mock|interfaces|libs|upgrade|README|Abstract|Static" |
||||
|
||||
IFS=$'\n' |
||||
CONTRACT_FILES=($(find ./contracts -type f)) |
||||
unset IFS |
||||
|
||||
echo "Generating layouts in $OUTPUT_PATH" |
||||
mkdir -p $OUTPUT_PATH |
||||
|
||||
for file in "${CONTRACT_FILES[@]}"; |
||||
do |
||||
if [[ $file =~ .*($EXCLUDE).* ]]; then |
||||
continue |
||||
fi |
||||
|
||||
contract=$(basename "$file" .sol) |
||||
echo "Generating storage layout of $contract" |
||||
forge inspect "$contract" storage --pretty > "$OUTPUT_PATH/$contract.md" |
||||
done |
Loading…
Reference in new issue