diff --git a/Library/Sources/Public/Tasks/OutdatedDependenciesTask.swift b/Library/Sources/Public/Tasks/UpdateDependenciesTask.swift similarity index 71% rename from Library/Sources/Public/Tasks/OutdatedDependenciesTask.swift rename to Library/Sources/Public/Tasks/UpdateDependenciesTask.swift index 38a33de..e404b6b 100644 --- a/Library/Sources/Public/Tasks/OutdatedDependenciesTask.swift +++ b/Library/Sources/Public/Tasks/UpdateDependenciesTask.swift @@ -1,6 +1,6 @@ import Foundation -public struct OutdatedDependenciesTask { +public struct UpdateDependenciesTask { // MARK: Properties @@ -14,7 +14,7 @@ public struct OutdatedDependenciesTask { // MARK: Functions - public func callAsFunction(at location: URL? = nil) async throws (TerminalServiceError) { + public func callAsFunction(at location: URL? = nil, checkOutdated: Bool = false) async throws (TerminalServiceError) { let executableURL = URL(at: "/usr/bin/swift") var arguments: [String] = ["package", "update"] @@ -23,8 +23,10 @@ public struct OutdatedDependenciesTask { arguments.append(contentsOf: ["--package-path", location.pathString]) } - arguments.append("--dry-run") - + if checkOutdated { + arguments.append("--dry-run") + } + try await terminalService.run(executableURL, arguments: arguments) } diff --git a/Test/Sources/Cases/Public/Tasks/OutdatedDependenciesTaskTests.swift b/Test/Sources/Cases/Public/Tasks/UpdateDependenciesTaskTests.swift similarity index 57% rename from Test/Sources/Cases/Public/Tasks/OutdatedDependenciesTaskTests.swift rename to Test/Sources/Cases/Public/Tasks/UpdateDependenciesTaskTests.swift index b79a211..6208277 100644 --- a/Test/Sources/Cases/Public/Tasks/OutdatedDependenciesTaskTests.swift +++ b/Test/Sources/Cases/Public/Tasks/UpdateDependenciesTaskTests.swift @@ -3,23 +3,28 @@ import Testing @testable import ColibriLibrary -struct OutdatedDependenciesTaskTests { +struct UpdateDependenciesTaskTests { - @Test(arguments: [nil, URL.someCurrentFolder]) - func task(at location: URL?) async throws { + @Test(arguments: [nil, URL.someCurrentFolder], [false, true]) + func task(at location: URL?, checkOutdated: Bool) async throws { // GIVEN let terminalService = TerminalServiceSpy() - let task = OutdatedDependenciesTask(terminalService: terminalService) + let task = UpdateDependenciesTask(terminalService: terminalService) // WHEN - try await task(at: location) + try await task(at: location, checkOutdated: checkOutdated) // THEN let executableURL = URL(at: "/usr/bin/swift") - let arguments = if let location { - ["package", "update", "--package-path", location.pathString, "--dry-run"] + + var arguments = if let location { + ["package", "update", "--package-path", location.pathString] } else { - ["package", "update", "--dry-run"] + ["package", "update"] + } + + if checkOutdated { + arguments.append("--dry-run") } #expect(terminalService.actions.count == 1) @@ -30,12 +35,12 @@ struct OutdatedDependenciesTaskTests { func task(at location: URL?, throws error: TerminalServiceError) async throws { // GIVEN let terminalService = TerminalServiceMock(action: .error(error)) - let task = BuildProjectTask(terminalService: terminalService) + let task = UpdateDependenciesTask(terminalService: terminalService) // WHEN // THEN await #expect(throws: error) { - try await task(at: location) + try await task(at: location, checkOutdated: .random()) } }