From 152c12d9f3af8cd3006aad311868fbeeb0983931 Mon Sep 17 00:00:00 2001 From: Dima Date: Fri, 17 Jan 2025 10:56:37 +0300 Subject: [PATCH] fix load extensions, fix README --- README.md | 4 ++-- .../library/steps/LoadExtensions.groovy | 22 ++++++++++++------- .../library/steps/LoadExtensionsTest.java | 8 +++---- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index f9a7e4d3..450818e3 100644 --- a/README.md +++ b/README.md @@ -259,8 +259,8 @@ pipeline1C() * [Coverage41C](https://github.com/1c-syntax/Coverage41C), его необходимо установить на агент отдельно * EDT нужной версии или отдельные jar-файлы из его каталога установки, подробнее см. в [Coverage41C/README.md](https://github.com/1c-syntax/Coverage41C) * Если на агенте Coverage41C не включен в PATH, необходимо указать полный путь к нему в параметре `coverage41CPath` -* Сбор замеров покрытия активируется для каждого стейджа отдельно с помощью установки параметра `"coverage": true` -* поддерживаются `bdd` и `yaxunit`, для использования замеров на стейже `smoke` ожидается исправление vanessa-add в этом [PR](https://github.com/vanessa-opensource/add/pull/1153) +* Сбор замеров покрытия активируется для каждого этапа отдельно с помощью установки параметра `"coverage": true` +* поддерживаются `bdd` и `yaxunit`, для использования замеров на этапе `smoke` ожидается исправление vanessa-add в этом [PR](https://github.com/vanessa-opensource/add/pull/1153) * Чтобы замеры в `bdd`, `yaxunit`, `smoke` могли выполняться параллельно **на одном агенте**, необходимо указывать для них разные порты отладки в параметре `dbgsPort`. * Не забудьте настроить подключение клиентов тестирования к серверу отладки. diff --git a/src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy b/src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy index 1f7bef3d..a3fc41ce 100644 --- a/src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy +++ b/src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy @@ -17,7 +17,7 @@ class LoadExtensions implements Serializable { private Extension[] extensionsFiltered - LoadExtensions(JobConfiguration config, String stageName = "") { + LoadExtensions(JobConfiguration config, String stageName) { this.config = config this.stageName = stageName } @@ -33,13 +33,19 @@ class LoadExtensions implements Serializable { def extensions = this.config.initInfoBaseOptions.extensions - if (this.stageName) { - this.extensionsFiltered = extensions.findAll { extension -> - extension.stages.contains(this.stageName) - } - } - else { - this.extensionsFiltered = extensions.findAll { extension -> extension.stages.length == 0 || extension.stages.contains("initInfoBase") } + // NB: расширения, подключаемые на этапе initInfoBase, остаются подключенными на всех остальных этапах + if (this.stageName == "initInfoBase") { + // подключаются все расширения, у которых явно указано подключение на текущем этапе + // и те расширения, в которых этапы подключения не указаны вообще + this.extensionsFiltered = extensions.findAll({ extension -> + extension.stages.contains(this.stageName) || extension.stages.length == 0 + }) + } else { + // на остальных этапах подключаются расширения, которые не были подключены на этапе initInfoBase + // и у которых явно указано подключение на текущем этапе + this.extensionsFiltered = extensions.findAll({ extension -> + !extension.stages.contains("initInfoBase") && extension.stages.contains(this.stageName) + }) } def env = steps.env() diff --git a/test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java b/test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java index d4eb1271..ff92ec88 100644 --- a/test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java +++ b/test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java @@ -35,7 +35,7 @@ void runYaxunit() throws IOException { .thenReturn(new FilePath(new File("/"))); // given - // файл содержит 4 расширения для разных стейджей + // файл содержит 4 расширения для разных этапов String config = IOUtils.resourceToString( "jobConfiguration.json", StandardCharsets.UTF_8, @@ -44,11 +44,11 @@ void runYaxunit() throws IOException { JobConfiguration jobConfiguration = ConfigurationReader.create(config); // when - LoadExtensions loadExtensions = new LoadExtensions(jobConfiguration); - loadExtensions.run(); + LoadExtensions loadExtensionsInit = new LoadExtensions(jobConfiguration, "initInfoBase"); + loadExtensionsInit.run(); // then - InitInfoBaseOptions.Extension[] extensions = loadExtensions.getExtensionsFiltered(); + InitInfoBaseOptions.Extension[] extensions = loadExtensionsInit.getExtensionsFiltered(); assertThat(extensions.length).isEqualTo(2); assertThat(extensions[0].getName()).isEqualTo("mods"); assertThat(extensions[1].getName()).isEqualTo("mods2");