From d73b9a97c940c5ee6a913ca1a5ad1ccf3f309d63 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Wed, 6 Mar 2024 18:29:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=88=D0=B0=D0=B3=D0=B0=20ringCommand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jenkins/library/IStepExecutor.groovy | 2 ++ .../jenkins/library/StepExecutor.groovy | 5 ++++ .../DesignerToEdtFormatTransformation.groovy | 7 ++--- .../jenkins/library/steps/RingCommand.groovy | 22 +++++++++++++++ .../pulsar/jenkins/library/steps/CmdTest.java | 27 ++++++++++--------- vars/cmd.groovy | 2 +- vars/ringCommand.groovy | 9 +++++++ 7 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 src/ru/pulsar/jenkins/library/steps/RingCommand.groovy create mode 100644 vars/ringCommand.groovy diff --git a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy index b71d0ff..e9f9cb5 100644 --- a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy @@ -36,6 +36,8 @@ interface IStepExecutor { def cmd(String script) + def ringCommand(String script) + void tool(String toolName) def withCredentials(List bindings, Closure body) diff --git a/src/ru/pulsar/jenkins/library/StepExecutor.groovy b/src/ru/pulsar/jenkins/library/StepExecutor.groovy index e02585f..e8ffe04 100644 --- a/src/ru/pulsar/jenkins/library/StepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/StepExecutor.groovy @@ -62,6 +62,11 @@ class StepExecutor implements IStepExecutor { return steps.cmd(script, returnStatus, returnStdout) } + @Override + def ringCommand(String script) { + return steps.ringCommand(script) + } + @Override void tool(String toolName) { steps.tool toolName diff --git a/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy b/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy index d06ca93..e6f6256 100644 --- a/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy +++ b/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy @@ -34,7 +34,7 @@ class DesignerToEdtFormatTransformation implements Serializable { def env = steps.env(); - String workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$WORKSPACE").getRemote() + def workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$WORKSPACE") def srcDir = config.srcDir def configurationRoot = FileUtils.getFilePath("$env.WORKSPACE/$srcDir") def edtVersionForRing = EDT.ringModule(config) @@ -47,10 +47,7 @@ class DesignerToEdtFormatTransformation implements Serializable { def ringOpts = [Constants.DEFAULT_RING_OPTS] steps.withEnv(ringOpts) { - String ringMessage = steps.cmd(ringCommand, false, true) - if (ringMessage.contains("error")) { - steps.error(ringMessage) - } + steps.ringCommand(ringCommand) } steps.zip(WORKSPACE, WORKSPACE_ZIP) diff --git a/src/ru/pulsar/jenkins/library/steps/RingCommand.groovy b/src/ru/pulsar/jenkins/library/steps/RingCommand.groovy new file mode 100644 index 0000000..d58c777 --- /dev/null +++ b/src/ru/pulsar/jenkins/library/steps/RingCommand.groovy @@ -0,0 +1,22 @@ +package ru.pulsar.jenkins.library.steps + +import ru.pulsar.jenkins.library.IStepExecutor +import ru.pulsar.jenkins.library.ioc.ContextRegistry + +class RingCommand implements Serializable { + + private String script; + + RingCommand(String script) { + this.script = script + }; + + def run() { + IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() + + String ringMessage = steps.cmd(script, false, true) + if (ringMessage.contains("error")) { + steps.error(ringMessage) + } + } +} diff --git a/test/unit/groovy/ru/pulsar/jenkins/library/steps/CmdTest.java b/test/unit/groovy/ru/pulsar/jenkins/library/steps/CmdTest.java index 4d60548..a551849 100644 --- a/test/unit/groovy/ru/pulsar/jenkins/library/steps/CmdTest.java +++ b/test/unit/groovy/ru/pulsar/jenkins/library/steps/CmdTest.java @@ -29,14 +29,17 @@ class CmdTest { final String script = "echo hello"; Cmd cmd = new Cmd(script); + when(steps.bat(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(0); + when(steps.sh(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(0); + // when - int run = cmd.run(); + Object run = cmd.run(); // then verify(steps).isUnix(); assertThat(steps).satisfiesAnyOf( - steps -> verify(steps).bat(contains(script), eq(false), anyString()), - steps -> verify(steps).sh(contains(script), eq(false), anyString()) + steps -> verify(steps).bat(contains(script), eq(false), eq(false), anyString()), + steps -> verify(steps).sh(contains(script), eq(false), eq(false), anyString()) ); assertThat(run).isEqualTo(0); @@ -49,8 +52,8 @@ class CmdTest { Cmd cmd = new Cmd(script); String thrownText = "failed"; - when(steps.bat(anyString(), anyBoolean(), anyString())).thenThrow(new Error(thrownText)); - when(steps.sh(anyString(), anyBoolean(), anyString())).thenThrow(new Error(thrownText)); + when(steps.bat(anyString(), anyBoolean(), anyBoolean(), anyString())).thenThrow(new Error(thrownText)); + when(steps.sh(anyString(), anyBoolean(), anyBoolean(), anyString())).thenThrow(new Error(thrownText)); // when Throwable thrown = catchThrowable(cmd::run); @@ -59,8 +62,8 @@ class CmdTest { // then verify(steps).isUnix(); assertThat(steps).satisfiesAnyOf( - steps -> verify(steps).bat(contains(script), eq(false), anyString()), - steps -> verify(steps).sh(contains(script), eq(false), anyString()) + steps -> verify(steps).bat(contains(script), eq(false), eq(false), anyString()), + steps -> verify(steps).sh(contains(script), eq(false), eq(false), anyString()) ); } @@ -70,17 +73,17 @@ class CmdTest { final String script = "false"; Cmd cmd = new Cmd(script, true); - when(steps.bat(anyString(), anyBoolean(), anyString())).thenReturn(1); - when(steps.sh(anyString(), anyBoolean(), anyString())).thenReturn(1); + when(steps.bat(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(1); + when(steps.sh(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(1); // when - int run = cmd.run(); + Object run = cmd.run(); // then verify(steps).isUnix(); assertThat(steps).satisfiesAnyOf( - steps -> verify(steps).bat(contains(script), eq(true), anyString()), - steps -> verify(steps).sh(contains(script), eq(true), anyString()) + steps -> verify(steps).bat(contains(script), eq(true), eq(false), anyString()), + steps -> verify(steps).sh(contains(script), eq(true), eq(false), anyString()) ); assertThat(run).isEqualTo(1); diff --git a/vars/cmd.groovy b/vars/cmd.groovy index b882092..810dcb4 100644 --- a/vars/cmd.groovy +++ b/vars/cmd.groovy @@ -1,7 +1,7 @@ import ru.pulsar.jenkins.library.steps.Cmd import ru.pulsar.jenkins.library.ioc.ContextRegistry -int call(String script, boolean returnStatus = false, boolean returnStdout = false ) { +def call(String script, boolean returnStatus = false, boolean returnStdout = false ) { ContextRegistry.registerDefaultContext(this) Cmd cmd = new Cmd(script, returnStatus, returnStdout) diff --git a/vars/ringCommand.groovy b/vars/ringCommand.groovy new file mode 100644 index 0000000..bc646c0 --- /dev/null +++ b/vars/ringCommand.groovy @@ -0,0 +1,9 @@ +import ru.pulsar.jenkins.library.ioc.ContextRegistry +import ru.pulsar.jenkins.library.steps.RingCommand + +def call(String script ) { + ContextRegistry.registerDefaultContext(this) + + RingCommand ringCommand = new RingCommand(script) + return ringCommand.run() +} \ No newline at end of file