Skip to content

Commit

Permalink
Keep track of parameters in saved resolutions in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
alexarchambault committed Feb 14, 2019
1 parent 572b38e commit 5447e49
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
Expand Up @@ -5,6 +5,7 @@ import coursier.cache.{Cache, MockCache}
import coursier.util.Task

import scala.concurrent.{ExecutionContext, Future}
import scala.scalajs.js.Dynamic.{ global => g }

abstract class PlatformTestHelpers {
val cache: Cache[Task] =
Expand All @@ -16,4 +17,10 @@ abstract class PlatformTestHelpers {
Platform.textResource(path)

def maybeWriteTextResource(path: String, content: String): Unit = {}

private lazy val sha1Module = g.require("sha1")

def sha1(s: String): String =
sha1Module(s).asInstanceOf[String]

}
@@ -1,7 +1,9 @@
package coursier

import java.math.BigInteger
import java.nio.charset.StandardCharsets
import java.nio.file.{Files, Paths}
import java.security.MessageDigest
import java.util.Locale

import coursier.cache.{Cache, MockCache}
Expand Down Expand Up @@ -37,4 +39,10 @@ abstract class PlatformTestHelpers {
Files.write(p, content.getBytes(StandardCharsets.UTF_8))
}

def sha1(s: String): String = {
val md = MessageDigest.getInstance("SHA-1")
val b = md.digest(s.getBytes(StandardCharsets.UTF_8))
new BigInteger(1, b).toString(16)
}

}
16 changes: 14 additions & 2 deletions modules/coursier/shared/src/test/scala/coursier/TestHelpers.scala
@@ -1,5 +1,11 @@
package coursier

import java.math.BigInteger
import java.nio.charset.StandardCharsets
import java.security.MessageDigest

import coursier.params.ResolutionParams

import scala.async.Async.{async, await}
import scala.concurrent.{ExecutionContext, Future}

Expand All @@ -8,7 +14,7 @@ object TestHelpers extends PlatformTestHelpers {
implicit def ec: ExecutionContext =
cache.ec

def validateDependencies(res: Resolution): Future[Unit] = async {
def validateDependencies(res: Resolution, params: ResolutionParams = ResolutionParams()): Future[Unit] = async {
assert(res.rootDependencies.lengthCompare(1) == 0) // only fine with a single root dependency for now

val rootDep = res.rootDependencies.head
Expand All @@ -24,6 +30,12 @@ object TestHelpers extends PlatformTestHelpers {
case (k, v) => k + "_" + v
}.mkString("_")

val paramsPart =
if (params == ResolutionParams())
""
else
"_params" + sha1(params.toString)

val path = Seq(
"modules/tests/shared/src/test/resources/resolutions",
rootDep.module.organization.value,
Expand All @@ -34,7 +46,7 @@ object TestHelpers extends PlatformTestHelpers {
""
else
"_" + rootDep.configuration.value.replace('(', '_').replace(')', '_')
)
) + paramsPart
).filter(_.nonEmpty).mkString("/")

def tryRead = textResource(path)
Expand Down
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -4,6 +4,7 @@
"devDependencies": {
"cheerio": "0.22.0",
"sax": "1.2.4",
"sha1": "1.1.1",
"xhr2": "0.1.4",
"xmldom": "0.1.27"
},
Expand Down

0 comments on commit 5447e49

Please sign in to comment.