From 2e6bd289a115989123a2d32ff102408c378953ea Mon Sep 17 00:00:00 2001 From: "Jesse L. Zamora" Date: Wed, 8 Jan 2025 17:51:38 -0500 Subject: [PATCH] Use Tests/.build directory for EndToEndTests instead of tmp directory - This helps improve the time it takes to run the EndToEndTests since the generator does not need to be rebuild for each test. --- .gitignore | 2 +- Tests/SwiftSDKGeneratorTests/EndToEndTests.swift | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8e931e6..98deb12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .DS_Store -/.build +.build* /.index-build /Packages /*.xcodeproj diff --git a/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift b/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift index 49951eb..12761ff 100644 --- a/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift +++ b/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift @@ -49,11 +49,8 @@ extension FileManager { } } -// Building an SDK requires running the sdk-generator with `swift run swift-sdk-generator`. -// This takes a lock on `.build`, but if the tests are being run by `swift test` the outer Swift Package Manager -// instance will already hold this lock, causing the test to deadlock. We can work around this by giving -// the `swift run swift-sdk-generator` instance its own scratch directory. -func buildSDK(_ logger: Logger, scratchPath: String, withArguments runArguments: String) async throws -> String { +// This will build and run the generator in a separate .build directory from the main one +func buildSDK(_ logger: Logger, scratchPath: String = ".build", withArguments runArguments: String) async throws -> String { var logger = logger logger[metadataKey: "runArguments"] = "\"\(runArguments)\"" logger[metadataKey: "scratchPath"] = "\(scratchPath)" @@ -230,9 +227,7 @@ func buildTestcases(config: SDKConfiguration) async throws { } } - let bundleName = try await FileManager.default.withTemporaryDirectory(logger: logger) { tempDir in - try await buildSDK(logger, scratchPath: tempDir.path, withArguments: config.sdkGeneratorArguments) - } + let bundleName = try await buildSDK(logger, withArguments: config.sdkGeneratorArguments) logger.info("Built SDK")