From 540b90fceb16363175ea906f8b037804020320bb Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Wed, 29 Apr 2020 17:04:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D1=88=D0=B0=D0=B3=D0=B0=20cmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jenkins/library/IStepExecutor.groovy | 4 ++-- .../jenkins/library/StepExecutor.groovy | 4 ++-- test/integration/groovy/cmdTest.groovy | 24 +++++++++++++++++++ vars/cmd.groovy | 2 +- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy index 16981f9..e6a4322 100644 --- a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy @@ -16,9 +16,9 @@ interface IStepExecutor { void echo(message) - void cmd(String script, boolean returnStatus) + int cmd(String script, boolean returnStatus) - void cmd(String script) + int cmd(String script) void tool(String toolName) diff --git a/src/ru/pulsar/jenkins/library/StepExecutor.groovy b/src/ru/pulsar/jenkins/library/StepExecutor.groovy index 59baa3f..4b66f22 100644 --- a/src/ru/pulsar/jenkins/library/StepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/StepExecutor.groovy @@ -41,8 +41,8 @@ class StepExecutor implements IStepExecutor { } @Override - void cmd(String script, boolean returnStatus = false) { - steps.cmd(script, returnStatus) + int cmd(String script, boolean returnStatus = false) { + return steps.cmd(script, returnStatus) } @Override diff --git a/test/integration/groovy/cmdTest.groovy b/test/integration/groovy/cmdTest.groovy index 0d3283b..f9ddc71 100644 --- a/test/integration/groovy/cmdTest.groovy +++ b/test/integration/groovy/cmdTest.groovy @@ -35,4 +35,28 @@ class cmdTest { rule.assertLogContains('helloWorld', rule.buildAndAssertSuccess(workflowJob)) } + + @Test + void "cmd should return status"() { + def pipeline = ''' + pipeline { + agent any + stages { + stage('test') { + steps { + script { + def status = cmd("false", true) + echo "status = $status" + } + } + } + } + } + '''.stripIndent() + final CpsFlowDefinition flow = new CpsFlowDefinition(pipeline, true) + final WorkflowJob workflowJob = rule.createProject(WorkflowJob, 'project') + workflowJob.definition = flow + + rule.assertLogContains('status = 1', rule.buildAndAssertSuccess(workflowJob)) + } } \ No newline at end of file diff --git a/vars/cmd.groovy b/vars/cmd.groovy index c924119..b5ad056 100644 --- a/vars/cmd.groovy +++ b/vars/cmd.groovy @@ -5,5 +5,5 @@ int call(String script, boolean returnStatus = false) { ContextRegistry.registerDefaultContext(this) def cmd = new Cmd(script, returnStatus) - cmd.run() + return cmd.run() }