|
|
@@ -24,7 +24,16 @@ class GRPCTestCase: XCTestCase {
|
|
|
// locally; conditionally enable it based on the environment.
|
|
|
//
|
|
|
// https://docs.travis-ci.com/user/environment-variables/#default-environment-variables
|
|
|
- private static var isLoggingEnabled = ProcessInfo.processInfo.environment["CI"] != "true"
|
|
|
+ private static let isCI = Bool(
|
|
|
+ fromTruthLike: ProcessInfo.processInfo.environment["CI"],
|
|
|
+ defaultingTo: false
|
|
|
+ )
|
|
|
+ private static let isLoggingEnabled = !isCI
|
|
|
+
|
|
|
+ private static let runTimeSensitiveTests = Bool(
|
|
|
+ fromTruthLike: ProcessInfo.processInfo.environment["ENABLE_TIMING_TESTS"],
|
|
|
+ defaultingTo: true
|
|
|
+ )
|
|
|
|
|
|
// `LoggingSystem.bootstrap` must be called once per process. This is the suggested approach to
|
|
|
// workaround this for XCTestCase.
|
|
|
@@ -46,6 +55,14 @@ class GRPCTestCase: XCTestCase {
|
|
|
super.setUp()
|
|
|
XCTAssertTrue(GRPCTestCase.isLoggingConfigured)
|
|
|
}
|
|
|
+
|
|
|
+ func runTimeSensitiveTests() -> Bool {
|
|
|
+ let shouldRun = GRPCTestCase.runTimeSensitiveTests
|
|
|
+ if !shouldRun {
|
|
|
+ print("Skipping '\(self.name)' as ENABLE_TIMING_TESTS=false")
|
|
|
+ }
|
|
|
+ return shouldRun
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// A `LogHandler` which does nothing with log messages.
|
|
|
@@ -66,3 +83,16 @@ struct BlackHole: LogHandler {
|
|
|
var metadata: Logger.Metadata = [:]
|
|
|
var logLevel: Logger.Level = .critical
|
|
|
}
|
|
|
+
|
|
|
+fileprivate extension Bool {
|
|
|
+ init(fromTruthLike value: String?, defaultingTo defaultValue: Bool) {
|
|
|
+ switch value?.lowercased() {
|
|
|
+ case "0", "false", "no":
|
|
|
+ self = false
|
|
|
+ case "1", "true", "yes":
|
|
|
+ self = true
|
|
|
+ default:
|
|
|
+ self = defaultValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|