diff --git a/src/main/scala/seed/artefact/Coursier.scala b/src/main/scala/seed/artefact/Coursier.scala index 4226054..684037c 100644 --- a/src/main/scala/seed/artefact/Coursier.scala +++ b/src/main/scala/seed/artefact/Coursier.scala @@ -126,14 +126,22 @@ object Coursier { def resolveSubset(resolution: Resolution, deps: Set[Dep], - optionalArtefacts: Boolean): List[(Classifier, Artefact)] = - resolution.subset(coursierDependencies(deps)) - .dependencyArtifacts( - Some( - overrideClassifiers( - sources = optionalArtefacts, - javaDoc = optionalArtefacts)) - ).map(a => (a._2.classifier, a._3)).toList + optionalArtefacts: Boolean): List[(Classifier, Artefact)] = { + val result = + resolution + .subset(coursierDependencies(deps)) + .dependencyArtifacts( + Some( + overrideClassifiers( + sources = optionalArtefacts, + javaDoc = optionalArtefacts))) + + require(deps.forall(d => result.map(_._1.module).exists(m => + m.organization.value == d.organisation && + m.name.value == d.artefact)), "Missing dependencies in artefact resolution") + + result.map(a => (a._2.classifier, a._3)).toList + } def overrideClassifiers(sources: Boolean, javaDoc: Boolean): Seq[Classifier] = Seq(Classifier.empty) ++ diff --git a/src/main/scala/seed/generation/Idea.scala b/src/main/scala/seed/generation/Idea.scala index b0d7826..d24b9d9 100644 --- a/src/main/scala/seed/generation/Idea.scala +++ b/src/main/scala/seed/generation/Idea.scala @@ -153,8 +153,8 @@ object Idea { collectJsDeps(build, module).map(dep => ArtefactResolution.dependencyFromDep( dep, JavaScript, - build.project.scalaVersion, - build.project.scalaJsVersion.get) + build.project.scalaJsVersion.get, + build.project.scalaVersion) ).toSet, optionalArtefacts = true), resolvedTestDeps = module.test.toList.flatMap(test => @@ -162,8 +162,8 @@ object Idea { collectJsDeps(build, test).map(dep => ArtefactResolution.dependencyFromDep( dep, JavaScript, - build.project.scalaVersion, - build.project.scalaJsVersion.get) + build.project.scalaJsVersion.get, + build.project.scalaVersion) ).toSet, optionalArtefacts = true)), moduleDeps = @@ -257,8 +257,8 @@ object Idea { collectNativeDeps(build, module).map(dep => ArtefactResolution.dependencyFromDep( dep, Native, - build.project.scalaVersion, - build.project.scalaNativeVersion.get) + build.project.scalaNativeVersion.get, + build.project.scalaVersion) ).toSet, optionalArtefacts = true), resolvedTestDeps = module.test.toList.flatMap(test => @@ -266,8 +266,8 @@ object Idea { collectNativeDeps(build, test).map(dep => ArtefactResolution.dependencyFromDep( dep, Native, - build.project.scalaVersion, - build.project.scalaNativeVersion.get) + build.project.scalaNativeVersion.get, + build.project.scalaVersion) ).toSet, optionalArtefacts = true)), moduleDeps = diff --git a/src/test/scala/seed/artefact/ArtefactResolutionSpec.scala b/src/test/scala/seed/artefact/ArtefactResolutionSpec.scala new file mode 100644 index 0000000..2d1aa3e --- /dev/null +++ b/src/test/scala/seed/artefact/ArtefactResolutionSpec.scala @@ -0,0 +1,15 @@ +package seed.artefact + +import minitest.SimpleTestSuite +import seed.model.Build.Dep +import seed.model.Platform.JavaScript + +object ArtefactResolutionSpec extends SimpleTestSuite { + test("dependencyFromDep()") { + val scalaDep = Dep("org.scala-js", "scalajs-dom", "0.9.6") + val javaDep = ArtefactResolution.dependencyFromDep( + scalaDep, JavaScript, "0.6", "2.12") + assertEquals(javaDep, + Dep("org.scala-js", "scalajs-dom_sjs0.6_2.12", "0.9.6")) + } +} diff --git a/src/test/scala/seed/artefact/CoursierSpec.scala b/src/test/scala/seed/artefact/CoursierSpec.scala new file mode 100644 index 0000000..ab60172 --- /dev/null +++ b/src/test/scala/seed/artefact/CoursierSpec.scala @@ -0,0 +1,20 @@ +package seed.artefact + +import minitest.SimpleTestSuite +import seed.model.Build +import seed.model.Build.Dep + +object CoursierSpec extends SimpleTestSuite { + test("Resolve dependency") { + val dep = Dep("org.scala-js", "scalajs-dom_sjs0.6_2.12", "0.9.6") + val resolution = Coursier.resolveAndDownload(Set(dep), + Build.Resolvers(), Coursier.DefaultIvyPath, + Coursier.DefaultCachePath, optionalArtefacts = true) + + val result = + Coursier.localArtefacts(resolution, Set(dep), optionalArtefacts = true) + assert( + result.exists(_.javaDocJar.nonEmpty) && + result.exists(_.sourcesJar.nonEmpty)) + } +}