我如何测试一个哈希是否是一个有效集合



我正在为Jenkins插件组合一些spock测试,并在此过程中我想检查构建变量是否匹配一些有效的变量之一。这些来自MatrixProject

但是我怎么做呢?

我有这个,但它看起来有点笨拙,但确实工作

gen_build.getRuns.every(){
  it.getBuildVariables().equals([axis1: 'textz', axis2: 'text1']) ||
  it.getBuildVariables().equals([axis1: 'textz', axis2: 'text2']) || 
  it.getBuildVariables().equals([axis1: 'texty', axis2: 'text2'])
}

编辑这是spock规范的詹金斯工作-dsl矩阵工作插件我想要有用的测试

    def 'CombinationFilter'() {
        given:
        def job = configure( $/
job(type:MatrixJob){
  name "generated"
  axis{
    text("axis1", ["textz", "texty"])
    text("axis2", ["text1", "text2"])
  }
  steps{
    shell('return 255')
  }
  combinationFilter("axis1=='textz' || axis2=='text2'")
  sequential(false)
}
/$)
        when:
        def job_build = job.scheduleBuild2(0).get()
        def gen = rule.getInstance().getItem("generated")
        def gen_build = gen.scheduleBuild2(0).get()
        def gen_runs = gen_build.getRuns()
        then:
        job_build.logFile.text.contains("SUCCESS")
        gen_build.logFile.text.contains("FAILURE")
        gen_runs.every(){it.logFile.text.contains("FAILURE")}
        gen_runs.every(){it.getBuildVariables().equals([axis1: 'textz', axis2: 'text1']) || it.getBuildVariables().equals([axis1: 'textz', axis2: 'text2']) || it.getBuildVariables().equals([axis1: 'texty', axis2: 'text2'])}
        gen_runs.size() == 3
    }

下面的代码应该可以工作。如果您期望进一步的简化,那么共享更多的代码将更容易。

gen_build.getRuns.every { it.buildVariables in [[axis1: 'textz', axis2: 'text1'],[axis1: 'textz', axis2: 'text2'],[axis1: 'texty', axis2: 'text2']]}

您还可以还原断言:

[[axis1: 'textz', axis2: 'text1'],[axis1: 'textz', axis2: 'text2'],[axis1: 'texty', axis2: 'text2']].containsAll(gen_build.getRuns*.buildVariables)

相关内容

  • 没有找到相关文章

最新更新