Skip to content

Commit

Permalink
Fix job executor tests
Browse files Browse the repository at this point in the history
  • Loading branch information
aciidgh committed Oct 6, 2019
1 parent 6164fc2 commit 0112262
Showing 1 changed file with 31 additions and 23 deletions.
54 changes: 31 additions & 23 deletions Tests/SwiftDriverTests/JobExecutorTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,28 @@ extension Job.ArgTemplate: ExpressibleByStringLiteral {
}

class JobCollectingDelegate: JobExecutorDelegate {
struct StubProcess: ProcessProtocol {
static func launchProcess(
arguments: [String]
) throws -> ProcessProtocol {
return StubProcess()
}

var processID: TSCBasic.Process.ProcessID { .init(-1) }

func waitUntilExit() throws -> ProcessResult {
return ProcessResult(
arguments: [],
exitStatus: .terminated(code: 0),
output: Result.success(ByteString("test").contents),
stderrOutput: Result.success([])
)
}
}

var started: [Job] = []
var finished: [(Job, ProcessResult)] = []
var useStubProcess = false

func jobFinished(job: Job, result: ProcessResult, pid: Int) {
finished.append((job, result))
Expand All @@ -20,6 +40,13 @@ class JobCollectingDelegate: JobExecutorDelegate {
func jobStarted(job: Job, arguments: [String], pid: Int) {
started.append(job)
}

func launchProcess(for job: Job, arguments: [String]) throws -> ProcessProtocol {
if useStubProcess {
return StubProcess()
}
return try TSCBasic.Process.launchProcess(arguments: arguments)
}
}

final class JobExecutorTests: XCTestCase {
Expand Down Expand Up @@ -117,7 +144,7 @@ final class JobExecutorTests: XCTestCase {

let delegate = JobCollectingDelegate()
let executor = JobExecutor(jobs: [compileFoo, compileMain, link], resolver: resolver, executorDelegate: delegate)
try executor.build(.relative(RelativePath("main")))
try executor.execute()

let output = try TSCBasic.Process.checkNonZeroExit(args: exec.pathString)
XCTAssertEqual(output, "5\n")
Expand All @@ -132,25 +159,6 @@ final class JobExecutorTests: XCTestCase {
}

func testStubProcessProtocol() throws {
struct StubProcess: ProcessProtocol {
static func launchProcess(
arguments: [String]
) throws -> ProcessProtocol {
return StubProcess()
}

var processID: TSCBasic.Process.ProcessID { .init(-1) }

func waitUntilExit() throws -> ProcessResult {
return ProcessResult(
arguments: [],
exitStatus: .terminated(code: 0),
output: Result.success(ByteString("test").contents),
stderrOutput: Result.success([])
)
}
}

let job = Job(
kind: .compile,
tool: .absolute(AbsolutePath("/usr/bin/swift")),
Expand All @@ -160,12 +168,12 @@ final class JobExecutorTests: XCTestCase {
)

let delegate = JobCollectingDelegate()
delegate.useStubProcess = true
let executor = JobExecutor(
jobs: [job], resolver: try ArgsResolver(),
executorDelegate: delegate,
processProtocol: StubProcess.self
executorDelegate: delegate
)
try executor.build(.temporary(RelativePath("main")))
try executor.execute()

XCTAssertEqual(try delegate.finished[0].1.utf8Output(), "test")
}
Expand Down

0 comments on commit 0112262

Please sign in to comment.