diff --git a/Library/Sources/Public/Tasks/InitGitInFolderTask.swift b/Library/Sources/Public/Tasks/InitGitInFolderTask.swift index 850e1c2..fda011f 100644 --- a/Library/Sources/Public/Tasks/InitGitInFolderTask.swift +++ b/Library/Sources/Public/Tasks/InitGitInFolderTask.swift @@ -1,24 +1,26 @@ import Foundation public struct InitGitInFolderTask { + + // MARK: Properties + + private let terminalService: TerminalServicing // MARK: Initialisers - public init() {} + public init(terminalService: TerminalServicing) { + self.terminalService = terminalService + } // MARK: Functions - public func callAsFunction(at rootFolder: URL) async throws (RunProcessError) { - let pathCommand = "/usr/bin/git" + public func callAsFunction(at rootFolder: URL) async throws (TerminalServiceError) { + let executableURL = URL(at: "/usr/bin/git") let pathFolder = rootFolder.pathString - var gitInit = RunProcessTask(process: Process()) - var gitAdd = RunProcessTask(process: Process()) - var gitCommit = RunProcessTask(process: Process()) - - try await gitInit(path: pathCommand, arguments: ["init", pathFolder]) - try await gitAdd(path: pathCommand, arguments: ["-C", pathFolder, "add", "."]) - try await gitCommit(path: pathCommand, arguments: ["-C", pathFolder, "commit", "-m", "Initial commit"]) + try await terminalService.run(executableURL, arguments: ["init", pathFolder]) + try await terminalService.run(executableURL, arguments: ["-C", pathFolder, "add", "."]) + try await terminalService.run(executableURL, arguments: ["-C", pathFolder, "commit", "-m", "Initial commit"]) } } diff --git a/Test/Sources/Cases/Public/Tasks/InitGitInFolderTaskTests.swift b/Test/Sources/Cases/Public/Tasks/InitGitInFolderTaskTests.swift new file mode 100644 index 0000000..6f687de --- /dev/null +++ b/Test/Sources/Cases/Public/Tasks/InitGitInFolderTaskTests.swift @@ -0,0 +1,32 @@ +import Foundation +import Testing + +@testable import ColibriLibrary + +struct InitGitInFolderTaskTests { + + // MARK: Properties + + private let spy = TerminalServiceSpy() + + // MARK: + + @Test(arguments: [URL.someCurrentFolder, .someNewFolder, .someDotFolder, .someTildeFolder]) + func task(at rootFolder: URL) async throws { + // GIVEN + let initGitInFolder = InitGitInFolderTask(terminalService: spy) + + // WHEN + try await initGitInFolder(at: rootFolder) + + // THEN + let executableURL = URL(at: "/usr/bin/git") + let pathFolder = rootFolder.pathString + + #expect(spy.actions.count == 3) + #expect(spy.actions[0] == .ran(executableURL, ["init", pathFolder])) + #expect(spy.actions[1] == .ran(executableURL, ["-C", pathFolder, "add", "."])) + #expect(spy.actions[2] == .ran(executableURL, ["-C", pathFolder, "commit", "-m", "Initial commit"])) + } + +}