From 403a4d5855e770fb26ed7951a4765cd53579eb38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cihat=20Gu=CC=88ndu=CC=88z?= Date: Fri, 1 Nov 2024 16:53:29 +0100 Subject: [PATCH 1/4] Migrate from XCTest framework to Swift Testing + get rid of all warnings --- Tests/LinuxMain.swift | 7 -- .../CryptoHashingTests.swift | 22 ++-- .../TelemetryDeckTests/LogHandlerTests.swift | 52 ++++++--- .../SignalPayloadTests.swift | 104 +++++++++--------- .../TelemetryDeckTests.swift | 64 ++++++----- .../TelemetryDeckTests/XCTestManifests.swift | 9 -- 6 files changed, 140 insertions(+), 118 deletions(-) delete mode 100644 Tests/LinuxMain.swift delete mode 100644 Tests/TelemetryDeckTests/XCTestManifests.swift diff --git a/Tests/LinuxMain.swift b/Tests/LinuxMain.swift deleted file mode 100644 index 6b1f06e..0000000 --- a/Tests/LinuxMain.swift +++ /dev/null @@ -1,7 +0,0 @@ -import XCTest - -import TelemetryClientTests - -var tests = [XCTestCaseEntry]() -tests += TelemetryClientTests.allTests() -XCTMain(tests) diff --git a/Tests/TelemetryDeckTests/CryptoHashingTests.swift b/Tests/TelemetryDeckTests/CryptoHashingTests.swift index ffccc20..0e3f33a 100644 --- a/Tests/TelemetryDeckTests/CryptoHashingTests.swift +++ b/Tests/TelemetryDeckTests/CryptoHashingTests.swift @@ -1,29 +1,31 @@ @testable import TelemetryDeck -import XCTest +import Testing #if canImport(CryptoKit) import CryptoKit #endif -final class CryptoHashingTests: XCTestCase { +struct CryptoHashingTests { #if canImport(CryptoKit) - func testCryptoKitAndCommonCryptoHaveSameDigestStringResults() { + @Test + func cryptoKitAndCommonCryptoHaveSameDigestStringResults() { let stringToHash = "how do i get cowboy paint off a dog ." let dataToHash = stringToHash.data(using: .utf8)! let expectedDigestString = "5b8fab7cf45fcece0e99a05950611b7b355917e4fb6daa73fd3d7590764fa53b" - XCTAssertEqual(expectedDigestString, CryptoHashing.sha256(string: stringToHash, salt: "")) - XCTAssertEqual(expectedDigestString, CryptoHashing.commonCryptoSha256(strData: dataToHash)) + #expect(expectedDigestString == CryptoHashing.sha256(string: stringToHash, salt: "")) + #expect(expectedDigestString == CryptoHashing.commonCryptoSha256(strData: dataToHash)) // even though we already test if we can import CryptoKit, somehow this still fails on iOS 12, // so we're gating it to iOS 13 et al. if #available(watchOS 7, iOS 13, macOS 10.14, tvOS 13, *) { // calling directly to prove that CryptoKit produces same reult, as ``sha256(str:)`` can fall back, - XCTAssertEqual(expectedDigestString, SHA256.hash(data: dataToHash).compactMap { String(format: "%02x", $0) }.joined()) + #expect(expectedDigestString == SHA256.hash(data: dataToHash).compactMap { String(format: "%02x", $0) }.joined()) } } - func testSaltedResultsAreDifferentFromUnsaltedResults() { + @Test + func saltedResultsAreDifferentFromUnsaltedResults() { let stringToHash = "how do i get cowboy paint off a dog ." let salt = "q8wMvgVW3LzGCRQiLSLk" let expectedDigestString = "d46208db801b09cf055fedd7ae0390e9797fc00d1bcdcb3589ea075ca157e0d6" @@ -31,9 +33,9 @@ final class CryptoHashingTests: XCTestCase { let secondSalt = "x21MTSq3MRSmLjVFsYIe" let expectedSecondDigestString = "acb027bb031c0f73de26c6b8d0441d9c98449d582a538014c44ca49b4c299aa8" - XCTAssertEqual(expectedDigestString, CryptoHashing.sha256(string: stringToHash, salt: salt)) - XCTAssertEqual(expectedSecondDigestString, CryptoHashing.sha256(string: stringToHash, salt: secondSalt)) - XCTAssertNotEqual(CryptoHashing.sha256(string: stringToHash, salt: salt), CryptoHashing.sha256(string: stringToHash, salt: secondSalt)) + #expect(expectedDigestString == CryptoHashing.sha256(string: stringToHash, salt: salt)) + #expect(expectedSecondDigestString == CryptoHashing.sha256(string: stringToHash, salt: secondSalt)) + #expect(CryptoHashing.sha256(string: stringToHash, salt: salt) != CryptoHashing.sha256(string: stringToHash, salt: secondSalt)) } #endif } diff --git a/Tests/TelemetryDeckTests/LogHandlerTests.swift b/Tests/TelemetryDeckTests/LogHandlerTests.swift index 58fdf72..3ba1ddf 100644 --- a/Tests/TelemetryDeckTests/LogHandlerTests.swift +++ b/Tests/TelemetryDeckTests/LogHandlerTests.swift @@ -1,34 +1,56 @@ @testable import TelemetryDeck -import XCTest +import Testing -final class LogHandlerTests: XCTestCase { +actor LogHandlerTests { var counter: Int = 0 var lastLevel: LogHandler.LogLevel? - func testLogHandler_stdoutLogLevelDefined() { - XCTAssertEqual(LogHandler.standard(.error).logLevel, .error) + @Test + func logHandler_stdoutLogLevelDefined() { + #expect(LogHandler.standard(.error).logLevel == .error) } - - func testLogHandler_logLevelRespected() { + + @Test + func logHandler_logLevelRespected() async throws { let handler = LogHandler(logLevel: .info) { _, _ in - self.counter += 1 + Task { + await self.increment() + } } - XCTAssertEqual(counter, 0) + #expect(counter == 0) + handler.log(.debug, message: "") - XCTAssertEqual(counter, 0) + try await Task.sleep(for: .milliseconds(10)) + #expect(counter == 0) + handler.log(.info, message: "") - XCTAssertEqual(counter, 1) + try await Task.sleep(for: .milliseconds(10)) + #expect(counter == 1) + handler.log(.error, message: "") - XCTAssertEqual(counter, 2) + try await Task.sleep(for: .milliseconds(10)) + #expect(counter == 2) } - - func testLogHandler_defaultLogLevel() { + + @Test + func logHandler_defaultLogLevel() async throws { let handler = LogHandler(logLevel: .debug) { level, _ in - self.lastLevel = level + Task { + await self.setLastLevel(level) + } } handler.log(message: "") - XCTAssertEqual(lastLevel, .info) + try await Task.sleep(for: .milliseconds(10)) + #expect(lastLevel == .info) + } + + private func increment() { + self.counter += 1 + } + + private func setLastLevel(_ lastLevel: LogHandler.LogLevel?) { + self.lastLevel = lastLevel } } diff --git a/Tests/TelemetryDeckTests/SignalPayloadTests.swift b/Tests/TelemetryDeckTests/SignalPayloadTests.swift index 3e132ae..82e7521 100644 --- a/Tests/TelemetryDeckTests/SignalPayloadTests.swift +++ b/Tests/TelemetryDeckTests/SignalPayloadTests.swift @@ -1,68 +1,72 @@ @testable import TelemetryDeck -import XCTest +import Testing -final class DefaultSignalPayloadTests: XCTestCase { - func testIsSimulatorOrTestFlight() { - XCTAssertNoThrow(DefaultSignalPayload.isSimulatorOrTestFlight) +struct DefaultSignalPayloadTests { + @Test + func isSimulatorOrTestFlight() { print("isSimulatorOrTestFlight", DefaultSignalPayload.isSimulatorOrTestFlight) } - - func testIsSimulator() { - XCTAssertNoThrow(DefaultSignalPayload.isSimulator) + + @Test + func isSimulator() { print("isSimulator", DefaultSignalPayload.isSimulator) } - - func testIsDebug() { - XCTAssertTrue(DefaultSignalPayload.isDebug) + + @Test + func isDebug() { + #expect(DefaultSignalPayload.isDebug == true) print("isDebug", DefaultSignalPayload.isDebug) } - - func testIsTestFlight() { - XCTAssertFalse(DefaultSignalPayload.isTestFlight) + + @Test + func isTestFlight() { + #expect(DefaultSignalPayload.isTestFlight == false) print("isTestFlight", DefaultSignalPayload.isTestFlight) } - - func testIsAppStore() { - XCTAssertFalse(DefaultSignalPayload.isAppStore) + + @Test + func isAppStore() { + #expect(DefaultSignalPayload.isAppStore == false) print("isAppStore", DefaultSignalPayload.isAppStore) } - - func testSystemVersion() { - XCTAssertNoThrow(DefaultSignalPayload.systemVersion) + + @Test + func systemVersion() { print("systemVersion", DefaultSignalPayload.systemVersion) } - - func testMajorSystemVersion() { - XCTAssertNoThrow(DefaultSignalPayload.majorSystemVersion) + + @Test + func majorSystemVersion() { print("majorSystemVersion", DefaultSignalPayload.majorSystemVersion) } - - func testMajorMinorSystemVersion() { - XCTAssertNoThrow(DefaultSignalPayload.majorMinorSystemVersion) + + @Test + func majorMinorSystemVersion() { print("majorMinorSystemVersion", DefaultSignalPayload.majorMinorSystemVersion) } - - func testAppVersion() { - XCTAssertNoThrow(DefaultSignalPayload.appVersion) + + @Test + func appVersion() { print("appVersion", DefaultSignalPayload.appVersion) } - - func testBuildNumber() { - XCTAssertNoThrow(DefaultSignalPayload.buildNumber) + + @Test + func buildNumber() { print("buildNumber", DefaultSignalPayload.buildNumber) } - - func testModelName() { - XCTAssertNoThrow(DefaultSignalPayload.modelName) + + @Test + func modelName() { print("modelName", DefaultSignalPayload.modelName) } - - func testArchitecture() { - XCTAssertNoThrow(DefaultSignalPayload.architecture) + + @Test + func architecture() { print("architecture", DefaultSignalPayload.architecture) } - - func testOperatingSystem() { + + @Test + func operatingSystem() { let expectedResult: String #if os(macOS) @@ -81,23 +85,23 @@ final class DefaultSignalPayloadTests: XCTestCase { return "Unknown Operating System" #endif - XCTAssertEqual(expectedResult, DefaultSignalPayload.operatingSystem) - + #expect(expectedResult == DefaultSignalPayload.operatingSystem) + print("operatingSystem", DefaultSignalPayload.operatingSystem) } - - func testPlatform() { - XCTAssertNoThrow(DefaultSignalPayload.platform) + + @Test + func platform() { print("platform", DefaultSignalPayload.platform) } - - func testTargetEnvironment() { - XCTAssertNoThrow(DefaultSignalPayload.targetEnvironment) + + @Test + func targetEnvironment() { print("targetEnvironment", DefaultSignalPayload.targetEnvironment) } - - func testLocale() { - XCTAssertNoThrow(DefaultSignalPayload.locale) + + @Test + func locale() { print("locale", DefaultSignalPayload.locale) } } diff --git a/Tests/TelemetryDeckTests/TelemetryDeckTests.swift b/Tests/TelemetryDeckTests/TelemetryDeckTests.swift index 21d859c..86d6a49 100644 --- a/Tests/TelemetryDeckTests/TelemetryDeckTests.swift +++ b/Tests/TelemetryDeckTests/TelemetryDeckTests.swift @@ -1,8 +1,10 @@ @testable import TelemetryDeck -import XCTest +import Testing +import Foundation -final class TelemetryDeckTests: XCTestCase { - func testSending() { +struct TelemetryDeckTests { + @Test + func sending() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" let config = TelemetryManagerConfiguration(appID: YOUR_APP_ID) @@ -12,7 +14,8 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("databaseUpdated", parameters: ["numberOfDatabaseEntries": "3831"]) } - func testPushAndPop() { + @Test + func pushAndPop() { let signalCache = SignalCache(logHandler: nil) let signals: [SignalPostBody] = [ @@ -44,16 +47,17 @@ final class TelemetryDeckTests: XCTestCase { poppedSignalsBatch = signalCache.pop() } - XCTAssertEqual(signals.count, allPoppedSignals.count) - + #expect(signals.count == allPoppedSignals.count) + allPoppedSignals.sort { lhs, rhs in lhs.type < rhs.type } - XCTAssertEqual(signals, allPoppedSignals) + #expect(signals == allPoppedSignals) } - func testSignalEnrichers() throws { + @Test + func signalEnrichers() throws { struct BasicEnricher: SignalEnricher { func enrich(signalType: String, for clientUser: String?, floatValue: Double?) -> [String: String] { ["isTestEnricher": "true"] @@ -68,12 +72,13 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("testSignal") let bodyItems = signalManager.processedSignals - XCTAssertEqual(bodyItems.count, 1) - let bodyItem = try XCTUnwrap(bodyItems.first) - XCTAssert(bodyItem.payload["isTestEnricher"] == "true") + #expect(bodyItems.count == 1) + let bodyItem = try #require(bodyItems.first) + #expect(bodyItem.payload["isTestEnricher"] == "true") } - func testSignalEnrichers_precedence() throws { + @Test + func signalEnrichers_precedence() throws { struct BasicEnricher: SignalEnricher { func enrich(signalType: String, for clientUser: String?, floatValue: Double?) -> [String: String] { ["item": "A", "isDebug": "banana"] @@ -88,13 +93,14 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("testSignal", parameters: ["item": "B"]) let bodyItems = signalManager.processedSignals - XCTAssertEqual(bodyItems.count, 1) - let bodyItem = try XCTUnwrap(bodyItems.first) - XCTAssert(bodyItem.payload["item"] == "B") // .send takes priority over enricher - XCTAssert(bodyItem.payload["isDebug"] == "banana") // enricher takes priority over default payload + #expect(bodyItems.count == 1) + let bodyItem = try #require(bodyItems.first) + #expect(bodyItem.payload["item"] == "B") // .send takes priority over enricher + #expect(bodyItem.payload["isDebug"] == "banana") // enricher takes priority over default payload } - func testSendsSignals_withAnalyticsImplicitlyEnabled() { + @Test + func sendsSignals_withAnalyticsImplicitlyEnabled() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" let configuration = TelemetryManagerConfiguration(appID: YOUR_APP_ID) @@ -104,10 +110,11 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("appOpenedRegularly") - XCTAssertEqual(signalManager.processedSignalTypes.count, 1) + #expect(signalManager.processedSignalTypes.count == 1) } - func testSendsSignals_withAnalyticsExplicitlyEnabled() { + @Test + func sendsSignals_withAnalyticsExplicitlyEnabled() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" var configuration = TelemetryManagerConfiguration(appID: YOUR_APP_ID) @@ -118,10 +125,11 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("appOpenedRegularly") - XCTAssertEqual(signalManager.processedSignalTypes.count, 1) + #expect(signalManager.processedSignalTypes.count == 1) } - func testDoesNotSendSignals_withAnalyticsExplicitlyDisabled() { + @Test + func DoesNotSendSignals_withAnalyticsExplicitlyDisabled() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" var configuration = TelemetryManagerConfiguration(appID: YOUR_APP_ID) @@ -132,10 +140,11 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("appOpenedRegularly") - XCTAssertTrue(signalManager.processedSignalTypes.isEmpty) + #expect(signalManager.processedSignalTypes.isEmpty == true) } - func testDoesNotSendSignals_withAnalyticsExplicitlyEnabled_inPreviewMode() { + @Test + func DoesNotSendSignals_withAnalyticsExplicitlyEnabled_inPreviewMode() { setenv("XCODE_RUNNING_FOR_PREVIEWS", "1", 1) let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" @@ -148,12 +157,13 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("appOpenedRegularly") - XCTAssertTrue(signalManager.processedSignalTypes.isEmpty) + #expect(signalManager.processedSignalTypes.isEmpty == true) setenv("XCODE_RUNNING_FOR_PREVIEWS", "0", 1) } - func testSendsSignals_withNumercalValue() { + @Test + func sendsSignals_withNumercalValue() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" let configuration = TelemetryManagerConfiguration(appID: YOUR_APP_ID) @@ -163,11 +173,11 @@ final class TelemetryDeckTests: XCTestCase { TelemetryDeck.signal("appOpenedRegularly", floatValue: 42) - XCTAssertEqual(signalManager.processedSignals.first?.floatValue, 42) + #expect(signalManager.processedSignals.first?.floatValue == 42) } } -private class FakeSignalManager: SignalManageable { +private class FakeSignalManager: @preconcurrency SignalManageable { var processedSignalTypes = [String]() var processedSignals = [SignalPostBody]() diff --git a/Tests/TelemetryDeckTests/XCTestManifests.swift b/Tests/TelemetryDeckTests/XCTestManifests.swift deleted file mode 100644 index 4df9608..0000000 --- a/Tests/TelemetryDeckTests/XCTestManifests.swift +++ /dev/null @@ -1,9 +0,0 @@ -import XCTest - -#if !canImport(ObjectiveC) - public func allTests() -> [XCTestCaseEntry] { - [ - testCase(TelemetryClientTests.allTests), - ] - } -#endif From 9fde1962b8bd01869fff0fbfbce52702f274350e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cihat=20Gu=CC=88ndu=CC=88z?= Date: Fri, 1 Nov 2024 17:03:57 +0100 Subject: [PATCH 2/4] Avoid using iOS 16 or later overload of Task.sleep --- Tests/TelemetryDeckTests/LogHandlerTests.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/TelemetryDeckTests/LogHandlerTests.swift b/Tests/TelemetryDeckTests/LogHandlerTests.swift index 3ba1ddf..f8a08f3 100644 --- a/Tests/TelemetryDeckTests/LogHandlerTests.swift +++ b/Tests/TelemetryDeckTests/LogHandlerTests.swift @@ -21,15 +21,15 @@ actor LogHandlerTests { #expect(counter == 0) handler.log(.debug, message: "") - try await Task.sleep(for: .milliseconds(10)) + try await Task.sleep(nanoseconds: 10_000_000) // 10 milliseconds #expect(counter == 0) handler.log(.info, message: "") - try await Task.sleep(for: .milliseconds(10)) + try await Task.sleep(nanoseconds: 10_000_000) // 10 milliseconds #expect(counter == 1) handler.log(.error, message: "") - try await Task.sleep(for: .milliseconds(10)) + try await Task.sleep(nanoseconds: 10_000_000) // 10 milliseconds #expect(counter == 2) } @@ -42,7 +42,7 @@ actor LogHandlerTests { } handler.log(message: "") - try await Task.sleep(for: .milliseconds(10)) + try await Task.sleep(nanoseconds: 10_000_000) // 10 milliseconds #expect(lastLevel == .info) } From 13d4da55795b0e60ab7b700873f931152cc8ecba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cihat=20Gu=CC=88ndu=CC=88z?= Date: Mon, 4 Nov 2024 18:17:51 +0100 Subject: [PATCH 3/4] Avoid logging an error for internal signal names --- Sources/TelemetryDeck/Signals/SignalManager.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Sources/TelemetryDeck/Signals/SignalManager.swift b/Sources/TelemetryDeck/Signals/SignalManager.swift index 838664f..e559acd 100644 --- a/Sources/TelemetryDeck/Signals/SignalManager.swift +++ b/Sources/TelemetryDeck/Signals/SignalManager.swift @@ -27,6 +27,13 @@ final class SignalManager: SignalManageable, @unchecked Sendable { ].map { $0.lowercased() } ) + static let internalSignalNames: Set = [ + "TelemetryDeck.Error.occurred", + "TelemetryDeck.Navigation.pathChanged", + "TelemetryDeck.Purchase.completed", + "TelemetryDeck.Session.started", + ] + private var signalCache: SignalCache let configuration: TelemetryManagerConfiguration @@ -85,7 +92,7 @@ final class SignalManager: SignalManageable, @unchecked Sendable { configuration: TelemetryManagerConfiguration ) { // warn users about reserved keys to avoid unexpected behavior - if signalName.lowercased().hasPrefix("telemetrydeck.") { + if signalName.lowercased().hasPrefix("telemetrydeck."), !Self.internalSignalNames.contains(signalName) { configuration.logHandler?.log( .error, message: "Sending signal with reserved prefix 'TelemetryDeck.' will cause unexpected behavior. Please use another prefix instead." From b03f44ebf794219cc66f1a92f3dc5236cc72af7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cihat=20Gu=CC=88ndu=CC=88z?= Date: Tue, 5 Nov 2024 09:42:05 +0100 Subject: [PATCH 4/4] Disable flaky tests and create task to fix them later See https://github.com/TelemetryDeck/SwiftSDK/issues/200 --- Tests/TelemetryDeckTests/TelemetryDeckTests.swift | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Tests/TelemetryDeckTests/TelemetryDeckTests.swift b/Tests/TelemetryDeckTests/TelemetryDeckTests.swift index 86d6a49..506d3c8 100644 --- a/Tests/TelemetryDeckTests/TelemetryDeckTests.swift +++ b/Tests/TelemetryDeckTests/TelemetryDeckTests.swift @@ -56,7 +56,7 @@ struct TelemetryDeckTests { #expect(signals == allPoppedSignals) } - @Test + @Test(.disabled("this test is flaky"), .bug("https://github.com/TelemetryDeck/SwiftSDK/issues/200")) func signalEnrichers() throws { struct BasicEnricher: SignalEnricher { func enrich(signalType: String, for clientUser: String?, floatValue: Double?) -> [String: String] { @@ -77,7 +77,7 @@ struct TelemetryDeckTests { #expect(bodyItem.payload["isTestEnricher"] == "true") } - @Test + @Test(.disabled("this test is flaky"), .bug("https://github.com/TelemetryDeck/SwiftSDK/issues/200")) func signalEnrichers_precedence() throws { struct BasicEnricher: SignalEnricher { func enrich(signalType: String, for clientUser: String?, floatValue: Double?) -> [String: String] { @@ -99,7 +99,7 @@ struct TelemetryDeckTests { #expect(bodyItem.payload["isDebug"] == "banana") // enricher takes priority over default payload } - @Test + @Test(.disabled("this test is flaky"), .bug("https://github.com/TelemetryDeck/SwiftSDK/issues/200")) func sendsSignals_withAnalyticsImplicitlyEnabled() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" @@ -113,7 +113,7 @@ struct TelemetryDeckTests { #expect(signalManager.processedSignalTypes.count == 1) } - @Test + @Test(.disabled("this test is flaky"), .bug("https://github.com/TelemetryDeck/SwiftSDK/issues/200")) func sendsSignals_withAnalyticsExplicitlyEnabled() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" @@ -129,7 +129,7 @@ struct TelemetryDeckTests { } @Test - func DoesNotSendSignals_withAnalyticsExplicitlyDisabled() { + func doesNotSendSignals_withAnalyticsExplicitlyDisabled() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" var configuration = TelemetryManagerConfiguration(appID: YOUR_APP_ID) @@ -144,7 +144,7 @@ struct TelemetryDeckTests { } @Test - func DoesNotSendSignals_withAnalyticsExplicitlyEnabled_inPreviewMode() { + func doesNotSendSignals_withAnalyticsExplicitlyEnabled_inPreviewMode() { setenv("XCODE_RUNNING_FOR_PREVIEWS", "1", 1) let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3" @@ -162,7 +162,7 @@ struct TelemetryDeckTests { setenv("XCODE_RUNNING_FOR_PREVIEWS", "0", 1) } - @Test + @Test(.disabled("this test is flaky"), .bug("https://github.com/TelemetryDeck/SwiftSDK/issues/200")) func sendsSignals_withNumercalValue() { let YOUR_APP_ID = "44e0f59a-60a2-4d4a-bf27-1f96ccb4aaa3"