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