From 66bb47ade683353d6ff25f364cd9d595542b0330 Mon Sep 17 00:00:00 2001 From: Julien Pivotto <291750+roidelapluie@users.noreply.github.com> Date: Fri, 16 Jan 2026 12:07:16 +0100 Subject: [PATCH] fuzzing: fix artifact path and experimental parser flags Fix two issues in fuzzing infrastructure: - Correct artifact upload path from promql/testdata/fuzz to util/fuzzing/testdata/fuzz to match where Go stores crash artifacts - Fix GetCorpusForFuzzParseExpr to preserve original parser flag values instead of always resetting them to false, which was disabling experimental features before actual fuzzing ran Signed-off-by: Julien Pivotto <291750+roidelapluie@users.noreply.github.com> --- .github/workflows/fuzzing.yml | 2 +- util/fuzzing/corpus.go | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/fuzzing.yml b/.github/workflows/fuzzing.yml index 776e0a67c5..55ab70dbac 100644 --- a/.github/workflows/fuzzing.yml +++ b/.github/workflows/fuzzing.yml @@ -29,7 +29,7 @@ jobs: if: failure() with: name: fuzz-artifacts-${{ matrix.fuzz_test }} - path: promql/testdata/fuzz/${{ matrix.fuzz_test }} + path: util/fuzzing/testdata/fuzz/${{ matrix.fuzz_test }} fuzzing_status: # This status check aggregates the individual matrix jobs of the fuzzing # step into a final status. Fails if a single matrix job fails, succeeds if diff --git a/util/fuzzing/corpus.go b/util/fuzzing/corpus.go index 52930b2669..7f26271699 100644 --- a/util/fuzzing/corpus.go +++ b/util/fuzzing/corpus.go @@ -58,15 +58,17 @@ func GetCorpusForFuzzParseMetricSelector() []string { // GetCorpusForFuzzParseExpr returns the seed corpus for FuzzParseExpr. func GetCorpusForFuzzParseExpr() ([]string, error) { + // Save original values and restore them after parsing test expressions. + defer func(funcs, durationExpr, rangeSelectors bool) { + parser.EnableExperimentalFunctions = funcs + parser.ExperimentalDurationExpr = durationExpr + parser.EnableExtendedRangeSelectors = rangeSelectors + }(parser.EnableExperimentalFunctions, parser.ExperimentalDurationExpr, parser.EnableExtendedRangeSelectors) + // Enable experimental features to parse all test expressions. parser.EnableExperimentalFunctions = true parser.ExperimentalDurationExpr = true parser.EnableExtendedRangeSelectors = true - defer func() { - parser.EnableExperimentalFunctions = false - parser.ExperimentalDurationExpr = false - parser.EnableExtendedRangeSelectors = false - }() // Get built-in test expressions. builtInExprs, err := promqltest.GetBuiltInExprs()