diff --git a/internal/app/azldev/core/sources/release.go b/internal/app/azldev/core/sources/release.go index 5c6a46c..c47f549 100644 --- a/internal/app/azldev/core/sources/release.go +++ b/internal/app/azldev/core/sources/release.go @@ -17,8 +17,12 @@ import ( ) // autoreleasePattern matches the %autorelease macro invocation in a Release tag value. -// This covers both the bare form (%autorelease) and the braced form (%{autorelease}). -var autoreleasePattern = regexp.MustCompile(`%(\{autorelease\}|autorelease($|\s))`) +// This covers: +// - bare form: %autorelease +// - braced form: %{autorelease} +// - braced form with arguments: %{autorelease -n -e asan} +// - conditional forms: %{?autorelease}, %{!?autorelease:fallback} +var autoreleasePattern = regexp.MustCompile(`%(\{[!?]*autorelease($|[:}\s])|autorelease($|\s))`) // staticReleasePattern matches a leading integer in a static Release tag value, // followed by an optional suffix (e.g. "%{?dist}"). diff --git a/internal/app/azldev/core/sources/release_test.go b/internal/app/azldev/core/sources/release_test.go index 2351689..88ae6d9 100644 --- a/internal/app/azldev/core/sources/release_test.go +++ b/internal/app/azldev/core/sources/release_test.go @@ -20,8 +20,24 @@ func TestReleaseUsesAutorelease(t *testing.T) { value string expected bool }{ + // Basic forms. {"%autorelease", true}, {"%{autorelease}", true}, + + // Braced form with arguments (e.g., 389-ds-base). + {"%{autorelease -n %{?with_asan:-e asan}}%{?dist}", true}, + {"%{autorelease -e asan}", true}, + + // Conditional forms (e.g., gnutls, keylime-agent-rust). + {"%{?autorelease}%{!?autorelease:1%{?dist}}", true}, + {"%{?autorelease}", true}, + {"%{!?autorelease:1%{?dist}}", true}, + + // False positives (e.g., python-pyodbc). + {"%{autorelease_suffix}", false}, + {"%{?autorelease_extra}", false}, + + // Static release values. {"1", false}, {"1%{?dist}", false}, {"3%{?dist}.1", false},