1

我正在尝试编写一个执行 REST api 调用并获取 JSON 对象的 Groovy 脚本,然后,我需要从此 JSON 中获取特定字符串并检查它是否与我在脚本中提供的另一个字符串匹配。

我做了所有事情,直到比较部分,

我从 JSON 得到的字符串看起来像

[AAAAAA/BBBBBB/CCCCCC/file.txt]

这是我的 Groovy 脚本:

/*Import Section*/
//--------------//
groovy.json.*

/*Var Declaration*/
//---------------//
String errMessage = "There were no Junit tests impacted in this PR,             
Comparison is: "

String scssMessage = "There were Junit tests impacted in this PR,         
Comparison is: "

usr= "USERNAME"
pass= "PASSWORD"
pr_num = 92
String validPath = "AAAAAA/BBBBBB/CCCCCC/DDDDDD/EEEEEE"
def copmarison = !false

/*REST API call*/
//------------//
url= "http://{$usr}:    
{$pass}@XX.XXX.X.XX:PPPP/rest/api/1.0/projects/XX/repos/TTTTT/pull- 
 requests/+{$pr_num}/changes?changescope"

process = [ 'bash', '-c',  "curl ${url}" ].execute()
process.waitFor()

/*JSON parsing*/
//------------//
def info = new JsonSlurper().parseText(process.text)
def path = info.values.path.toString

/*Impacted JUNIT verifycation*/
//---------------------------//
if(path==validPath){
        println ("$scssMessage"+"Valid"+"\n")
        comparison=true
}else{
  println ("$errMessage"+"Not Valid"+"\n")
  comparison=!false
}

我确定我的比较不好,我希望比较并查找我的“路径”的一部分是否包含在我的“有效路径”中。

例如,以下情况表示为真:

AAAAAA/BBBBBB/CCCCCC/file.txt 

包含在:

AAAAAA/BBBBBB/CCCCCC/DDDDDD/EEEEEE

我需要找到一种方法来进行这种比较

请帮忙

4

1 回答 1

0

如果我正确理解您的问题,您只需检查文件的路径部分与特定路径。在这种情况下,这将起作用:

// you should already have these; including here for clarity
​def file = "AAAAAA/BBBBBB/CCCCCC/file.txt"
def path = "AAAAAA/BBBBBB/CCCCCC/DDDDDD/EEEEEE"

return path.contains(file[0..file.lastIndexOf("/")]​​​)​
于 2018-03-22T19:40:48.540 回答