From 4e916e5be485d369c0150bb3edd3e45f21c5050a Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Thu, 10 Sep 2026 12:41:40 +0200 Subject: [PATCH] fix(telemetry): Mark CLI frames as in-app Explicitly include the SwiftPM executable because bare command-line binaries do not provide CFBundleExecutable for Sentry's default detection. --- Sources/CLI/telemetry/SentryConfiguration.swift | 1 + .../telemetry/SentryConfigurationTests.swift | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Sources/CLI/telemetry/SentryConfiguration.swift b/Sources/CLI/telemetry/SentryConfiguration.swift index cf706f8..30cbf7d 100644 --- a/Sources/CLI/telemetry/SentryConfiguration.swift +++ b/Sources/CLI/telemetry/SentryConfiguration.swift @@ -78,6 +78,7 @@ struct SentryConfiguration { private static func configureErrorMonitoring(_ options: Options) { options.sendDefaultPii = false + options.add(inAppInclude: "apple-docs") options.attachStacktrace = true options.enableCrashHandler = true options.enableAppHangTracking = false diff --git a/Tests/CLITests/telemetry/SentryConfigurationTests.swift b/Tests/CLITests/telemetry/SentryConfigurationTests.swift index c1f4f7a..99bc535 100644 --- a/Tests/CLITests/telemetry/SentryConfigurationTests.swift +++ b/Tests/CLITests/telemetry/SentryConfigurationTests.swift @@ -1,4 +1,5 @@ import Foundation +@preconcurrency import SentrySwift import Testing @testable import CLI @@ -32,6 +33,18 @@ struct SentryConfigurationTests { #expect(!enabled) } + @Test("marks CLI executable frames as in-app") + func marksCLIExecutableFramesAsInApp() { + // -- Arrange -- + let options = Options() + + // -- Act -- + SentryConfiguration.configure(options) + + // -- Assert -- + #expect(options.inAppIncludes.contains("apple-docs")) + } + @Test("treats documentation lookup failures as expected command errors") func treatsLookupFailureAsExpected() { // -- Arrange --