测试时gradle环境变量中的URISyntaxException

时间:2016-06-19 21:47:57

标签: gradle groovy

我有一个build.gradle如下

task setDockerHost {
  group 'Docker'
  description 'Gets the docker host ip from your OS'
  def stdout = new ByteArrayOutputStream()
  exec {
    commandLine './src/main/resources/scripts/get-docker-host.sh', '60'
    standardOutput = stdout
  }
  project.ext.set('DOCKERHOST', "$stdout")
}

tasks.withType(Test) {
  doFirst { println "DockerHost is $project.DOCKERHOST" }
  environment 'DOCKERHOST', "$project.DOCKERHOST"
  outputs.upToDateWhen { false }
  testLogging {
    events 'passed', 'skipped', 'failed', 'standardOut'
  }
  reports.html.destination = file("${reporting.baseDir}/${name}")
}

我如上所述定义了一个DOCKERHOST env变量,并希望在我的groovy测试类中使用:

class MyClass extends Specification {
  RESTClient client = new RESTClient("http://"+System.getenv('DOCKERHOST')+":9090/")
...
}

在执行中我的println有效:DockerHost是192.168.99.100

但是,当我运行此测试时,它会抛出:

URIerror

我已经尝试用""替换\ n,\ r \ n和空格。我也尝试从URL中删除协议(又名192.168.99.10:9090),它告诉我在索引0处发生相同的错误

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我没弄清楚问题出在哪个问题但是我能够解决它但是像疯了一样替换字符串:

String url = ("http://" + System.getenv('DOCKERHOST') + ":9090/").replace("\n", "").replace("\r", "").replace(" ", "")


RESTClient client = new RESTClient(url)

我花了一天时间试图解决这个问题......希望其他人会更快。