如何将Ivy凭证传递给脚本化测试?

时间:2014-06-02 03:06:16

标签: testing sbt

我使用scripted test framework来测试sbt插件。作为该测试的一部分,它需要从私有工件存储中下载工件。脚本似乎忽略了~/.sbt/0.13目录中的凭据。如何让我的测试使用这些凭证?

如果我没有硬编码任何路径,那将是件好事。

2 个答案:

答案 0 :(得分:1)

我假设您已关注the official Publishing document,并且.credentials个文件包含realmhostuserpassword

realm=Sonatype Nexus Repository Manager
host=nexus.scala-tools.org
user=admin
password=admin123

然后在测试的build.sbt 添加

credentials += Credentials(BuildPaths.defaultVersionedGlobalBase(sbtVersion.value) / "credentials")

答案 1 :(得分:0)

这是我解决问题的黑客/解决方法。

在scripted.sbt中,我添加以下代码。

credentials ++= {
  val out = credentials.value.map {
    case c: FileCredentials   => s"""Credentials(new java.io.File("${c.path.getAbsolutePath}"))"""
    case c: DirectCredentials => s"Credentials(${c.realm}, ${c.host}, ${c.userName}, ${c.passwd})"
  }.mkString(" credentials ++= Seq(", ",", ")")
  sbtTestDirectory.value.listFiles.flatMap(_.listFiles).map(f => IO.writeLines(f / "credentials.sbt", Seq(out)))
  List()
}

这将获取现有的sbt凭据并将credentials.sbt写入每个scriptet测试,例如sbt-test / test-group / test-name / credentials.sbt。然后由脚本测试使用它。

我的知识有点受限,所以这有点难看。