From 9896c9e024ea1ecfb5fcb556f3ed48278c19bb96 Mon Sep 17 00:00:00 2001 From: "roux g. buciu" Date: Tue, 17 Feb 2026 14:02:56 -0500 Subject: [PATCH] Fix quiet mode not running for linting --- Sources/fxios/Commands/Lint/LintRun.swift | 32 ++++++++++------------- Tests/fxiosTests/LintTests.swift | 32 +++++++++++++++++++++++ 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/Sources/fxios/Commands/Lint/LintRun.swift b/Sources/fxios/Commands/Lint/LintRun.swift index 2ce1020..4d755e2 100644 --- a/Sources/fxios/Commands/Lint/LintRun.swift +++ b/Sources/fxios/Commands/Lint/LintRun.swift @@ -45,6 +45,16 @@ extension Lint { try runLint(lintAll: lintAll, repoRoot: repo.root) } + // MARK: - Flags + + /// Builds the swiftlint flag arguments based on parsed options. + func swiftlintFlags() -> [String] { + var flags: [String] = [] + if strict { flags.append("--strict") } + if quiet { flags.append("--quiet") } + return flags + } + // MARK: - Lint private func runLint(lintAll: Bool, repoRoot: URL) throws { @@ -52,7 +62,7 @@ extension Lint { Herald.declare("Linting entire codebase...", isNewCommand: true) do { - try ShellRunner.run("swiftlint", arguments: [], workingDirectory: repoRoot) + try ShellRunner.run("swiftlint", arguments: swiftlintFlags(), workingDirectory: repoRoot) Herald.declare("Linting complete!", asConclusion: true) } catch let error as ShellRunnerError { if case .commandFailed(_, let exitCode) = error { @@ -80,14 +90,7 @@ extension Lint { var hasViolations = false for file in changedFiles { var args: [String] = ["lint", "--config", configPath, "--path", file] - - if strict { - args.append("--strict") - } - - if quiet { - args.append("--quiet") - } + args.append(contentsOf: swiftlintFlags()) do { try ShellRunner.run("swiftlint", arguments: args, workingDirectory: repoRoot) @@ -116,7 +119,7 @@ extension Lint { private func printExposedCommands(lintAll: Bool, repoRoot: URL) { if lintAll { Herald.raw("# Lint entire codebase") - Herald.raw("swiftlint") + Herald.raw(CommandHelpers.formatCommand("swiftlint", arguments: swiftlintFlags())) } else { let configPath = repoRoot.appendingPathComponent(".swiftlint.yaml").path @@ -129,14 +132,7 @@ extension Lint { Herald.raw("") var args: [String] = ["lint", "--config", configPath, "--path", ""] - - if strict { - args.append("--strict") - } - - if quiet { - args.append("--quiet") - } + args.append(contentsOf: swiftlintFlags()) Herald.raw("# Lint each changed file") Herald.raw(CommandHelpers.formatCommand("swiftlint", arguments: args)) diff --git a/Tests/fxiosTests/LintTests.swift b/Tests/fxiosTests/LintTests.swift index 26536a4..f177ac1 100644 --- a/Tests/fxiosTests/LintTests.swift +++ b/Tests/fxiosTests/LintTests.swift @@ -93,6 +93,38 @@ struct LintTests { #expect(command.quiet == true) } + // MARK: - Run swiftlintFlags Tests + + @Test("Run swiftlintFlags returns empty array by default") + func runSwiftlintFlagsDefault() throws { + let command = try Lint.Run.parse([]) + #expect(command.swiftlintFlags().isEmpty) + } + + @Test("Run swiftlintFlags includes --quiet when quiet is set") + func runSwiftlintFlagsQuiet() throws { + let command = try Lint.Run.parse(["--quiet"]) + let flags = command.swiftlintFlags() + #expect(flags.contains("--quiet")) + #expect(!flags.contains("--strict")) + } + + @Test("Run swiftlintFlags includes --strict when strict is set") + func runSwiftlintFlagsStrict() throws { + let command = try Lint.Run.parse(["--strict"]) + let flags = command.swiftlintFlags() + #expect(flags.contains("--strict")) + #expect(!flags.contains("--quiet")) + } + + @Test("Run swiftlintFlags includes both flags when both are set") + func runSwiftlintFlagsBoth() throws { + let command = try Lint.Run.parse(["--strict", "--quiet"]) + let flags = command.swiftlintFlags() + #expect(flags.contains("--strict")) + #expect(flags.contains("--quiet")) + } + // MARK: - Fix Subcommand Tests @Test("Fix subcommand has correct name")