Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/gas.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Gas Snapshots

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

jobs:
gas-snapshots:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: v1.3.5

- name: Delete gas snapshot directory
run: rm -rf gas

- name: Regenerate gas snapshots
run: make test

- name: Check for uncommitted changes
run: |
git add gas/
git diff --cached --exit-code gas/ || {
echo "Gas snapshots are out of date. Run 'make test' locally and commit the updated gas/ files."
exit 1
}
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ clean:

test:
forge test
@forge test --json 2>/dev/null | python3 scripts/extract_gas.py
1 change: 1 addition & 0 deletions gas/BurnTest/testBurn.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
38906
1 change: 1 addition & 0 deletions gas/BurnTest/testBurnByActorId.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
38884
1 change: 1 addition & 0 deletions gas/BurnTest/testBurnByAddress.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
39519
1 change: 1 addition & 0 deletions gas/BurnTest/testBurnByAddressPayable.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
39673
1 change: 1 addition & 0 deletions gas/PayTest/testPayAddress.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
42503
1 change: 1 addition & 0 deletions gas/PayTest/testPayPayable.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
42388
1 change: 1 addition & 0 deletions gas/RandTest/testMockRandom.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
29459
1 change: 1 addition & 0 deletions gas/RandTest/testNextRandom.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6486
1 change: 1 addition & 0 deletions gas/RandTest/testUnmockedRandom.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8123
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
11232
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
48473
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testGetActorId.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
29132
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testGetActorIdAddress.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
28022
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testGetActorIdAddressReverts.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10939
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testGetActorIdReverts.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12065
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testMaskedIdAddressArbitraryId.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
30521
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testMaskedIdAddressBurnActor.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9679
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testMaskedIdAddressDoesNotExist.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8198
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
12377
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testMaskedIdAddressSystemActor.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9670
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
28066
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testResolveInvalidAddress.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8663
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6720
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testTryGetActorIdAddressExists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
27811
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testTryGetActorIdDoesNotExists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7669
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testTryGetActorIdExists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
29394
1 change: 1 addition & 0 deletions gas/ResolveAddressTest/testTryGetActorIdF410.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
28318
19 changes: 19 additions & 0 deletions scripts/extract_gas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env python3
"""Parse `forge test --json` output from stdin and write one file per test
under gas/<ContractName>/<testName>.txt containing the gas used."""

import json
import sys
import pathlib

GAS_DIR = pathlib.Path("gas")

data = json.load(sys.stdin)
for suite, info in data.items():
contract = suite.split(":")[1]
for test_name, result in info["test_results"].items():
name = test_name.rstrip("()")
gas = result["kind"]["Unit"]["gas"]
path = GAS_DIR / contract / f"{name}.txt"
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(f"{gas}\n")
Loading