typelevel / typelevel/weaver-test
Unable to resolve GlobalResource defined in a submodule/project
Nobody has claimed this yet.
- Dominant language
- Scala
- Stars
- 85
- Forks
- 15
- PR merge metrics
- No merged PRs in 30d
Description
This issue was copied over from: https://github.com/disneystreaming/weaver-test/issues/479
It was opened by: aevanszen
If you define a GlobalResource in a subproject/module for re-use, i.e. a test-support-module, the GlobalResource cannot be resolved/used in a test in another module. You will get the below sample output:
[info] MyTestSuite
[info] - Unexpected failure 0ms
[info] *************FAILURES**************
[info] MyTestSuite
[error] - Unexpected failure 0ms
[error] GlobalResourceF$ResourceNotFound: Could not find a resource of type java.lang.String with label null
[error]
[error] GlobalResourceF.scala:110 weaver.GlobalResourceF$Read#$anonfun$getOrFailR$1
[error] Stream.scala:3475 fs2.Stream$#$anonfun$resourceWeak$3
[error] Stream.scala:3475 fs2.Stream$#$anonfun$resourceWeak$3$adapted
[error] Stream.scala:1191 fs2.Stream$#$anonfun$flatMap$1
[error] Algebra.scala:620 fs2.internal.FreeC$#$anonfun$flatMapOutput$1
[error] Algebra.scala:53 fs2.internal.FreeC$$anon$1#cont
[error] Algebra.scala:240 fs2.internal.FreeC$ViewL$$anon$9$$anon$10#<init>
[error] Algebra.scala:240 fs2.internal.FreeC$ViewL$$anon$9#cont
[error] Algebra.scala:234 fs2.internal.FreeC$ViewL$$anon$8#next
[error] Algebra.scala:475 fs2.internal.FreeC$#$anonfun$compile$8
[error] CECompat.scala:51 eval @ weaver.CECompat#resourceLift
[error] CompileScope.scala:413 map @ fs2.internal.CompileScope#interruptibleEval
[error] Algebra.scala:503 flatMap @ fs2.internal.FreeC$#go$1
[error] Algebra.scala:463 flatMap @ fs2.internal.FreeC$#$anonfun$compile$7
[error] Algebra.scala:460 flatMap @ fs2.internal.FreeC$#go$1
[error] Algebra.scala:436 flatMap @ fs2.internal.FreeC$#interruptGuard$1
[error] Algebra.scala:436 flatMap @ fs2.internal.FreeC$#interruptGuard$1
[error] CompileScope.scala:185 flatMap @ fs2.internal.CompileScope#$anonfun$acquireResource$4
[error] ScopedResource.scala:139 flatten @ fs2.internal.ScopedResource$$anon$1#acquired
[error] CompileScope.scala:183 flatMap @ fs2.internal.CompileScope#$anonfun$acquireResource$1
[error] CompileScope.scala:180 flatMap @ fs2.internal.CompileScope#acquireResource
[error] Algebra.scala:511 flatMap @ fs2.internal.FreeC$#$anonfun$compile$12
[error] Algebra.scala:436 flatMap @ fs2.internal.FreeC$#interruptGuard$1
[error] Algebra.scala:436 flatMap @ fs2.internal.FreeC$#interruptGuard$1
[error] Algebra.scala:436 flatMap @ fs2.internal.FreeC$#interruptGuard$1
[error] CompileScope.scala:185 flatMap @ fs2.internal.CompileScope#$anonfun$acquireResource$4
I have a sample project demonstrating this issue at https://github.com/aevanszen/weaver-global-resource-classloading-bug
It would be desirable to use GlobalResources defined in other subprojects/libraries for common code re-use.
A workaround is to define the GlobalResource as a trait in the shared project and then define an object extending the trait in the project you want to use the GlobalResource. This feels very much like a workaround, not desired functionality; for every project/subproject, you wish to re-use a common GlobalResource, you need to define a local class to the module by extending the shared trait.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked sample project demonstrating the classloading failure, then inspect GlobalResourceF.scala around line 110 and the reported ResourceNotFound path. Add a regression test covering a GlobalResource defined in one subproject and used from another; done means the resource resolves without requiring a local wrapper object.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100