Groovy против Jenkins - функция regex replaceFirst / replaceAll с закрытием работает по-разному в общей библиотеке Jenkins - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь создать общую библиотеку Jenkins. Для этого я создал юнит тестируемые Groovy классы, такие как управление версиями. У меня есть шаблон регулярного выражения, и я хочу заменить строку версии соответствующими параметрами в закрытии groovy. В тестах Junit все работает нормально, но от Дженкинса у меня только нулевые значения по всем параметрам, если я использую многопараметрическое замыкание.

Моя функция управления версиями:

static String getNewVersion(String oldVersion, VersioningType type) {
        Pattern pattern = ~/^(\d+)\.(\d+)\.(\d+)(-.*)?$/
        switch (type) {
            case VersioningType.INC_PATCH:
              //Closure incPatchNotworkingFromJenkins = { _, major, minor, patch, postfix -> "${major}.${minor}.{(patch as int) + 1}{postfix :? ""}"}  
                Closure incPatch = { matchgroups -> "${matchgroups[1]}.${matchgroups[2]}.${(matchgroups[3] as int) + 1 }${matchgroups[4] ?: ""}" }
                return oldVersion.replaceAll(pattern, incPatch)
    }
}

Это работает, но с закрытием в комментарии Дженкинс получил только нулевые значения во всех параметрах, только параметр _ получает значение. Если я распечатаю параметры, я получаю [0.1.1, ноль, ноль, ноль, ноль], ноль, ноль, ноль, ноль.

Кто-нибудь может мне помочь с этим? Почему Дженкинс не понимает многопараметрических замыканий?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...