Testing 如何通过常春藤证书的脚本测试?

Testing 如何通过常春藤证书的脚本测试?,testing,sbt,Testing,Sbt,我用它来测试sbt插件。作为测试的一部分,它需要从私有工件库下载工件。Scripted似乎忽略了~/.sbt/0.13目录中的凭据。如何让我的测试使用这些凭据 如果我不必硬编码任何路径,那就太好了。我假设您已经遵循并拥有一个.credentials文件,其中包含领域,主机,用户,密码: realm=Sonatype Nexus Repository Manager host=nexus.scala-tools.org user=admin password=admin123 然后在测试的bui

我用它来测试sbt插件。作为测试的一部分,它需要从私有工件库下载工件。Scripted似乎忽略了
~/.sbt/0.13
目录中的凭据。如何让我的测试使用这些凭据


如果我不必硬编码任何路径,那就太好了。

我假设您已经遵循并拥有一个
.credentials
文件,其中包含
领域
主机
用户
密码

realm=Sonatype Nexus Repository Manager
host=nexus.scala-tools.org
user=admin
password=admin123
然后在测试的
build.sbt
中添加


这是我解决这个问题的方法

在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写入每个脚本集测试,例如sbt测试/测试组/测试名称/credentials.sbt。然后由脚本化测试使用


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

这需要在特定目录中有一个特定命名的文件。无法保证其他用户的凭据文件将位于该特定位置。例如,我在几个版本目录中有一个credentials.sbt,但实际的凭据在其他地方。我真的不想要求某人以特定方式为特定项目设置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()
}