-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(cli): forge build for tests by default #1473
base: dev
Are you sure you want to change the base?
Conversation
|
packages/cli/src/foundry.ts
Outdated
}); | ||
}); | ||
} else { | ||
log(yellow('Skipping forge build...')); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here could be something like: log(yellow('--skip-compile flag detected, skipping forge build...'));
?🤔
packages/cli/src/foundry.ts
Outdated
const cannonfilePath = path.resolve(cannonfile); | ||
const projectDirectory = path.dirname(cannonfilePath); | ||
|
||
log(bold('Building the foundry project...')); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could be inside line 172
packages/cli/src/foundry.ts
Outdated
const forgeBuildArgs = [ | ||
'build', | ||
'--build-info', | ||
'--ast', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove the --ast flag.
Context: In a past Forge update (commit #7197) stopped generating AST by default. This creates compatibility issues with older Forge versions, where the AST was generated by default, and using the --ast
flag can now trigger errors since some versions don’t recognize it.
Instead, the --build-info
flag is supported across all Forge versions and reliably outputs the AST, making it the safer option.
const artifact = JSON.parse(artifactBuffer.toString()) as any; | ||
if (!artifact.ast) { | ||
throw new Error(`Unable to find output from forge with ast for ${inputContractName} (from ${name}). Before running this command, run forge build --ast`); | ||
} | ||
possibleArtifacts.push(artifact); | ||
} | ||
|
||
if (!possibleArtifacts.length) { | ||
throw new Error(`no contract was found by name: ${inputContractName} (from ${name})`); | ||
throw new Error(`Unable to find output from forge with ast for ${inputContractName} (from ${name}). Before running this command, run forge build --ast`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The cannon test command now runs forgeBuild, ensuring that artifacts always include the AST. This fix resolves the issue of missing AST in artifacts, so theoretically, this should no longer occur.
Previously, cannon test didn’t trigger a forge build, so forge executes forge build (when it wasn't built or it was the first time like for instance the CI) behind the scenes and by default it does not include the AST.
No description provided.