/*
* This file contains code originally published under the following license:
*
* Copyright (c) 2012, Roman Timushev
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package mill.scalalib.dependency.metadata
import coursier.Fetch
import coursier.core.{Artifact, Classifier, Dependency, Module, Project, Repository}
import coursier.ivy.IvyRepository
import coursier.maven.MavenRepository
import coursier.util.{EitherT, Monad}
import utest._
object MetadataLoaderFactoryTests extends TestSuite {
val tests = Tests {
'mavenRepository - {
val mavenRepo = MavenRepository("https://repo1.maven.org/maven2")
assertMatch(MetadataLoaderFactory(mavenRepo)) {
case Some(MavenMetadataLoader(`mavenRepo`)) =>
}
}
'ivyRepository - {
val Right(ivyRepo) = IvyRepository.parse(
"https://dl.bintray.com/sbt/sbt-plugin-releases/" + coursier.ivy.Pattern.default.string,
dropInfoAttributes = true)
assertMatch(MetadataLoaderFactory(ivyRepo)) { case None => }
}
'otherRepository - {
val otherRepo = new CustomRepository
assertMatch(MetadataLoaderFactory(otherRepo)) { case None => }
}
}
case class CustomRepository() extends Repository {
override def find[F[_]](module: Module, version: String, fetch: coursier.Repository.Fetch[F])
(implicit F: Monad[F]): EitherT[F, String, (Artifact.Source, Project)] =
???
override def artifacts(dependency: Dependency,
project: Project,
overrideClassifiers: Option[Seq[Classifier]]) = ???
}
}