fmonniot / scala3mock

Mocking framework for Scala 3
https://francois.monniot.eu/scala3mock
Other
21 stars 2 forks source link

project setup #65

Closed NPCRUS closed 2 months ago

NPCRUS commented 2 months ago

Hi @fmonniot, I forked your project with aim to make some small contribution (so far). But I bump into some errors while trying to sync project in intelij or import with metals in visual studio code or run some integration test:

  1. downloading some snapshot version of scala3mock, adding Resolver.sonatypeOssRepos("snapshots") doesn't help
    [info] downloading https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/scala3mock_3-0.0.0+240-85ba2141+20240730-0913-SNAPSHOT.pom
    [info] downloaded https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/scala3mock_3-0.0.0+240-85ba2141+20240730-0913-SNAPSHOT.pom
    [info] downloading https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/scala3mock_3-0.0.0+240-85ba2141+20240730-0913-SNAPSHOT.pom.sha1
    [info] downloaded https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/scala3mock_3-0.0.0+240-85ba2141+20240730-0913-SNAPSHOT.pom.sha1
    [info] downloading https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/maven-metadata.xml
    [info] downloaded https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/maven-metadata.xml
    [info] downloading https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/maven-metadata.xml.sha1
    [info] downloaded https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/maven-metadata.xml.sha1
    [warn]
    [warn]  Note: Unresolved dependencies path:
    [error] stack trace is suppressed; run 'last integration / update' for the full output
    [error] stack trace is suppressed; run 'last integration / ssExtractDependencies' for the full output
    [error] (integration / update) sbt.librarymanagement.ResolveException: Error downloading eu.monniot:scala3mock_3:0.0.0+240-85ba2141+20240730-0913-SNAPSHOT
    [error]   Not found
    [error]   Not found
    [error]   not found: /Users/nikitaglushchenko/.ivy2/local/eu.monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/ivys/ivy.xml
    [error]   not found: https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/scala3mock_3-0.0.0+240-85ba2141+20240730-0913-SNAPSHOT.pom
    [error] (integration / ssExtractDependencies) sbt.librarymanagement.ResolveException: Error downloading eu.monniot:scala3mock_3:0.0.0+240-85ba2141+20240730-0913-SNAPSHOT
    [error]   Not found
    [error]   Not found
    [error]   not found: /Users/nikitaglushchenko/.ivy2/local/eu.monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/ivys/ivy.xml
    [error]   not found: https://repo1.maven.org/maven2/eu/monniot/scala3mock_3/0.0.0+240-85ba2141+20240730-0913-SNAPSHOT/scala3mock_3-0.0.0+240-85ba2141+20240730-0913-SNAPSHOT.pom
  2. some missing airframe logger, which is I guess not critical, but still confusing error:
    Could not load Logmanager "wvlet.log.AirframeLogManager"
    java.lang.ClassNotFoundException: wvlet.log.AirframeLogManager
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at java.logging/java.util.logging.LogManager$1.run(LogManager.java:239)
    at java.logging/java.util.logging.LogManager$1.run(LogManager.java:223)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    at java.logging/java.util.logging.LogManager.<clinit>(LogManager.java:222)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.management/sun.management.ManagementFactoryHelper$LoggingMXBeanAccess.getMXBeanImplementation(ManagementFactoryHelper.java:243)
    at java.management/sun.management.ManagementFactoryHelper$LoggingMXBeanAccess.<init>(ManagementFactoryHelper.java:259)
    at java.management/sun.management.ManagementFactoryHelper$PlatformLoggingImpl.getInstance(ManagementFactoryHelper.java:339)
    at java.management/sun.management.ManagementFactoryHelper$PlatformLoggingImpl.<clinit>(ManagementFactoryHelper.java:342)
    at java.management/sun.management.ManagementFactoryHelper.getPlatformLoggingMXBean(ManagementFactoryHelper.java:160)
    at java.management/java.lang.management.DefaultPlatformMBeanProvider$9.nameToMBeanMap(DefaultPlatformMBeanProvider.java:378)
    at java.management/java.lang.management.ManagementFactory.lambda$getPlatformMBeanServer$0(ManagementFactory.java:488)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
    at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at java.management/java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:489)
    at wvlet.log.LogEnv$.liftedTree1$1(LogEnv.scala:79)
    at wvlet.log.LogEnv$.getMBeanServer$lzycompute(LogEnv.scala:78)
    at wvlet.log.LogEnv$.getMBeanServer(LogEnv.scala:74)
    at wvlet.log.LogEnv$.registerJMX(LogEnv.scala:94)
    at wvlet.log.LogEnv$.<init>(LogEnv.scala:72)
    at wvlet.log.LogEnv$.<clinit>(LogEnv.scala)
    at wvlet.log.Logger$.<init>(Logger.scala:217)
    at wvlet.log.Logger$.<clinit>(Logger.scala)
    at xerial.sbt.Sonatype$.<init>(Sonatype.scala:25)
    at xerial.sbt.Sonatype$.<clinit>(Sonatype.scala)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:467)
    at sbt.internal.inc.ModuleUtilities$.getObject(ModuleUtilities.scala:24)
    at sbt.internal.inc.ModuleUtilities$.getCheckedObject(ModuleUtilities.scala:32)
    at sbt.internal.inc.ModuleUtilities$.$anonfun$getCheckedObjects$1(ModuleUtilities.scala:37)
    at scala.collection.immutable.Stream.$anonfun$map$1(Stream.scala:418)
    at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1173)
    at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1163)
    at scala.collection.generic.Growable.loop$1(Growable.scala:57)
    at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:61)
    at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:53)
    at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:184)
    at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:47)
    at scala.collection.TraversableLike.to(TraversableLike.scala:786)
    at scala.collection.TraversableLike.to$(TraversableLike.scala:783)
    at scala.collection.AbstractTraversable.to(Traversable.scala:108)
    at scala.collection.TraversableOnce.toList(TraversableOnce.scala:350)
    at scala.collection.TraversableOnce.toList$(TraversableOnce.scala:350)
    at scala.collection.AbstractTraversable.toList(Traversable.scala:108)
    at scala.collection.immutable.List.$plus$plus(List.scala:216)
    at sbt.internal.PluginDiscovery$.discoverAll(PluginDiscovery.scala:59)
    at bloop.integrations.sbt.BloopDefaults$.$anonfun$computeSbtMetadata$3(SbtBloop.scala:820)
    at scala.Function1.$anonfun$compose$1(Function1.scala:49)
    at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
    at sbt.std.Transform$$anon$4.work(Transform.scala:69)
    at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
    at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
    at sbt.Execute.work(Execute.scala:292)
    at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
    at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)

    My goal here would be to update documentation with instructions, so that the next person, who wants to contribute will have easier time onboarding and running the project

fmonniot commented 2 months ago

I think the main restriction is that it doesn't work with the latest JVM versions (what with 3.2.x not being supported anymore). I'm using Java 17 on my laptop and CI is using 11. Otherwise it should be a fairly standard SBT project.

fmonniot commented 2 months ago

Oh right, the integration project is also a bit weird. It's not meant to be imported directly into an IDE. I haven't had any issues with Metal, but I can see IJ complaining about it.

I'd recommend excluding it from the IDE modules, it doesn't have any code associated with it and is only used to do cross-scala testing. See the github actions configuration to see how it works.

NPCRUS commented 2 months ago

I confirm that excluding integration project allows project to import successfully