Hi,
I tried, to the best of my ability, not open this discussion, as something tells me it's not related to TCA
In the second item of the 0.1.3 release notes, it says that:
Changed:
ComposableArchitecture
is no longer an explicitly dynamic library. This unfortunately means you will need to reintegrate the library into your application. You can reintegrate by removing and re-adding the library to your application or shared framework target. If you includedComposableArchitecture
in more than one shared framework targets you will need to consolidate the static library dependency in a single shared framework target per Apple's recommendation.
Now, how do I properly use TCA in a Test target?
From my understanding, I created a Shared
framework, and then added TCA to Dependencies
and Link Binary With Libraries
:
- Shared.framework
> ComposableArchitecture
Then, in a Feature
target framework, I added the Shared
framework to Dependencies
, Link Binary With Libraries
and Embed Frameworks
.
- Feature
> Shared
Everything seems to be working as expected, however, when including the Shared
framework to a FeatureTests
target:
- FeatureTests
> Shared
I start getting lots of these, when compiling for testing:
Undefined symbols for architecture x86_64:
"ComposableArchitecture.Effect.init(value: A) -> ComposableArchitecture.Effect<A, B>", referenced from:
SignInTests.SignInTests.setUpWithError() throws -> () in SignInTests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Now, if I remove Shared
, from the FeatureTests
, and instead add the ComposableArchitecture
to Dependencies
and Link Binary With Libraries
:
- FeatureTests
> ComposableArchitecture
It now seems to be working fine. I'm not sure I understand why this is happening. Shouldn't I be able to use Shared
? It's expected, right?
What's more interesting is, if I now remove the ComposableArchitecture
again from the FeatureTests
target, and re-add the Shared
framework, things will unexpectedly work as it would be... initially expected. (btw, I do clean Derived Data and test individual components with clean:true
in fastlane) ..this is absolutly bananas.
I've been at it last night for a couple of hours, and today again with a "fresh focus" and still feel things are off. This is a project with 14 targets so far, 28 with tests, plus some...
I'm finally able to use TCA for testing (so far), but the workflow to get there? I need to include TCA to my Tests targets, remove it, and re-add the Shared
framework. I must be doing something wrong here!
I had no idea SPM was this fragile. Maybe it's me? Does anyone spot something that I'm doing incorrectly here?
Thank you