Skip to content

Commit

Permalink
Add quiet flag (-q, --quiet) to LoggingOptions. (#5988)
Browse files Browse the repository at this point in the history
* Add quiet flag (-q, --quiet) to LoggingOptions.
  • Loading branch information
clayellis committed Dec 21, 2022
1 parent 723a592 commit 624c2bf
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Sources/CoreCommands/Options.swift
Expand Up @@ -138,6 +138,10 @@ public struct LoggingOptions: ParsableArguments {
/// The verbosity of informational output.
@Flag(name: [.long, .customLong("vv")], help: "Increase verbosity to include debug output")
public var veryVerbose: Bool = false

/// Whether logging output should be limited to `.error`.
@Flag(name: .shortAndLong, help: "Decrease verbosity to only include error output.")
public var quiet: Bool = false
}

public struct SecurityOptions: ParsableArguments {
Expand Down
2 changes: 2 additions & 0 deletions Sources/CoreCommands/SwiftTool.swift
Expand Up @@ -822,6 +822,8 @@ extension LoggingOptions {
return .info
} else if self.veryVerbose {
return .debug
} else if self.quiet {
return .error
} else {
return .warning
}
Expand Down
38 changes: 38 additions & 0 deletions Tests/CommandsTests/SwiftToolTests.swift
Expand Up @@ -115,6 +115,44 @@ final class SwiftToolTests: CommandsTestCase {
XCTAssertMatch(outputStream.bytes.validDescription, .contains("info: info"))
XCTAssertMatch(outputStream.bytes.validDescription, .contains("debug: debug"))
}

do {
let outputStream = BufferedOutputByteStream()
let options = try GlobalOptions.parse(["--package-path", fixturePath.pathString, "--quiet"])
let tool = try SwiftTool.createSwiftToolForTest(outputStream: outputStream, options: options)
XCTAssertEqual(tool.logLevel, .error)

tool.observabilityScope.emit(error: "error")
tool.observabilityScope.emit(warning: "warning")
tool.observabilityScope.emit(info: "info")
tool.observabilityScope.emit(debug: "debug")

tool.waitForObservabilityEvents(timeout: .now() + .seconds(1))

XCTAssertMatch(outputStream.bytes.validDescription, .contains("error: error"))
XCTAssertNoMatch(outputStream.bytes.validDescription, .contains("warning: warning"))
XCTAssertNoMatch(outputStream.bytes.validDescription, .contains("info: info"))
XCTAssertNoMatch(outputStream.bytes.validDescription, .contains("debug: debug"))
}

do {
let outputStream = BufferedOutputByteStream()
let options = try GlobalOptions.parse(["--package-path", fixturePath.pathString, "-q"])
let tool = try SwiftTool.createSwiftToolForTest(outputStream: outputStream, options: options)
XCTAssertEqual(tool.logLevel, .error)

tool.observabilityScope.emit(error: "error")
tool.observabilityScope.emit(warning: "warning")
tool.observabilityScope.emit(info: "info")
tool.observabilityScope.emit(debug: "debug")

tool.waitForObservabilityEvents(timeout: .now() + .seconds(1))

XCTAssertMatch(outputStream.bytes.validDescription, .contains("error: error"))
XCTAssertNoMatch(outputStream.bytes.validDescription, .contains("warning: warning"))
XCTAssertNoMatch(outputStream.bytes.validDescription, .contains("info: info"))
XCTAssertNoMatch(outputStream.bytes.validDescription, .contains("debug: debug"))
}
}
}

Expand Down

0 comments on commit 624c2bf

Please sign in to comment.