You've already forked jenkins-lib
forked from jenkins/jenkins-lib
bump mockito, add tests, fix errors
This commit is contained in:
@@ -48,7 +48,7 @@ dependencies {
|
|||||||
testRuntimeOnly("org.junit.jupiter", "junit-jupiter-engine", junitVersion)
|
testRuntimeOnly("org.junit.jupiter", "junit-jupiter-engine", junitVersion)
|
||||||
|
|
||||||
testImplementation("org.assertj", "assertj-core", "3.15.0")
|
testImplementation("org.assertj", "assertj-core", "3.15.0")
|
||||||
testImplementation("org.mockito", "mockito-core", "3.3.3")
|
testImplementation("org.mockito", "mockito-core", "5.11.0")
|
||||||
|
|
||||||
testImplementation("org.slf4j", "slf4j-api", slf4jVersion)
|
testImplementation("org.slf4j", "slf4j-api", slf4jVersion)
|
||||||
testImplementation("org.slf4j", "slf4j-simple", slf4jVersion)
|
testImplementation("org.slf4j", "slf4j-simple", slf4jVersion)
|
||||||
|
@@ -1,436 +1,437 @@
|
|||||||
{
|
{
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:JobConfiguration",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:JobConfiguration",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"v8version": {
|
"v8version" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Версия платформы 1С:Предприятие в формате 8.3.хх.хххх."
|
"description" : "Версия платформы 1С:Предприятие в формате 8.3.хх.хххх."
|
||||||
},
|
},
|
||||||
"edtVersion": {
|
"edtVersion" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Версия модуля 1C:Enterprise Development Tools формате xxxx.x.x:x86_64"
|
"description" : "Версия модуля 1C:Enterprise Development Tools формате xxxx.x.x:x86_64"
|
||||||
},
|
},
|
||||||
"srcDir": {
|
"srcDir" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к корневому каталогу с исходниками конфигурации, в случае хранения исходников в формате EDT, необходимо указать путь к проекту"
|
"description" : "Путь к корневому каталогу с исходниками конфигурации, в случае хранения исходников в формате EDT, необходимо указать путь к проекту"
|
||||||
},
|
},
|
||||||
"sourceFormat": {
|
"sourceFormat" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Формат исходников конфигурации",
|
"description" : "Формат исходников конфигурации",
|
||||||
"enum": ["edt", "designer"]
|
"enum" : [ "edt", "designer" ]
|
||||||
},
|
},
|
||||||
"defaultBranch": {
|
"defaultBranch" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Имя ветки по умолчанию. Значение по умолчанию - main."
|
"description" : "Имя ветки по умолчанию. Значение по умолчанию - main."
|
||||||
},
|
},
|
||||||
"secrets": {
|
"secrets" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:Secrets",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:Secrets",
|
||||||
"description": "Идентификаторы сохраненных секретов",
|
"description" : "Идентификаторы сохраненных секретов",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"storagePath": {
|
"storagePath" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к хранилищу конфигурации"
|
"description" : "Путь к хранилищу конфигурации"
|
||||||
},
|
},
|
||||||
"storage": {
|
"storage" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Данные авторизации в хранилище конфигурации"
|
"description" : "Данные авторизации в хранилище конфигурации"
|
||||||
},
|
},
|
||||||
"telegramChatId": {
|
"telegramChatId" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Идентификатор telegram-чата для отправки уведомлений"
|
"description" : "Идентификатор telegram-чата для отправки уведомлений"
|
||||||
},
|
},
|
||||||
"telegramBotToken": {
|
"telegramBotToken" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Токен авторизации telegram-бота для отправки уведомлений"
|
"description" : "Токен авторизации telegram-бота для отправки уведомлений"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stages": {
|
"stages" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:StageFlags",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:StageFlags",
|
||||||
"description": "Включение этапов сборок",
|
"description" : "Включение этапов сборок",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"sonarqube": {
|
"sonarqube" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Анализ SonarQube включен"
|
"description" : "Анализ SonarQube включен"
|
||||||
},
|
},
|
||||||
"syntaxCheck": {
|
"syntaxCheck" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Синтаксический контроль включен"
|
"description" : "Синтаксический контроль включен"
|
||||||
},
|
},
|
||||||
"edtValidate": {
|
"edtValidate" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Валидация EDT включена"
|
"description" : "Валидация EDT включена"
|
||||||
},
|
},
|
||||||
"smoke": {
|
"smoke" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Дымовые тесты включены"
|
"description" : "Дымовые тесты включены"
|
||||||
},
|
},
|
||||||
"yaxunit": {
|
"yaxunit" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description" : "Запуск YAXUnit тестов включен"
|
"description" : "Запуск YAXUnit тестов включен"
|
||||||
},
|
},
|
||||||
"initSteps": {
|
"initSteps" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Предварительные шаги инициализации включены"
|
"description" : "Предварительные шаги инициализации включены"
|
||||||
},
|
},
|
||||||
"bdd": {
|
"bdd" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Запуск BDD сценариев включен"
|
"description" : "Запуск BDD сценариев включен"
|
||||||
},
|
},
|
||||||
"email": {
|
"email" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Выполнять рассылку результатов сборки на email"
|
"description" : "Выполнять рассылку результатов сборки на email"
|
||||||
},
|
},
|
||||||
"telegram": {
|
"telegram" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Выполнять рассылку результатов сборки в telegram"
|
"description" : "Выполнять рассылку результатов сборки в telegram"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"timeout": {
|
"timeout" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:TimeoutOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:TimeoutOptions",
|
||||||
"description": "Настройка таймаутов для шагов",
|
"description" : "Настройка таймаутов для шагов",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"edtToDesignerFormatTransformation": {
|
"edtToDesignerFormatTransformation" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага трансформации исходников из формата EDT в формат Конфигуратора, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага трансформации исходников из формата EDT в формат Конфигуратора, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"getBinaries": {
|
"getBinaries" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага получения бинарников, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага получения бинарников, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"createInfoBase": {
|
"createInfoBase" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага создания информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага создания информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"initInfoBase": {
|
"initInfoBase" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага инициализации информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага инициализации информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"loadExtensions": {
|
"loadExtensions" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага загрузки расширений в базу, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага загрузки расширений в базу, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"zipInfoBase": {
|
"zipInfoBase" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага архивирования информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага архивирования информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"designerToEdtFormatTransformation": {
|
"designerToEdtFormatTransformation" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага трансформации исходников из формата Конфигуратора в формат EDT, в минутах.\n По умолчанию содержит значение 60.\n "
|
"description" : "Таймаут шага трансформации исходников из формата Конфигуратора в формат EDT, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||||
},
|
},
|
||||||
"edtValidate": {
|
"edtValidate" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага валидации EDT, в минутах.\n По умолчанию содержит значение 240.\n "
|
"description" : "Таймаут шага валидации EDT, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||||
},
|
},
|
||||||
"resultTransformation": {
|
"resultTransformation" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага трансформации результатов EDT, в минутах.\n По умолчанию содержит значение 10.\n "
|
"description" : "Таймаут шага трансформации результатов EDT, в минутах.\n По умолчанию содержит значение 10.\n "
|
||||||
},
|
},
|
||||||
"bdd": {
|
"bdd" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага проверки сценариев поведения, в минутах.\n По умолчанию содержит значение 120.\n "
|
"description" : "Таймаут шага проверки сценариев поведения, в минутах.\n По умолчанию содержит значение 120.\n "
|
||||||
},
|
},
|
||||||
"syntaxCheck": {
|
"syntaxCheck" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага синтаксического контроля, в минутах.\n По умолчанию содержит значение 240.\n "
|
"description" : "Таймаут шага синтаксического контроля, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||||
},
|
},
|
||||||
"smoke": {
|
"smoke" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага дымовых тестов, в минутах.\n По умолчанию содержит значение 240.\n "
|
"description" : "Таймаут шага дымовых тестов, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||||
},
|
},
|
||||||
"yaxunit": {
|
"yaxunit" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description" : "Таймаут шага YAXUnit тестов, в минутах.\n По умолчанию содержит значение 240.\n "
|
"description" : "Таймаут шага YAXUnit тестов, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||||
},
|
},
|
||||||
"sonarqube": {
|
"sonarqube" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Таймаут шага статического анализа SonarQube, в минутах.\n По умолчанию содержит значение 90.\n "
|
"description" : "Таймаут шага статического анализа SonarQube, в минутах.\n По умолчанию содержит значение 90.\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"initInfobase": {
|
"initInfobase" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfoBaseOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfoBaseOptions",
|
||||||
"description": "Настройки шага инициализации ИБ",
|
"description" : "Настройки шага инициализации ИБ",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"initMethod": {
|
"initMethod" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "\n Способ инициализации информационной базы.\n Поддерживается три варианта:\n * fromStorage - инициализация информационной базы из хранилища конфигурации;\n * fromSource - инициализация информационной базы из исходников конфигурации;\n * defaultBranchFromStorage - инициализация основной ветки из хранилища конфигурации, остальных - из исходников конфигурации.\n По умолчанию содержит значение \"fromStorage\".",
|
"description" : "\n Способ инициализации информационной базы.\n Поддерживается три варианта:\n * fromStorage - инициализация информационной базы из хранилища конфигурации;\n * fromSource - инициализация информационной базы из исходников конфигурации;\n * defaultBranchFromStorage - инициализация основной ветки из хранилища конфигурации, остальных - из исходников конфигурации.\n По умолчанию содержит значение \"fromStorage\".",
|
||||||
"enum": ["fromStorage", "fromSource", "defaultBranchFromStorage"]
|
"enum" : [ "fromStorage", "fromSource", "defaultBranchFromStorage" ]
|
||||||
},
|
},
|
||||||
"runMigration": {
|
"runMigration" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Запустить миграцию ИБ"
|
"description" : "Запустить миграцию ИБ"
|
||||||
},
|
},
|
||||||
"additionalInitializationSteps": {
|
"additionalInitializationSteps" : {
|
||||||
"type": "array",
|
"type" : "array",
|
||||||
"description": "Дополнительные шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.first.json\")\n ",
|
"description" : "Дополнительные шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.first.json\")\n ",
|
||||||
"items": {
|
"items" : {
|
||||||
"type": "string"
|
"type" : "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"extensions": {
|
"extensions" : {
|
||||||
"type": "array",
|
"type" : "array",
|
||||||
"description": "Массив расширений для загрузки в конфигурацию.",
|
"description" : "Массив расширений для загрузки в конфигурацию.",
|
||||||
"items": {
|
"items" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfoBaseOptions:extensions:exception",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfoBaseOptions:Extension",
|
||||||
"description": "Информация о расширении для загрузки",
|
"properties" : {
|
||||||
"properties": {
|
"name" : {
|
||||||
"name": {
|
"type" : "string",
|
||||||
"type": "string",
|
"description" : "Имя расширения, используемое при его загрузке в конфигурацию."
|
||||||
"description": "Имя расширения с которым оно грузится в конфигурацию"
|
|
||||||
},
|
},
|
||||||
"initMethod": {
|
"initMethod" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "\n Способ инициализации расширения.\n Поддерживается два варианта:\n * fromSource - инициализация расширения из исходников;\n * fromFile - использование скомпилированного cfe.",
|
"description" : "\n Способ инициализации расширения.\n Поддерживается два варианта:\n * fromSource - инициализация расширения из исходников;\n * fromFile - скачивание скомпилированного cfe по ссылке.\n ",
|
||||||
"enum": ["fromSource", "fromFile"]
|
"enum" : [ "fromSource", "fromFile" ]
|
||||||
},
|
},
|
||||||
"path": {
|
"path" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Хранит в себе путь к расширению.\n * В случае если выбран initMethod <fromSource> - указывается путь к исходникам расширения.\n * В случае если выбран initMethod <fromFile> - указывается путь к cfe-файлу"
|
"description" : "\n Путь к расширению.\n * В случае если выбран initMethod <fromSource> - указывается путь к исходникам расширения.\n * В случае если выбран initMethod <fromFile> - указывается путь к cfe-файлу\n "
|
||||||
|
},
|
||||||
|
"stages" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "\n Шаги, на которых необходимо использовать расширение\n * Если не заполнено, то расширение будет подключено при инициализации базы и останется в базе на всех последующих шагах.\n * Если заполнено, то расширение будет подключено только на соответствующих шагах.\n ",
|
||||||
|
"items" : {
|
||||||
|
"type" : "string"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bdd": {
|
"bdd" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:BddOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:BddOptions",
|
||||||
"description": "Настройки шага запуска BDD сценариев",
|
"description" : "Настройки шага запуска BDD сценариев",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"vrunnerSteps": {
|
"vrunnerSteps" : {
|
||||||
"type": "array",
|
"type" : "array",
|
||||||
"description": "Шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.json\").\n По умолчанию содержит одну команду \"vanessa --settings ./tools/vrunner.json\".\n ",
|
"description" : "Шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.json\").\n По умолчанию содержит одну команду \"vanessa --settings ./tools/vrunner.json\".\n ",
|
||||||
"items": {
|
"items" : {
|
||||||
"type": "string"
|
"type" : "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sonarqube": {
|
"sonarqube" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SonarQubeOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SonarQubeOptions",
|
||||||
"description": "Настройки анализа SonarQube",
|
"description" : "Настройки анализа SonarQube",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"sonarQubeInstallation": {
|
"sonarQubeInstallation" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Имя настроенного SonarQube-сервера (SonarQube installations).\nЕсли настроен только один сервер, то может быть оставлено пустым."
|
"description" : "Имя настроенного SonarQube-сервера (SonarQube installations).\nЕсли настроен только один сервер, то может быть оставлено пустым."
|
||||||
},
|
},
|
||||||
"useSonarScannerFromPath": {
|
"useSonarScannerFromPath" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Использовать sonar-scanner, доступный в PATH"
|
"description" : "Использовать sonar-scanner, доступный в PATH"
|
||||||
},
|
},
|
||||||
"sonarScannerToolName": {
|
"sonarScannerToolName" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Имя настроенной утилиты sonar-scanner.\nПрименяется, если useSonarScannerFromPath установлено в false."
|
"description" : "Имя настроенной утилиты sonar-scanner.\nПрименяется, если useSonarScannerFromPath установлено в false."
|
||||||
},
|
},
|
||||||
"infoBaseUpdateModuleName": {
|
"infoBaseUpdateModuleName" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.\n Версия должна задаваться в виде присвоения `Описание.Версия = \"ваш номер версии\";`\n "
|
"description" : "Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.\n Версия должна задаваться в виде присвоения `Описание.Версия = \"ваш номер версии\";`\n "
|
||||||
},
|
},
|
||||||
"branchAnalysisConfiguration": {
|
"branchAnalysisConfiguration" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Вариант конфигурации branch plugin.\n Поддерживаемые варианты:\n * auto - применяется автоконфигурация sonar-scanner силами branchplugin. Так же может применяться для отключения конфигурирования, если branch plugin отсутствует;\n * fromEnv - применяется ручная конфигурация sonar-scanner на основе переменных среды.\n Значение по умолчанию: fromEnv.",
|
"description" : "Вариант конфигурации branch plugin.\n Поддерживаемые варианты:\n * auto - применяется автоконфигурация sonar-scanner силами branchplugin. Так же может применяться для отключения конфигурирования, если branch plugin отсутствует;\n * fromEnv - применяется ручная конфигурация sonar-scanner на основе переменных среды.\n Значение по умолчанию: fromEnv.",
|
||||||
"enum": ["auto", "fromEnv"]
|
"enum" : [ "auto", "fromEnv" ]
|
||||||
},
|
},
|
||||||
"waitForQualityGate": {
|
"waitForQualityGate" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.\n Таймаут ожидания состояния равен таймауту шага.\n "
|
"description" : "Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.\n Таймаут ожидания состояния равен таймауту шага.\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"syntaxCheck": {
|
"syntaxCheck" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SyntaxCheckOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SyntaxCheckOptions",
|
||||||
"description": "Настройки синтаксического контроля",
|
"description" : "Настройки синтаксического контроля",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"pathToJUnitReport": {
|
"pathToJUnitReport" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к файлу отчета jUnit\n По умолчанию содержит значение \"./build/out/jUnit/syntax.xml\"\n "
|
"description" : "Путь к файлу отчета jUnit\n По умолчанию содержит значение \"./build/out/jUnit/syntax.xml\"\n "
|
||||||
},
|
},
|
||||||
"groupErrorsByMetadata": {
|
"groupErrorsByMetadata" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Группировать выявленные ошибки по объектам метаданных.\n По умолчанию включено.\n "
|
"description" : "Группировать выявленные ошибки по объектам метаданных.\n По умолчанию включено.\n "
|
||||||
},
|
},
|
||||||
"checkModes": {
|
"checkModes" : {
|
||||||
"type": "array",
|
"type" : "array",
|
||||||
"description": "Режимы проверки конфигурации",
|
"description" : "Режимы проверки конфигурации",
|
||||||
"items": {
|
"items" : {
|
||||||
"type": "string"
|
"type" : "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exceptionFile": {
|
"exceptionFile" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к файлу с указанием пропускаемых ошибок.\n Формат файла: в каждой строке файла указан текст пропускаемого исключения или его часть\n Кодировка: UTF-8\n "
|
"description" : "Путь к файлу с указанием пропускаемых ошибок.\n Формат файла: в каждой строке файла указан текст пропускаемого исключения или его часть\n Кодировка: UTF-8\n "
|
||||||
},
|
},
|
||||||
"vrunnerSettings": {
|
"vrunnerSettings" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
|
"description" : "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"smoke": {
|
"smoke" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SmokeTestOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SmokeTestOptions",
|
||||||
"description": "Настройки дымового тестирования",
|
"description" : "Настройки дымового тестирования",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"vrunnerSettings": {
|
"vrunnerSettings" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
|
"description" : "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
|
||||||
},
|
},
|
||||||
"xddConfigPath": {
|
"xddConfigPath" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к конфигурационному файлу для xddTestRunner.\n По умолчанию содержит значение \"./tools/xUnitParams.json\".\n "
|
"description" : "Путь к конфигурационному файлу для xddTestRunner.\n По умолчанию содержит значение \"./tools/xUnitParams.json\".\n "
|
||||||
},
|
},
|
||||||
"publishToAllureReport": {
|
"publishToAllureReport" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Выполнять публикацию результатов в отчет Allure.\n По умолчанию выключено.\n "
|
"description" : "Выполнять публикацию результатов в отчет Allure.\n По умолчанию выключено.\n "
|
||||||
},
|
},
|
||||||
"publishToJUnitReport": {
|
"publishToJUnitReport" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Выполнять публикацию результатов в отчет JUnit.\n По умолчанию включено.\n "
|
"description" : "Выполнять публикацию результатов в отчет JUnit.\n По умолчанию включено.\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yaxunit": {
|
"yaxunit" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:YaxunitOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:YaxunitOptions",
|
||||||
"description" : "Настройки YAXUnit",
|
"description" : "Настройки YAXUnit",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"vrunnerSettings": {
|
"vrunnerSettings" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
|
"description" : "Путь к конфигурационному файлу vanessa-runner.\n По умолчанию содержит значение \"./tools/vrunner.json\".\n "
|
||||||
},
|
},
|
||||||
"configPath": {
|
"configPath" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Путь к конфигурационному файлу YAXUnit.\n По умолчанию содержит значение \"./tools/yaxunit.json\".\n "
|
"description" : "Путь к конфигурационному файлу YAXUnit.\n По умолчанию содержит значение \"./tools/yaxunit.json\".\n "
|
||||||
},
|
},
|
||||||
"publishToAllureReport": {
|
"publishToAllureReport" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Выполнять публикацию результатов в отчет Allure.\n По умолчанию выключено.\n "
|
"description" : "Выполнять публикацию результатов в отчет Allure.\n По умолчанию выключено.\n "
|
||||||
},
|
},
|
||||||
"publishToJUnitReport": {
|
"publishToJUnitReport" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Выполнять публикацию результатов в отчет JUnit.\n По умолчанию включено.\n "
|
"description" : "Выполнять публикацию результатов в отчет JUnit.\n По умолчанию включено.\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resultsTransform": {
|
"resultsTransform" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:ResultsTransformOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:ResultsTransformOptions",
|
||||||
"description": "Настройки трансформации результатов анализа",
|
"description" : "Настройки трансформации результатов анализа",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"removeSupport": {
|
"removeSupport" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Фильтровать замечания по уровню поддержки модуля. По умолчанию включено."
|
"description" : "Фильтровать замечания по уровню поддержки модуля. По умолчанию включено."
|
||||||
},
|
},
|
||||||
"supportLevel": {
|
"supportLevel" : {
|
||||||
"type": "integer",
|
"type" : "integer",
|
||||||
"description": "Настройка фильтрации замечаний по уровню поддержки.\n 0 - удалить файлы на замке;\n 1 - удалить файлы на замке и на поддержке;\n 2 - удалить файлы на замке, на поддержке и снятые с поддержки.\n "
|
"description" : "Настройка фильтрации замечаний по уровню поддержки.\n 0 - удалить файлы на замке;\n 1 - удалить файлы на замке и на поддержке;\n 2 - удалить файлы на замке, на поддержке и снятые с поддержки.\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:NotificationsOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:NotificationsOptions",
|
||||||
"description": "Настройки рассылки результатов сборки",
|
"description" : "Настройки рассылки результатов сборки",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"email": {
|
"email" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:EmailNotificationOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:EmailNotificationOptions",
|
||||||
"description": "Настройки рассылки результатов сборки через email",
|
"description" : "Настройки рассылки результатов сборки через email",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"onAlways": {
|
"onAlways" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять всегда"
|
"description" : "Отправлять всегда"
|
||||||
},
|
},
|
||||||
"onSuccess": {
|
"onSuccess" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять при успешной сборке"
|
"description" : "Отправлять при успешной сборке"
|
||||||
},
|
},
|
||||||
"onFailure": {
|
"onFailure" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять при падении сборки"
|
"description" : "Отправлять при падении сборки"
|
||||||
},
|
},
|
||||||
"onUnstable": {
|
"onUnstable" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять при нестабильной сборке"
|
"description" : "Отправлять при нестабильной сборке"
|
||||||
},
|
},
|
||||||
"alwaysOptions": {
|
"alwaysOptions" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"attachLog": {
|
"attachLog" : {
|
||||||
"type": "boolean"
|
"type" : "boolean"
|
||||||
},
|
},
|
||||||
"directRecipients": {
|
"directRecipients" : {
|
||||||
"type": "array",
|
"type" : "array",
|
||||||
"items": {
|
"items" : {
|
||||||
"type": "string"
|
"type" : "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"recipientProviders": {
|
"recipientProviders" : {
|
||||||
"type": "array",
|
"type" : "array",
|
||||||
"items": {
|
"items" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"enum": [
|
"enum" : [ "developers", "requestor", "brokenBuildSuspects", "brokenTestsSuspects" ]
|
||||||
"developers",
|
|
||||||
"requestor",
|
|
||||||
"brokenBuildSuspects",
|
|
||||||
"brokenTestsSuspects"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"successOptions": {
|
"successOptions" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"$ref": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration"
|
"$ref" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration"
|
||||||
},
|
},
|
||||||
"failureOptions": {
|
"failureOptions" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"$ref": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration"
|
"$ref" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration"
|
||||||
},
|
},
|
||||||
"unstableOptions": {
|
"unstableOptions" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"$ref": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration"
|
"$ref" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:email:EmailExtConfiguration"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"telegram": {
|
"telegram" : {
|
||||||
"type": "object",
|
"type" : "object",
|
||||||
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:TelegramNotificationOptions",
|
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:notification:TelegramNotificationOptions",
|
||||||
"description": "Настройки рассылки результатов сборки через telegram",
|
"description" : "Настройки рассылки результатов сборки через telegram",
|
||||||
"properties": {
|
"properties" : {
|
||||||
"onAlways": {
|
"onAlways" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять всегда"
|
"description" : "Отправлять всегда"
|
||||||
},
|
},
|
||||||
"onSuccess": {
|
"onSuccess" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять при успешной сборке"
|
"description" : "Отправлять при успешной сборке"
|
||||||
},
|
},
|
||||||
"onFailure": {
|
"onFailure" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять при падении сборки"
|
"description" : "Отправлять при падении сборки"
|
||||||
},
|
},
|
||||||
"onUnstable": {
|
"onUnstable" : {
|
||||||
"type": "boolean",
|
"type" : "boolean",
|
||||||
"description": "Отправлять при нестабильной сборке"
|
"description" : "Отправлять при нестабильной сборке"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"logosConfig": {
|
"logosConfig" : {
|
||||||
"type": "string",
|
"type" : "string",
|
||||||
"description": "Конфигурация библиотеки logos. Применяется перед запуском каждой стадии сборки"
|
"description" : "Конфигурация библиотеки logos. Применяется перед запуском каждой стадии сборки"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -64,7 +64,6 @@ class InitInfoBaseOptions implements Serializable {
|
|||||||
", runMigration=" + runMigration +
|
", runMigration=" + runMigration +
|
||||||
", additionalInitializationSteps=" + additionalInitializationSteps +
|
", additionalInitializationSteps=" + additionalInitializationSteps +
|
||||||
", extensions=" + extensions +
|
", extensions=" + extensions +
|
||||||
", vrunnerSettings=" + vrunnerSettings +
|
|
||||||
'}'
|
'}'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -14,27 +14,31 @@ class LoadExtensions implements Serializable {
|
|||||||
private final JobConfiguration config
|
private final JobConfiguration config
|
||||||
private final String stageName
|
private final String stageName
|
||||||
|
|
||||||
|
private Extension[] extensionsFiltered
|
||||||
|
|
||||||
LoadExtensions(JobConfiguration config, String stageName = "") {
|
LoadExtensions(JobConfiguration config, String stageName = "") {
|
||||||
this.config = config
|
this.config = config
|
||||||
this.stageName = stageName
|
this.stageName = stageName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Extension[] getExtensionsFiltered() {
|
||||||
|
return extensionsFiltered
|
||||||
|
}
|
||||||
|
|
||||||
def run() {
|
def run() {
|
||||||
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
|
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
|
||||||
|
|
||||||
Logger.printLocation()
|
Logger.printLocation()
|
||||||
|
|
||||||
|
|
||||||
Extension[] filteredExtensions
|
|
||||||
def extensions = this.config.initInfoBaseOptions.extensions
|
def extensions = this.config.initInfoBaseOptions.extensions
|
||||||
|
|
||||||
if (this.stageName) {
|
if (this.stageName) {
|
||||||
filteredExtensions = extensions.findAll { extension ->
|
this.extensionsFiltered = extensions.findAll { extension ->
|
||||||
extension.stages.contains(this.stageName)
|
extension.stages.contains(this.stageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
filteredExtensions = extensions.findAll { extension -> extension.stages.empty || extension.stages.contains("initInfoBase") }
|
this.extensionsFiltered = extensions.findAll { extension -> extension.stages.empty || extension.stages.contains("initInfoBase") }
|
||||||
}
|
}
|
||||||
|
|
||||||
def env = steps.env()
|
def env = steps.env()
|
||||||
@@ -42,7 +46,7 @@ class LoadExtensions implements Serializable {
|
|||||||
|
|
||||||
String vrunnerPath = VRunner.getVRunnerPath()
|
String vrunnerPath = VRunner.getVRunnerPath()
|
||||||
|
|
||||||
filteredExtensions.each {
|
this.extensionsFiltered.each {
|
||||||
Logger.println("Установим расширение ${it.name}")
|
Logger.println("Установим расширение ${it.name}")
|
||||||
loadExtension(it, vrunnerPath, steps, cfeDir)
|
loadExtension(it, vrunnerPath, steps, cfeDir)
|
||||||
}
|
}
|
||||||
@@ -62,7 +66,7 @@ class LoadExtensions implements Serializable {
|
|||||||
loadCommand += executeParameter
|
loadCommand += executeParameter
|
||||||
loadCommand += ' --ibconnection "/F./build/ib"'
|
loadCommand += ' --ibconnection "/F./build/ib"'
|
||||||
|
|
||||||
String vrunnerSettings = getVrunnerSettings(this.config, this.stageName)
|
String vrunnerSettings = getVrunnerSettingsForStage(this.config, this.stageName)
|
||||||
if (vrunnerSettings && steps.fileExists(vrunnerSettings)) {
|
if (vrunnerSettings && steps.fileExists(vrunnerSettings)) {
|
||||||
loadCommand += " --settings $vrunnerSettings"
|
loadCommand += " --settings $vrunnerSettings"
|
||||||
}
|
}
|
||||||
@@ -73,7 +77,7 @@ class LoadExtensions implements Serializable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getVrunnerSettings(JobConfiguration config, String stageName) {
|
private static String getVrunnerSettingsForStage(JobConfiguration config, String stageName) {
|
||||||
|
|
||||||
if (!stageName) {
|
if (!stageName) {
|
||||||
return ""
|
return ""
|
||||||
|
@@ -47,7 +47,7 @@ class jobConfigurationTest {
|
|||||||
'jobConfiguration.json',
|
'jobConfiguration.json',
|
||||||
StandardCharsets.UTF_8,
|
StandardCharsets.UTF_8,
|
||||||
this.getClass().getClassLoader()
|
this.getClass().getClassLoader()
|
||||||
);
|
)
|
||||||
|
|
||||||
def writeFile = """
|
def writeFile = """
|
||||||
writeFile text: \"\"\"$file\"\"\", file: 'jobConfiguration.json'
|
writeFile text: \"\"\"$file\"\"\", file: 'jobConfiguration.json'
|
||||||
@@ -74,6 +74,5 @@ class jobConfigurationTest {
|
|||||||
rule.assertLogContains("v8version='8.3.12.1500'", run)
|
rule.assertLogContains("v8version='8.3.12.1500'", run)
|
||||||
rule.assertLogContains("sonarScannerToolName='sonar-scanner'", run)
|
rule.assertLogContains("sonarScannerToolName='sonar-scanner'", run)
|
||||||
rule.assertLogContains("initMethod=FROM_SOURCE", run)
|
rule.assertLogContains("initMethod=FROM_SOURCE", run)
|
||||||
rule.assertLogContains("custom_units", run)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,19 +1,23 @@
|
|||||||
package ru.pulsar.jenkins.library.steps;
|
package ru.pulsar.jenkins.library.steps;
|
||||||
|
|
||||||
|
import hudson.FilePath;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import ru.pulsar.jenkins.library.IStepExecutor;
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
import ru.pulsar.jenkins.library.configuration.ConfigurationReader;
|
import ru.pulsar.jenkins.library.configuration.ConfigurationReader;
|
||||||
import ru.pulsar.jenkins.library.configuration.JobConfiguration;
|
import ru.pulsar.jenkins.library.configuration.JobConfiguration;
|
||||||
|
import ru.pulsar.jenkins.library.utils.FileUtils;
|
||||||
import ru.pulsar.jenkins.library.utils.TestUtils;
|
import ru.pulsar.jenkins.library.utils.TestUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
|
||||||
class LoadExtensionsTest {
|
class LoadExtensionsTest {
|
||||||
|
|
||||||
@@ -25,21 +29,25 @@ class LoadExtensionsTest {
|
|||||||
@Test
|
@Test
|
||||||
void runYaxunit() throws IOException {
|
void runYaxunit() throws IOException {
|
||||||
|
|
||||||
// given
|
try (MockedStatic<FileUtils> fu = Mockito.mockStatic(FileUtils.class)) {
|
||||||
String config = IOUtils.resourceToString(
|
fu.when(() -> FileUtils.getFilePath(anyString()))
|
||||||
"jobConfiguration.json",
|
.thenReturn(new FilePath(new File("/")));
|
||||||
StandardCharsets.UTF_8,
|
|
||||||
this.getClass().getClassLoader()
|
|
||||||
);
|
|
||||||
|
|
||||||
// when
|
// given
|
||||||
JobConfiguration jobConfiguration = ConfigurationReader.create(config);
|
// файл содержит 2 расширения для двух стейджей
|
||||||
|
String config = IOUtils.resourceToString(
|
||||||
|
"jobConfiguration.json",
|
||||||
|
StandardCharsets.UTF_8,
|
||||||
|
this.getClass().getClassLoader()
|
||||||
|
);
|
||||||
|
JobConfiguration jobConfiguration = ConfigurationReader.create(config);
|
||||||
|
LoadExtensions loadExtensions = new LoadExtensions(jobConfiguration, "yaxunit");
|
||||||
|
|
||||||
LoadExtensions loadExtensions = new LoadExtensions(jobConfiguration, "yaxunit");
|
// when
|
||||||
|
loadExtensions.run();
|
||||||
|
|
||||||
// when
|
// then
|
||||||
Object run = loadExtensions.run();
|
assertThat(loadExtensions.getExtensionsFiltered().length).isEqualTo(1);
|
||||||
|
}
|
||||||
// assertThat(log.toString).(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,32 @@
|
|||||||
|
package ru.pulsar.jenkins.library.utils;
|
||||||
|
|
||||||
|
import hudson.EnvVars;
|
||||||
|
import org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class EnvUtils implements EnvironmentAction {
|
||||||
|
|
||||||
|
public String NODE_NAME = "node";
|
||||||
|
public String WORKSPACE = "ws";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EnvVars getEnvironment() throws IOException, InterruptedException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getIconFileName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDisplayName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUrlName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@@ -28,6 +28,8 @@ public class TestUtils {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
when(steps.env()).thenAnswer(invocation -> new EnvUtils());
|
||||||
|
|
||||||
when(steps.readFile(anyString(), anyString())).thenAnswer(invocation -> {
|
when(steps.readFile(anyString(), anyString())).thenAnswer(invocation -> {
|
||||||
String file = invocation.getArgument(0);
|
String file = invocation.getArgument(0);
|
||||||
String encoding = invocation.getArgument(1);
|
String encoding = invocation.getArgument(1);
|
||||||
|
@@ -14,6 +14,20 @@
|
|||||||
"runMigration": false,
|
"runMigration": false,
|
||||||
"additionalInitializationSteps": [
|
"additionalInitializationSteps": [
|
||||||
"vanessa --settings ./tools/vrunner.first.json"
|
"vanessa --settings ./tools/vrunner.first.json"
|
||||||
|
],
|
||||||
|
"extensions": [
|
||||||
|
{
|
||||||
|
"name": "YAXUnit",
|
||||||
|
"initMethod": "fromSource",
|
||||||
|
"path": "./src/cfe/YAXUnit",
|
||||||
|
"stages": ["yaxunit"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BDD",
|
||||||
|
"initMethod": "fromSource",
|
||||||
|
"path": "./src/cfe/bdd",
|
||||||
|
"stages": ["bdd"]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"sonarqube": {
|
"sonarqube": {
|
||||||
|
Reference in New Issue
Block a user