From 972f1abfd42887b20e43824df9e7e725d1da076a Mon Sep 17 00:00:00 2001 From: Sharon Date: Tue, 30 Jun 2026 13:33:47 -0400 Subject: [PATCH 1/2] Fix WhatsApp version check in maintained apps ingestion WhatsApp changed their version scheme from "2.x.y.z" to "26.x.y". The version shortener was erroring on versions without the legacy "2." prefix, causing the entire maintained apps ingestion to panic. Co-Authored-By: Claude Opus 4.6 (1M context) --- changes/fix-whatsapp-version-check | 1 + .../homebrew/external_refs/whats_app_version_shortener.go | 6 +++--- .../external_refs/whats_app_version_shortener_test.go | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 changes/fix-whatsapp-version-check diff --git a/changes/fix-whatsapp-version-check b/changes/fix-whatsapp-version-check new file mode 100644 index 00000000000..54329f40f32 --- /dev/null +++ b/changes/fix-whatsapp-version-check @@ -0,0 +1 @@ +- Fixed maintained apps ingestion failing due to WhatsApp version scheme change. diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go index 19559c02400..3f434e95259 100644 --- a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go @@ -1,7 +1,6 @@ package externalrefs import ( - "fmt" "strings" maintained_apps "github.com/fleetdm/fleet/v4/ee/maintained-apps" @@ -10,10 +9,11 @@ import ( func WhatsAppVersionShortener(app *maintained_apps.FMAManifestApp) (*maintained_apps.FMAManifestApp, error) { homebrewVersion := app.Version + // Legacy WhatsApp versions used a "2." prefix added by Homebrew that + // needed to be stripped (e.g. "2.25.16.81" -> "25.16.81"). + // Newer versions (e.g. "26.26.12") no longer carry this prefix. if strings.HasPrefix(homebrewVersion, "2.") { app.Version = strings.TrimPrefix(homebrewVersion, "2.") - } else { - return app, fmt.Errorf("Expected WhatsApp version to start with '2.' but found '%s'", homebrewVersion) } return app, nil diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go index 2b72c1faeda..d0fb6b27171 100644 --- a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go @@ -18,13 +18,13 @@ func TestWhatsAppVersionShortener(t *testing.T) { assert.Equal(t, "25.16.81", result.Version) }) - t.Run("unexpected version format", func(t *testing.T) { + t.Run("new version scheme without 2. prefix", func(t *testing.T) { app := &maintained_apps.FMAManifestApp{ UniqueIdentifier: "whatsapp/darwin", - Version: "3.25.16.81", + Version: "26.26.12", } result, err := WhatsAppVersionShortener(app) - assert.Error(t, err) - assert.Equal(t, "3.25.16.81", result.Version) + assert.NoError(t, err) + assert.Equal(t, "26.26.12", result.Version) }) } From 02b4e0b6fd4de01fba9e5fefb795548672f8a7d1 Mon Sep 17 00:00:00 2001 From: Sharon Date: Tue, 30 Jun 2026 15:52:21 -0400 Subject: [PATCH 2/2] Use require.NoError for testifylint compliance Co-Authored-By: Claude Opus 4.6 (1M context) --- .../external_refs/whats_app_version_shortener_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go index d0fb6b27171..ca023b06b6a 100644 --- a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go @@ -5,6 +5,7 @@ import ( maintained_apps "github.com/fleetdm/fleet/v4/ee/maintained-apps" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestWhatsAppVersionShortener(t *testing.T) { @@ -14,7 +15,7 @@ func TestWhatsAppVersionShortener(t *testing.T) { Version: "2.25.16.81", } result, err := WhatsAppVersionShortener(app) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "25.16.81", result.Version) }) @@ -24,7 +25,7 @@ func TestWhatsAppVersionShortener(t *testing.T) { Version: "26.26.12", } result, err := WhatsAppVersionShortener(app) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, "26.26.12", result.Version) }) }