Skip to content

ConfiguredTargetFactory: let analysis_test impls run when deps have AnalysisFailureInfo - #30503

Open
alex-torok wants to merge 1 commit into
bazelbuild:masterfrom
alex-torok:fix-issue-with-analysistest-allow-analysis-failures
Open

ConfiguredTargetFactory: let analysis_test impls run when deps have AnalysisFailureInfo#30503
alex-torok wants to merge 1 commit into
bazelbuild:masterfrom
alex-torok:fix-issue-with-analysistest-allow-analysis-failures

Conversation

@alex-torok

Copy link
Copy Markdown
Contributor

Description

When --allow_analysis_failures=true is set globally, ConfiguredTargetFactory short-circuited the rule impl for any rule whose deps had AnalysisFailureInfo. This broke analysis_test=True rules: their impl never ran, so no AnalysisTestResultInfo was returned, and the build errored with:

"rules with analysis_test=true must return an instance of AnalysisTestResultInfo"

analysis_test rules exist specifically to inspect dep analysis failures. The short-circuit is correct for ordinary rules that should propagate failures upward, but wrong for analysis_test rules whose impl is the intended consumer of AnalysisFailureInfo.

The fix adds a narrow guard: skip the short-circuit when the rule is an analysis_test. This allows bazel_skylib's analysistest.make(expect_failure=True) to work correctly even when --allow_analysis_failures is also set globally.

Motivation

Fixes #30500

Build API Changes

No

Checklist

  • I have added tests for the new use cases (if any).
  • I have updated the documentation (if applicable).

Release Notes

RELNOTES: None

…nalysisFailureInfo

When --allow_analysis_failures=true is set globally, ConfiguredTargetFactory
short-circuited the rule impl for any rule whose deps had AnalysisFailureInfo.
This broke analysis_test=True rules: their impl never ran, so no
AnalysisTestResultInfo was returned, and the build errored with:

  "rules with analysis_test=true must return an instance of AnalysisTestResultInfo"

analysis_test rules exist specifically to inspect dep analysis failures. The
short-circuit is correct for ordinary rules that should propagate failures
upward, but wrong for analysis_test rules whose impl is the intended consumer
of AnalysisFailureInfo.

The fix adds a narrow guard: skip the short-circuit when the rule is an
analysis_test. This allows bazel_skylib's analysistest.make(expect_failure=True)
to work correctly even when --allow_analysis_failures is also set globally.
@alex-torok
alex-torok requested a review from a team as a code owner July 28, 2026 20:08
@alex-torok
alex-torok requested review from mai93 and removed request for a team July 28, 2026 20:08
@github-actions github-actions Bot added team-Configurability platforms, toolchains, cquery, select(), config transitions awaiting-review PR is awaiting review from an assigned reviewer labels Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-review PR is awaiting review from an assigned reviewer team-Configurability platforms, toolchains, cquery, select(), config transitions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: --allow_analysis_failures breaks analysis_test rules with expect_failure = True

1 participant