2014-06-06 1 views
0

나는 Jenkins 플러그인에 대한 몇 가지 Spock 테스트를 실시 중이고 빌드 변수가 유효한 변수 중 하나와 일치하는지 확인하고 싶습니다. MatrixProject에서 오는 것입니다.유효한 세트 인 해시를 테스트하려면 어떻게해야합니까?

어떻게할까요?

난이 있지만 그것은 조금 투박한 보이지만 이것이 내가

유용한 테스트를하고자하는 젠킨스 작업-DSL 매트릭스 작업 플러그인에 대한 스팍의 사양입니다

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']) 
} 

편집을 작동합니까

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 
    } 

답변

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) 
관련 문제