5.3-DEVELOPMENT-SNAPSHOT-2020-05-19-a to try out the new resources feature of the package manager.
swift --version outputs:
Apple Swift version 5.3-dev (LLVM 38f04f051e, Swift 587da7ce60) Target: x86_64-apple-darwin19.5.0.
swift build --version:
Swift Package Manager - Swift 5.3.0
I run into an issue where I cannot access resource files bundled in the test target. I am not sure if the root cause is that the feature is not fully finished yet, that it's a bug or I am just using it wrong.
// swift-tools-version:5.3 import PackageDescription let package = Package( name: "SwiftBeanCountParser", products: [ .library( name: "SwiftBeanCountParser", targets: ["SwiftBeanCountParser"]), ], dependencies: [ .package( url: "https://github.com/Nef10/SwiftBeanCountModel.git", .exact("0.1.0") ), ], targets: [ .target( name: "SwiftBeanCountParser", dependencies: ["SwiftBeanCountModel"]), .testTarget( name: "SwiftBeanCountParserTests", dependencies: ["SwiftBeanCountParser"], resources: [ .process("Resources"), ]), ] )
When I run
swift test it runs some tests till it fails with:
Fatal error: could not load resource bundle: /Applications/Xcode.app/Contents/Developer/usr/bin/SwiftBeanCountParser_SwiftBeanCountParserTests.bundle: file /Users/Steffen/Projects/SwiftBeanCountParser/.build/x86_64-apple-macosx/debug/SwiftBeanCountParserTests.build/DerivedSources/resource_bundle_accessor.swift, line 7 Exited with signal code 4
My code for loading the resource looks like this:
let url = NSURL.fileURL(withPath: Bundle.module.path(forResource: "Minimal", ofType: "beancount")!), so I am using
Bundle.module like introduced by the resource proposal.
The resource_bundle_accessor where the problem occurs does this does this:
let bundlePath = Bundle.main.bundlePath + "/" + "SwiftBeanCountParser_SwiftBeanCountParserTests.bundle" So it seems that
Bundle.main.bundlePath is set to
/Applications/Xcode.app/Contents/Developer/usr/bin/. Acording to Bundle.main.path pointing to odd path this could be correct as this directory contains the xctest executable.
The folder which contains my code is
/Users/Steffen/Projects/SwiftBeanCountParser. If I check in the
.build folder, I can see that
/Users/Steffen/Projects/SwiftBeanCountParser/.build/x86_64-apple-macosx/debug/SwiftBeanCountParser_SwiftBeanCountParserTests.bundle contains all my resource files.
Am I doing anything wrong? Is this feature not fully finished yet? Or is this a bug I should report (I couldn't find any similar bug or forums post)