Hi,
I've downloaded 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.
My Package.swift
// 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)
Thanks,
Steffen