1
0

Исправление замечаний к PR в upstream (#17)

This commit is contained in:
Dima Ovcharenko
2023-07-17 13:41:57 +03:00
committed by Dima
parent a06a5e4515
commit 8dc051b3ae
15 changed files with 70 additions and 44 deletions

View File

@@ -133,8 +133,8 @@ pipeline1C()
* BDD:
* Если в конфигурационном файле проекта не заполнена настройка `bdd` -> `vrunnerSteps`, то автоматически выполняется запуск `vrunner vanessa --settings tools/vrunner.json`.
* YAXUnit:
* Если ваши тесты находятся в расширении YAXUnit, то необходимо указать к путь к этому расширению в формате cfe в `yaxunit` -> `cfe`
* Если ваши тесты находятся в отдельных расширениях, то необходимо (1) скопировать конфиг из текущей библиотеки (`./resources/yaxunit.json`) в свой репозиторий в `./tools/yaxunit.json` и перечислить в нем имена своих расширений. Имена образуются по правилу: `./src/cfe/unit_tests` -> `unit_tests`. И (2) - перечислить эти же имена в `jobConfiguration.json` -> `yaxunit` -> `extensionNames`. Пока что поддерживаются только расширения, выгруженные в формате конфигуратора.
* Необходимо перечислить расширения в `jobConfiguration.json` -> `yaxunit` -> `extensions`. Путь к расширению можно указать либо в виде ссылки на файл cfe, либо в виде пути к исходникам. Пока что поддерживаются только расширения, выгруженные в формате конфигуратора. При переопределении настроек по умолчанию расширение YAXUnit тоже должно быть в этом списке.
* Если ваши тесты находятся в отдельных расширениях, то необходимо скопировать конфиг из текущей библиотеки (`./resources/yaxunit.json`) в свой репозиторий в `./tools/yaxunit.json` и перечислить в нем имена расширений.
* Дымовые тесты:
* Если в репозитории существует файл `tools/vrunner.json`, то запуск дымовых тестов будет выполняться с передачей файла в параметры запуска `vrunner xunit --settings tools/vrunner.json` (`smoke` -> `vrunnerSettings`).
* Если установка локальных зависимостей `opm` установит пакет `add`, то будет использоваться обработка `xddTestRunner.epf` из локальных зависимостей.

View File

@@ -84,8 +84,12 @@
},
"yaxunit": {
"vrunnerSettings": "./tools/vrunner.json",
"cfe": "https://github.com/bia-technologies/yaxunit/releases/download/23.05/YAXUNIT-23.05.cfe",
"extensionNames": ["YAXUNIT"],
"extensions": [
{
"name":"YAXUNIT",
"src": "https://github.com/bia-technologies/yaxunit/releases/download/23.05/YAXUNIT-23.05.cfe"
}
],
"configPath": "./tools/yaxunit.json",
"publishToAllureReport": false,
"publishToJUnitReport": true

View File

@@ -69,7 +69,7 @@
},
"yaxunit": {
"type": "boolean",
"description": "Юнит тесты"
"description" : "Запуск YAXUnit тестов включен"
},
"initSteps": {
"type": "boolean",
@@ -144,7 +144,7 @@
},
"yaxunit": {
"type": "integer",
"description": "Таймаут шага Юнит тестов, в минутах.\n По умолчанию содержит значение 240.\n "
"description" : "Таймаут шага YAXUnit тестов, в минутах.\n По умолчанию содержит значение 240.\n "
},
"sonarqube": {
"type": "integer",
@@ -301,7 +301,7 @@
"yaxunit": {
"type": "object",
"id": "urn:jsonschema:ru:pulsar:jenkins:library:configuration:YaxunitOptions",
"description": "Настройки юнит тестирования",
"description" : "Настройки YAXUnit",
"properties": {
"vrunnerSettings": {
"type": "string",

View File

@@ -26,6 +26,8 @@ interface IStepExecutor {
String readFile(String file, String encoding)
void writeFile(String file, String text, String encoding)
boolean fileExists(String file)
void echo(message)

View File

@@ -42,6 +42,11 @@ class StepExecutor implements IStepExecutor {
steps.readFile encoding: encoding, file: file
}
@Override
void writeFile(String file, String text, String encoding = 'UTF-8') {
steps.writeFile encoding: encoding, file: file, text: text
}
@Override
boolean fileExists(String file) {
steps.fileExists file

View File

@@ -66,6 +66,7 @@ class ConfigurationReader implements Serializable {
"sonarQubeOptions",
"smokeTestOptions",
"yaxunitOptions",
"extensions",
"syntaxCheckOptions",
"resultsTransformOptions",
"notificationsOptions",
@@ -150,10 +151,10 @@ class ConfigurationReader implements Serializable {
@NonCPS
private static void mergeYaxunitOptions(YaxunitOptions baseObject, YaxunitOptions objectToMerge) {
if (objectToMerge == null || objectToMerge.extensionNames == null) {
if (objectToMerge == null || objectToMerge.extensions == null) {
return
}
baseObject.extensionNames = objectToMerge.extensionNames.clone()
baseObject.extensions = objectToMerge.extensions.clone()
}
@NonCPS

View File

@@ -0,0 +1,17 @@
package ru.pulsar.jenkins.library.configuration
import com.cloudbees.groovy.cps.NonCPS
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties(ignoreUnknown = true)
class Extension implements Serializable {
String name
String src
@Override
@NonCPS
String toString() {
return name
}
}

View File

@@ -56,7 +56,7 @@ class JobConfiguration implements Serializable {
SmokeTestOptions smokeTestOptions;
@JsonProperty("yaxunit")
@JsonPropertyDescription("Настройки юнит тестирования")
@JsonPropertyDescription("Настройки YAXUnit")
YaxunitOptions yaxunitOptions;
@JsonProperty("resultsTransform")

View File

@@ -18,7 +18,7 @@ class StageFlags implements Serializable {
@JsonPropertyDescription("Дымовые тесты включены")
Boolean smoke
@JsonPropertyDescription("Юнит тесты")
@JsonPropertyDescription("Запуск YAXUnit тестов включен")
Boolean yaxunit
@JsonPropertyDescription("Предварительные шаги инициализации включены")

View File

@@ -66,7 +66,7 @@ class TimeoutOptions implements Serializable {
''')
Integer smoke
@JsonPropertyDescription('''Таймаут шага Юнит тестов, в минутах.
@JsonPropertyDescription('''Таймаут шага YAXUnit тестов, в минутах.
По умолчанию содержит значение 240.
''')
Integer yaxunit

View File

@@ -2,6 +2,7 @@ package ru.pulsar.jenkins.library.configuration
import com.cloudbees.groovy.cps.NonCPS
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.annotation.JsonPropertyDescription
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -12,15 +13,14 @@ class YaxunitOptions implements Serializable {
""")
String vrunnerSettings = "./tools/vrunner.json"
@JsonPropertyDescription("""Ссылка на скачивание YAXUnit.
По умолчанию содержит ссылку на официальный релиз версии 23.05.
@JsonProperty("extensions")
@JsonPropertyDescription("""Расширения с тестами.
Массив объектов с полями name и src, где
name - имя расширения
src - путь к расширению (к cfe или к исходникам)
По умолчанию содержит один элемент - YAXUNIT версии 23.05.
""")
String cfe = "https://github.com/bia-technologies/yaxunit/releases/download/23.05/YAXUNIT-23.05.cfe"
@JsonPropertyDescription("""Имена расширений с тестами.
По умолчанию содержит один элемент - YAXUNIT.
""")
String[] extensionNames = ['YAXUNIT']
Extension[] extensions
@JsonPropertyDescription("""Путь к конфигурационному файлу YAXUnit.
По умолчанию содержит значение "./tools/yaxunit.json".
@@ -42,8 +42,7 @@ class YaxunitOptions implements Serializable {
String toString() {
return "YaxunitTestOptions{" +
"vrunnerSettings='" + vrunnerSettings + '\'' +
", cfe='" + cfe +
", extensionNames='" + extensionNames.toString() +
", extensions='" + extensions +
", configPath='" + configPath +
'}'
}

View File

@@ -2,6 +2,7 @@ package ru.pulsar.jenkins.library.steps
import hudson.FilePath
import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.Extension
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.FileUtils
@@ -12,8 +13,6 @@ class Yaxunit implements Serializable {
private final JobConfiguration config
private final String yaxunitPath = 'build/out/yaxunit.cfe'
private final String DEFAULT_YAXUNIT_CONFIGURATION_RESOURCE = 'yaxunit.json'
public static final String YAXUNIT_ALLURE_STASH = 'yaxunit-allure'
@@ -43,32 +42,29 @@ class Yaxunit implements Serializable {
String vrunnerPath = VRunner.getVRunnerPath()
String ibConnection = ' --ibconnection "/F./build/ib"'
// Скачиваем YAXUnit
String pathToYaxunit = "$env.WORKSPACE/$yaxunitPath"
FilePath localPathToYaxunit = FileUtils.getFilePath(pathToYaxunit)
Logger.println("Скачивание YAXUnit в $localPathToYaxunit из ${options.cfe}")
localPathToYaxunit.copyFrom(new URL(options.cfe))
def extCommands = []
// Команда загрузки YAXUnit
def loadYaxunitCommand = VRunner.loadExtCommand("yaxunit")
extCommands << loadYaxunitCommand
// Команды сборки расширений с тестами и их загрузки в ИБ
for (String extension in options.extensionNames) {
if (extension.toUpperCase() == "YAXUNIT") {
continue
}
for (Extension extension in options.extensions) {
if (extension.src.endsWith('cfe')) {
// Скачиваем расширение
String pathToExtension = "$env.WORKSPACE/build/out/${extension.name}.cfe"
FilePath localPathToExtension = FileUtils.getFilePath(pathToExtension)
Logger.println("Скачивание расширения $extension.name в $localPathToExtension из ${extension.src}")
localPathToExtension.copyFrom(new URL(extension.src))
} else {
// Команда компиляции в cfe
def compileExtCommand = "$vrunnerPath compileexttocfe --src ./src/cfe/$extension --out build/out/${extension}.cfe"
def compileExtCommand = "$vrunnerPath compileexttocfe --src $extension.src --out build/out/${extension.name}.cfe"
extCommands << compileExtCommand
Logger.println("Команда сборки расширения: $compileExtCommand")
}
// Команда загрузки расширения в ИБ
def loadTestExtCommand = VRunner.loadExtCommand(extension)
def loadTestExtCommand = VRunner.loadExtCommand(extension.name)
extCommands << loadTestExtCommand
Logger.println("Команда загрузки расширения: $loadTestExtCommand")
@@ -76,12 +72,11 @@ class Yaxunit implements Serializable {
// Готовим конфиг для yaxunit
String yaxunitConfigPath = options.configPath
File yaxunitConfigFile = new File("$env.WORKSPACE/$yaxunitConfigPath")
if (!steps.fileExists(yaxunitConfigPath)) {
def defaultYaxunitConfig = steps.libraryResource DEFAULT_YAXUNIT_CONFIGURATION_RESOURCE
yaxunitConfigFile.write defaultYaxunitConfig
steps.writeFile(options.configPath, defaultYaxunitConfig, 'UTF-8')
}
def yaxunitConfig = yaxunitConfigFile.getCanonicalPath()
def yaxunitConfig = FileUtils.getFilePath(yaxunitConfigPath)
// Команда запуска тестов
String runTestsCommand = "$vrunnerPath run --command RunUnitTests=$yaxunitConfig $ibConnection"

View File

@@ -74,5 +74,6 @@ class jobConfigurationTest {
rule.assertLogContains("v8version='8.3.12.1500'", run)
rule.assertLogContains("sonarScannerToolName='sonar-scanner'", run)
rule.assertLogContains("initMethod=FROM_SOURCE", run)
rule.assertLogContains("custom_units", run)
}
}

View File

@@ -7,5 +7,7 @@
"initMethod": "fromSource",
"path": "/src/cfe/тест"
}]
},
"yaxunit": {
}
}

View File

@@ -244,7 +244,7 @@ void call() {
}
}
stage('Юнит тесты') {
stage('YAXUnit тесты') {
agent {
label agent1C
}