diff --git a/pom.xml b/pom.xml
index ca7fda87..7873300d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
org.jenkins-ci.plugins
plugin
- 5.26
+ 5.2099.v68c2f5e27299
org.jenkins-ci.plugins.workflow
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/ArtifactArchiverStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/ArtifactArchiverStepTest.java
index 1706255d..5ac3d045 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/ArtifactArchiverStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/ArtifactArchiverStepTest.java
@@ -41,15 +41,13 @@ void beforeEach(JenkinsRule rule) {
void archive() throws Exception {
// job setup
WorkflowJob foo = r.jenkins.createProject(WorkflowJob.class, "foo");
- foo.setDefinition(new CpsFlowDefinition(
- """
+ foo.setDefinition(new CpsFlowDefinition("""
node {
writeFile text: 'hello world', file: 'msg'
archive 'm*'
unarchive(mapping:['msg':'msg.out'])
archive 'msg.out'
- }""",
- true));
+ }""", true));
// get the build going, and wait until workflow pauses
WorkflowRun b = r.assertBuildStatusSuccess(foo.scheduleBuild2(0).get());
@@ -78,8 +76,7 @@ void nonexistent() throws Exception {
@Test
void unarchiveDir() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
writeFile text: 'one', file: 'a/1'; writeFile text: 'two', file: 'a/b/2'
archive 'a/'
@@ -88,8 +85,7 @@ void unarchiveDir() throws Exception {
echo "${readFile 'a/1'}/${readFile 'a/b/2'}"
}
}
- """,
- true));
+ """, true));
WorkflowRun b = r.assertBuildStatusSuccess(p.scheduleBuild2(0).get());
VirtualFile archivedFile = b.getArtifactManager().root().child("a/b/2");
assertTrue(archivedFile.exists());
@@ -106,8 +102,7 @@ void directDownload() throws Exception {
r.createSlave("remote1", null, null);
r.createSlave("remote2", null, null);
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node('remote1') {
writeFile file: 'x', text: 'contents'
archiveArtifacts 'x'
@@ -116,8 +111,7 @@ void directDownload() throws Exception {
unarchive mapping: [x: 'x']
echo "loaded ${readFile('x')}"
}
- """,
- true));
+ """, true));
DirectArtifactManagerFactory.whileBlockingOpen(() -> {
r.assertLogContains("loaded contents", r.buildAndAssertSuccess(p));
return null;
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/CatchErrorStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/CatchErrorStepTest.java
index 19208fab..7bfd9f63 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/CatchErrorStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/CatchErrorStepTest.java
@@ -67,13 +67,11 @@ void beforeEach(JenkinsRule rule) {
void specialStatus() throws Exception {
User.getById("smrt", true);
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError {
semaphore 'specialStatus'
}
- """,
- true));
+ """, true));
SemaphoreStep.failure(
"specialStatus/1",
new FlowInterruptedException(Result.UNSTABLE, new CauseOfInterruption.UserInterruption("smrt")));
@@ -133,13 +131,11 @@ void serialFormWhenTypeOfBuildResultFieldWasResult() throws Exception {
@Test
void customBuildResult() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(message: 'caught error', buildResult: 'unstable') {
error 'oops'
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.UNSTABLE, null, true);
r.assertLogContains("Setting overall build result to UNSTABLE", b);
@@ -148,13 +144,11 @@ void customBuildResult() throws Exception {
@Test
void invalidBuildResult() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(buildResult: 'typo') {
error 'oops'
}
- """,
- true));
+ """, true));
WorkflowRun b = r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0));
r.assertLogContains("buildResult is invalid: typo", b);
}
@@ -163,13 +157,11 @@ void invalidBuildResult() throws Exception {
@Test
void customStageResult() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(message: 'caught error', stageResult: 'failure') {
error 'oops'
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.FAILURE, Result.FAILURE, true);
}
@@ -177,13 +169,11 @@ void customStageResult() throws Exception {
@Test
void invalidStageResult() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(stageResult: 'typo') {
error 'oops'
}
- """,
- true));
+ """, true));
WorkflowRun b = r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0));
r.assertLogContains("stageResult is invalid: typo", b);
}
@@ -192,13 +182,11 @@ void invalidStageResult() throws Exception {
@Test
void stepResultOnly() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(message: 'caught error', buildResult: 'success', stageResult: 'unstable') {
error 'oops'
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.SUCCESS, Result.UNSTABLE, true);
}
@@ -206,15 +194,13 @@ void stepResultOnly() throws Exception {
@Test
void catchesInterruptionsByDefault() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
import jenkins.model.CauseOfInterruption
import org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
catchError(message: 'caught error') {
throw new FlowInterruptedException(Result.ABORTED, true, new CauseOfInterruption[0])
}
- """,
- false));
+ """, false));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.ABORTED, Result.ABORTED, true);
}
@@ -222,15 +208,13 @@ void catchesInterruptionsByDefault() throws Exception {
@Test
void canAvoidCatchingInterruptionsWithOption() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
import jenkins.model.CauseOfInterruption
import org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
catchError(message: 'caught error', catchInterruptions: false) {
throw new FlowInterruptedException(Result.ABORTED, true, new CauseOfInterruption[0])
}
- """,
- false));
+ """, false));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.ABORTED, null, false);
}
@@ -238,13 +222,11 @@ void canAvoidCatchingInterruptionsWithOption() throws Exception {
@Test
void catchesAttemptsToStopBuildByDefault() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(message: 'caught error') {
semaphore 'ready'
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("ready/1", b);
b.doStop();
@@ -254,13 +236,11 @@ void catchesAttemptsToStopBuildByDefault() throws Exception {
@Test
void canAvoidCatchingAttemptsToStopBuildWithOption() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
catchError(message: 'caught error', catchInterruptions: false) {
semaphore 'ready'
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("ready/1", b);
b.doStop();
@@ -273,14 +253,12 @@ void catchesDownstreamBuildFailureEvenWhenNotCatchingInterruptions() throws Exce
WorkflowJob ds = r.createProject(WorkflowJob.class, "ds");
ds.setDefinition(new CpsFlowDefinition("error 'oops!'", true));
WorkflowJob us = r.createProject(WorkflowJob.class, "us");
- us.setDefinition(new CpsFlowDefinition(
- """
+ us.setDefinition(new CpsFlowDefinition("""
int count = 1
catchError(message: 'caught error', catchInterruptions: false) {
build 'ds'
}
- """,
- true));
+ """, true));
WorkflowRun b = r.assertBuildStatus(Result.FAILURE, us.scheduleBuild2(0));
assertCatchError(r, b, Result.FAILURE, Result.FAILURE, true);
}
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreStepTest.java
index 06360af5..70245a45 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreStepTest.java
@@ -123,13 +123,11 @@ void fingerprinter() throws Exception {
@Test
void javadoc() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
writeFile text: 'hello world', file: 'docs/index.html'
step([$class: 'JavadocArchiver', javadocDir: 'docs'])
- }""",
- true));
+ }""", true));
WorkflowRun b = r.assertBuildStatusSuccess(p.scheduleBuild2(0));
assertEquals(
"hello world",
@@ -143,15 +141,13 @@ void javadoc() throws Exception {
@Test
void mailer() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
writeFile text: '''failed''', file: 'r.xml'
junit 'r.xml'
step([$class: 'Mailer', recipients: 'test@nowhere.net'])
}
- """,
- true));
+ """, true));
String recipient = "test@nowhere.net";
Mailbox inbox = Mailbox.get(new InternetAddress(recipient));
inbox.clear();
@@ -159,39 +155,33 @@ void mailer() throws Exception {
assertEquals(1, inbox.size());
var subj = Messages.MailSender_UnstableMail_Subject(); // MailSender.createUnstableMail/getSubject
assertEquals(subj + " " + b.getFullDisplayName(), inbox.get(0).getSubject());
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
catchError {error 'oops'}
step([$class: 'Mailer', recipients: 'test@nowhere.net'])
}
- """,
- true));
+ """, true));
inbox.clear();
b = r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0).get());
assertEquals(1, inbox.size());
assertEquals(
Messages.MailSender_FailureMail_Subject() + " " + b.getFullDisplayName(),
inbox.get(0).getSubject());
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
catchError {echo 'ok'}
step([$class: 'Mailer', recipients: 'test@nowhere.net'])
}
- """,
- true));
+ """, true));
inbox.clear();
b = r.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0).get());
assertEquals(0, inbox.size());
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
try {error 'oops'} catch (e) {echo "caught ${e}"; currentBuild.result = 'FAILURE'}
step([$class: 'Mailer', recipients: 'test@nowhere.net'])
}
- """,
- true));
+ """, true));
inbox.clear();
b = r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0).get());
assertEquals(1, inbox.size());
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreWrapperStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreWrapperStepTest.java
index 4ba45d1d..633af38a 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreWrapperStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/CoreWrapperStepTest.java
@@ -105,8 +105,7 @@ void useWrapper() throws Throwable {
slaveEnv.put("HOME", "/home/jenkins");
createSpecialEnvSlave(j, "slave", "", slaveEnv);
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node('slave') {
mock {
semaphore 'restarting'
@@ -118,8 +117,7 @@ void useWrapper() throws Throwable {
}
}
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
SemaphoreStep.waitForStart("restarting/1", b);
});
@@ -190,8 +188,7 @@ public boolean isApplicable(AbstractProject, ?> item) {
void envStickiness() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
def show(which) {
echo "groovy ${which} ${env.TESTVAR}"
if (isUnix()) {
@@ -209,8 +206,7 @@ def show(which) {
}
show 'outside'
}
- """,
- true));
+ """, true));
WorkflowRun b = j.buildAndAssertSuccess(p);
j.assertLogContains("received initial", b);
j.assertLogContains("groovy before wrapped", b);
@@ -334,12 +330,10 @@ public boolean isApplicable(AbstractProject, ?> item) {
void argumentsToString() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
wrap([$class: 'AnsiColorBuildWrapper', colorMapName: 'xterm']) {}
- }""",
- true));
+ }""", true));
WorkflowRun b = j.buildAndAssertSuccess(p);
List coreStepNodes = new DepthFirstScanner()
.filteredNodes(
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/DeleteDirStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/DeleteDirStepTest.java
index 21fda190..265a6a1e 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/DeleteDirStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/DeleteDirStepTest.java
@@ -47,8 +47,7 @@ void beforeEach(JenkinsRule rule) {
@Test
void testDeleteEmptyWorkspace() throws Exception {
- String workspace = runAndGetWorkspaceDir(
- """
+ String workspace = runAndGetWorkspaceDir("""
node {
deleteDir()
}""");
@@ -58,8 +57,7 @@ void testDeleteEmptyWorkspace() throws Exception {
@Test
void testDeleteTopLevelDir() throws Exception {
- String workspace = runAndGetWorkspaceDir(
- """
+ String workspace = runAndGetWorkspaceDir("""
node {
writeFile file: 'f1', text: 'some text'
writeFile file: 'f2', text: 'some text'
@@ -76,8 +74,7 @@ void testDeleteTopLevelDir() throws Exception {
@Test
void testDeleteSubFolder() throws Exception {
- String workspace = runAndGetWorkspaceDir(
- """
+ String workspace = runAndGetWorkspaceDir("""
node {
writeFile file: 'f1', text: 'some text'
writeFile file: 'f2', text: 'some text'
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/EnvStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/EnvStepTest.java
index af2a2c7c..7b8fc745 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/EnvStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/EnvStepTest.java
@@ -61,8 +61,7 @@ public class EnvStepTest {
void overriding() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
env.CUSTOM = 'initial'
env.FOOPATH = node {isUnix() ? '/opt/foos' : 'C:\\\\foos'}
env.NULLED = 'outside'
@@ -72,8 +71,7 @@ void overriding() throws Throwable {
echo "groovy NULLED=${env.NULLED}"
}
isUnix() ? sh('echo outside CUSTOM=$CUSTOM NOVEL=$NOVEL NULLED=outside') : bat('echo outside CUSTOM=%CUSTOM% NOVEL=%NOVEL% NULLED=outside')
- }""",
- true));
+ }""", true));
WorkflowRun b = j.buildAndAssertSuccess(p);
j.assertLogContains(
Functions.isWindows()
@@ -99,14 +97,12 @@ void overriding() throws Throwable {
void parallel() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
parallel a: {
node {withEnv(['TOOL=aloc']) {semaphore 'a'; isUnix() ? sh('echo a TOOL=$TOOL') : bat('echo a TOOL=%TOOL%')}}
}, b: {
node {withEnv(['TOOL=bloc']) {semaphore 'b'; isUnix() ? sh('echo b TOOL=$TOOL') : bat('echo b TOOL=%TOOL%')}}
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
SemaphoreStep.waitForStart("a/1", b);
SemaphoreStep.waitForStart("b/1", b);
@@ -122,8 +118,7 @@ void parallel() throws Throwable {
void restarting() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
def show(which) {
echo "groovy ${which} ${env.TESTVAR}:"
isUnix() ? sh("echo shell ${which} \\$TESTVAR:") : bat("echo shell ${which} %TESTVAR%:")
@@ -135,8 +130,7 @@ def show(which) {
show 'after'
}
show 'outside'
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
SemaphoreStep.waitForStart("restarting/1", b);
});
@@ -157,16 +151,14 @@ def show(which) {
void nested() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
withEnv(['A=one']) {
withEnv(['B=two']) {
isUnix() ? sh('echo A=$A B=$B') : bat('echo A=%A% B=%B%')
}
}
- }""",
- true));
+ }""", true));
WorkflowRun b = j.buildAndAssertSuccess(p);
j.assertLogContains("A=one B=two", b);
});
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/ReadWriteFileStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/ReadWriteFileStepTest.java
index ac9674d8..01b02dc1 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/ReadWriteFileStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/ReadWriteFileStepTest.java
@@ -62,8 +62,7 @@ void beforeEach(JenkinsRule rule) {
@Test
void basics() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
if (isUnix()) {
sh 'echo hello > f1'
@@ -79,8 +78,7 @@ void basics() throws Exception {
bat 'type f2'
}
}
- """,
- true));
+ """, true));
WorkflowRun b = r.assertBuildStatusSuccess(p.scheduleBuild2(0));
r.assertLogContains("HELLO", b);
List coreStepNodes =
@@ -92,14 +90,12 @@ void basics() throws Exception {
@Test
void shouldTestFileExistsStep() throws Exception {
final WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
echo "test.txt - FileExists: ${fileExists('test.txt')}"\s
writeFile file: 'test2.txt', text:'content of file'\s
echo "test2.txt - FileExists: ${fileExists('test2.txt')}"\s
- }""",
- true));
+ }""", true));
WorkflowRun run = p.scheduleBuild2(0).get();
r.assertLogContains("test.txt - FileExists: false", run);
@@ -111,15 +107,13 @@ void shouldTestFileExistsStep() throws Exception {
@Test
void readAndWriteFileUsesCorrectEncoding() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
def text = 'HELLO'
writeFile file: 'f1', text: text, encoding: 'utf-32le'
def text2 = readFile file: 'f1', encoding: 'utf-32le'
echo text2
- }""",
- true));
+ }""", true));
r.assertLogContains("HELLO", r.assertBuildStatusSuccess(p.scheduleBuild2(0)));
}
@@ -127,15 +121,13 @@ void readAndWriteFileUsesCorrectEncoding() throws Exception {
@Test
void testKnownCharsetRoundtrip() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
def text = 'HELLO'
writeFile file: 'f1', text: '¤', encoding: 'iso-8859-1'
def text2 = readFile file: 'f1', encoding: 'iso-8859-15'
echo text2
- }""",
- true));
+ }""", true));
r.assertLogContains("€", r.assertBuildStatusSuccess(p.scheduleBuild2(0)));
}
@@ -143,8 +135,7 @@ void testKnownCharsetRoundtrip() throws Exception {
@Test
void testBinaryFileRoundtrip() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
semaphore 'file-created'
def utf8Text = readFile file: 'binary-file', encoding: 'UTF-8'
@@ -152,8 +143,7 @@ void testBinaryFileRoundtrip() throws Exception {
def base64Text = readFile file: 'binary-file', encoding: 'Base64'
writeFile file: 'round-trip-base64', text: base64Text, encoding: 'Base64'
semaphore 'bytes-checked'
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("file-created/1", b);
byte[] bytes = {0x48, 0x45, 0x4c, 0x4c, 0x4f, (byte) 0x80, (byte) 0xec, (byte) 0xf4, 0x00, 0x0d, 0x1b};
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/RetryStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/RetryStepTest.java
index fffe951c..5eb651c1 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/RetryStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/RetryStepTest.java
@@ -53,16 +53,14 @@ void beforeEach(JenkinsRule rule) {
@Test
void smokes() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
int i = 0;
retry(3) {
println 'Trying!'
if (i++ < 2) error('oops');
println 'Done!'
}
- println 'Over!'""",
- true));
+ println 'Over!'""", true));
QueueTaskFuture f = p.scheduleBuild2(0);
WorkflowRun b = r.assertBuildStatusSuccess(f);
@@ -119,15 +117,13 @@ void abortShouldNotRetry() throws Exception {
@Test
void inputAbortShouldNotRetry() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
int count = 0
retry(3) {
echo 'trying '+(count++)
input id: 'InputX', message: 'OK?', ok: 'Yes'
}
- """,
- true));
+ """, true));
QueueTaskFuture queueTaskFuture = p.scheduleBuild2(0);
WorkflowRun run = queueTaskFuture.getStartCondition().get();
@@ -156,8 +152,7 @@ void inputAbortShouldNotRetry() throws Exception {
@Test
void stackTraceOnError() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
def count = 0
retry(2) {
count += 1
@@ -167,8 +162,7 @@ void stackTraceOnError() throws Exception {
}
echo 'Done!'
}
- """,
- true));
+ """, true));
WorkflowRun run = r.buildAndAssertSuccess(p);
r.assertLogContains("Try #1", run);
@@ -185,15 +179,13 @@ void downstreamBuildFailureShouldRetry() throws Exception {
WorkflowJob ds = r.createProject(WorkflowJob.class, "ds");
ds.setDefinition(new CpsFlowDefinition("error 'oops!'", true));
WorkflowJob us = r.createProject(WorkflowJob.class, "us");
- us.setDefinition(new CpsFlowDefinition(
- """
+ us.setDefinition(new CpsFlowDefinition("""
int count = 1
retry(3) {
echo "trying ${count++}"
build 'ds'
}
- """,
- true));
+ """, true));
WorkflowRun b = r.assertBuildStatus(Result.FAILURE, us.scheduleBuild2(0));
r.assertLogContains("trying 1", b);
r.assertLogContains("trying 2", b);
@@ -204,8 +196,7 @@ void downstreamBuildFailureShouldRetry() throws Exception {
@Test
void shouldNotRetryAfterOuterTimeout() throws Exception {
WorkflowJob p = r.createProject(WorkflowJob.class);
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
int count = 0
timeout(time: 5, unit: 'SECONDS') {
retry(3) {
@@ -214,8 +205,7 @@ void shouldNotRetryAfterOuterTimeout() throws Exception {
error 'failure'
}
}
- """,
- true));
+ """, true));
WorkflowRun run = r.buildAndAssertStatus(Result.ABORTED, p);
r.assertLogContains("Timeout has been exceeded", run);
@@ -228,8 +218,7 @@ void shouldNotRetryAfterOuterTimeout() throws Exception {
@Test
void shouldRetryAfterInnerTimeout() throws Exception {
WorkflowJob p = r.createProject(WorkflowJob.class);
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
int count = 0
retry(3) {
timeout(time: 5, unit: 'SECONDS') {
@@ -238,8 +227,7 @@ void shouldRetryAfterInnerTimeout() throws Exception {
error 'failure'
}
}
- """,
- true));
+ """, true));
WorkflowRun run = r.buildAndAssertStatus(Result.ABORTED, p);
r.assertLogContains("Timeout has been exceeded", run);
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/TimeoutStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/TimeoutStepTest.java
index ff7b8fb4..fc43bdee 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/TimeoutStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/TimeoutStepTest.java
@@ -120,8 +120,7 @@ void basicWithBlock() throws Throwable {
void killingParallel() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
timeout(time:5, unit:'SECONDS') {
parallel(
@@ -132,8 +131,7 @@ void killingParallel() throws Throwable {
}
echo 'NotHere'
}
- """,
- true));
+ """, true));
WorkflowRun b = j.buildAndAssertStatus(Result.ABORTED, p);
// make sure things that are supposed to run do, and things that are NOT supposed to run do not.
@@ -160,8 +158,7 @@ void activity() throws Throwable {
assumeTrue(System.getenv("CI") == null, "TODO consistently failing in ci.jenkins.io yet passing locally");
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
timeout(time:5, unit:'SECONDS', activity: true) {
echo 'NotHere';
@@ -173,8 +170,7 @@ void activity() throws Throwable {
echo 'ShouldNot!';
}
}
- """,
- true));
+ """, true));
WorkflowRun b = j.buildAndAssertStatus(Result.ABORTED, p);
j.assertLogContains("JustHere!", b);
j.assertLogNotContains("ShouldNot!", b);
@@ -187,8 +183,7 @@ void activityInParallel() throws Throwable {
assumeTrue(System.getenv("CI") == null, "TODO also flaky in ci.jenkins.io");
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
parallel(
a: {
@@ -209,8 +204,7 @@ void activityInParallel() throws Throwable {
}
})
}
- """,
- true));
+ """, true));
WorkflowRun b = j.buildAndAssertStatus(Result.ABORTED, p);
j.assertLogContains("JustHere!", b);
j.assertLogNotContains("ShouldNot!", b);
@@ -223,8 +217,7 @@ void activityRestart() throws Throwable {
assumeTrue(System.getenv("CI") == null, "TODO also flaky in ci.jenkins.io");
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "restarted");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
timeout(time:15, unit:'SECONDS', activity: true) {
echo 'NotHere';
@@ -238,8 +231,7 @@ void activityRestart() throws Throwable {
echo 'ShouldNot!';
}
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
SemaphoreStep.waitForStart("restarted/1", b);
});
@@ -259,8 +251,7 @@ void activityRemote() throws Throwable {
sessions.then(j -> {
j.createSlave();
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node('!master') {
timeout(time:5, unit:'SECONDS', activity: true) {
if (isUnix()) {
@@ -270,8 +261,7 @@ void activityRemote() throws Throwable {
}
}
}
- """,
- true));
+ """, true));
WorkflowRun b = j.assertBuildStatus(Result.ABORTED, p.scheduleBuild2(0));
j.assertLogContains("JustHere", b);
j.assertLogNotContains("ShouldNot", b);
@@ -288,15 +278,13 @@ void activityGit() throws Throwable {
git.git("commit", "--all", "--message=init");
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
p.addProperty(new ParametersDefinitionProperty(new StringParameterDefinition("GIT", git.toString())));
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node('!master') {
timeout(time: 5, unit: 'MINUTES', activity: true) {
git GIT
}
}
- """,
- true));
+ """, true));
j.buildAndAssertSuccess(p);
});
}
@@ -306,16 +294,14 @@ void activityGit() throws Throwable {
void restarted() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "restarted");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
timeout(time: 15, unit: 'SECONDS') {
semaphore 'restarted'
sleep 999
}
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
SemaphoreStep.waitForStart("restarted/1", b);
});
@@ -332,8 +318,7 @@ void restarted() throws Throwable {
void timeIsConsumed() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "timeIsConsumed");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
timeout(time: 20, unit: 'SECONDS') {
sleep 10
@@ -341,8 +326,7 @@ void timeIsConsumed() throws Throwable {
sleep 10
}
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
SemaphoreStep.waitForStart("timeIsConsumed/1", b);
});
@@ -486,38 +470,33 @@ void nestingDetection() throws Throwable {
WorkflowJob p = j.createProject(WorkflowJob.class);
// Inside
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
timeout(time: 5, unit: 'SECONDS') {
try {
sleep 10
} catch (e) {
echo e.isActualInterruption() ? 'GOOD' : 'BAD'
}
- }""",
- true));
+ }""", true));
WorkflowRun b = j.buildAndAssertSuccess(p);
j.assertLogContains("GOOD", b);
j.assertLogNotContains("BAD", b);
// Outside
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
try {
timeout(time: 5, unit: 'SECONDS') {
sleep 10
}
} catch (e) {
echo e.isActualInterruption() ? 'BAD' : 'GOOD'
- }""",
- true));
+ }""", true));
b = j.buildAndAssertSuccess(p);
j.assertLogContains("GOOD", b);
j.assertLogNotContains("BAD", b);
// Between
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
timeout(time: 5, unit: 'SECONDS') {
try {
timeout(time: 20, unit: 'SECONDS') {
@@ -526,45 +505,39 @@ void nestingDetection() throws Throwable {
} catch (e) {
echo e.isActualInterruption() ? 'GOOD' : 'BAD'
}
- }""",
- true));
+ }""", true));
b = j.buildAndAssertSuccess(p);
j.assertLogContains("GOOD", b);
j.assertLogNotContains("BAD", b);
// Inside (unkillable)
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
timeout(time: 5, unit: 'SECONDS') {
try {
unkillable()
} catch (e) {
echo e.isActualInterruption() ? 'GOOD' : 'BAD'
}
- }""",
- true));
+ }""", true));
b = p.scheduleBuild2(0).get();
j.assertLogContains("GOOD", b);
j.assertLogNotContains("BAD", b);
// Outside (unkillable)
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
try {
timeout(time: 5, unit: 'SECONDS') {
unkillable()
}
} catch (e) {
echo e.isActualInterruption() ? 'BAD' : 'GOOD'\
- }""",
- true));
+ }""", true));
b = j.buildAndAssertSuccess(p);
j.assertLogContains("GOOD", b);
j.assertLogNotContains("BAD", b);
// Between (unkillable)
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
timeout(time: 5, unit: 'SECONDS') {
try {
timeout(time: 20, unit: 'SECONDS') {
@@ -573,8 +546,7 @@ void nestingDetection() throws Throwable {
} catch (e) {
echo e.isActualInterruption() ? 'GOOD' : 'BAD'
}
- }""",
- true));
+ }""", true));
b = j.buildAndAssertSuccess(p);
j.assertLogContains("GOOD", b);
j.assertLogNotContains("BAD", b);
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/WaitForConditionStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/WaitForConditionStepTest.java
index 7ec8f265..e28a7962 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/WaitForConditionStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/WaitForConditionStepTest.java
@@ -117,8 +117,7 @@ void failure() throws Throwable {
void catchErrors() throws Throwable {
sessions.then(j -> {
WorkflowJob p = j.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
waitUntil {
try {
@@ -133,8 +132,7 @@ void catchErrors() throws Throwable {
}
}
echo 'finished waiting'
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("wait/1", b);
j.jenkins.getWorkspaceFor(p).child("flag").write("", null);
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/WarnErrorStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/WarnErrorStepTest.java
index 7d49aea9..71347770 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/steps/WarnErrorStepTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/WarnErrorStepTest.java
@@ -57,12 +57,10 @@ void beforeEach(JenkinsRule rule) {
@Test
void smokes() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
warnError('caught error') {
error 'oops'
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.UNSTABLE, Result.UNSTABLE, true);
}
@@ -70,12 +68,10 @@ void smokes() throws Exception {
@Test
void requiresMessage() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
warnError() {
error 'oops'
- }""",
- true));
+ }""", true));
WorkflowRun b = r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0));
r.assertLogContains("A non-empty message is required", b);
}
@@ -83,14 +79,12 @@ void requiresMessage() throws Exception {
@Test
void catchesTimeoutsByDefault() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
timeout(time: 1, unit: 'SECONDS') {
warnError('caught error') {
sleep 5
}
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.ABORTED, Result.ABORTED, true);
}
@@ -98,14 +92,12 @@ void catchesTimeoutsByDefault() throws Exception {
@Test
void canAvoidCatchingTimeoutsWithOption() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
timeout(time: 1, unit: 'SECONDS') {
warnError(message: 'caught error', catchInterruptions: false) {
sleep 5
}
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
assertCatchError(r, b, Result.ABORTED, null, false);
}
@@ -113,12 +105,10 @@ void canAvoidCatchingTimeoutsWithOption() throws Exception {
@Test
void catchesAttemptsToStopBuildByDefault() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
warnError('caught error') {
semaphore 'ready'
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("ready/1", b);
b.doStop();
@@ -128,12 +118,10 @@ void catchesAttemptsToStopBuildByDefault() throws Exception {
@Test
void canAvoidCatchingAttemptsToStopBuildWithOption() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
warnError(message: 'caught error', catchInterruptions: false) {
semaphore 'ready'
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("ready/1", b);
b.doStop();
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/support/steps/stash/StashTest.java b/src/test/java/org/jenkinsci/plugins/workflow/support/steps/stash/StashTest.java
index ebcdb3b4..57729607 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/support/steps/stash/StashTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/support/steps/stash/StashTest.java
@@ -66,8 +66,7 @@ void beforeEach(JenkinsRule rule) {
@Test
void smokes() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
writeFile file: 'subdir/fname', text: 'whatever'
writeFile file: 'subdir/other', text: 'more'
@@ -81,8 +80,7 @@ void smokes() throws Exception {
writeFile file: 'at-top', text: 'ignored'
stash name: 'from-top', includes: 'elsewhere/', excludes: '**/other'
semaphore 'ending'
- }""",
- true));
+ }""", true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("ending/1", b);
assertEquals(
@@ -99,8 +97,7 @@ void smokes() throws Exception {
@Test
void testDefaultExcludes() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
writeFile file: 'subdir/.gitignore', text: 'whatever'
writeFile file: 'subdir/otherfile', text: 'whatever'
@@ -114,8 +111,7 @@ void testDefaultExcludes() throws Exception {
unstash('no-gitignore')
echo "gitignore does not exist? ${fileExists '.gitignore'}"
}
- }""",
- true));
+ }""", true));
WorkflowRun b = r.assertBuildStatusSuccess(p.scheduleBuild2(0));
r.assertLogContains("gitignore exists? true", b);
r.assertLogContains("gitignore does not exist? false", b);
@@ -125,14 +121,12 @@ void testDefaultExcludes() throws Exception {
@Test
void testAllowEmpty() throws Exception {
WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p");
- p.setDefinition(new CpsFlowDefinition(
- """
+ p.setDefinition(new CpsFlowDefinition("""
node {
stash name: 'whatever', allowEmpty: true
semaphore 'ending'
}
- """,
- true));
+ """, true));
WorkflowRun b = p.scheduleBuild2(0).waitForStart();
SemaphoreStep.waitForStart("ending/1", b);
assertEquals("{whatever={}}", StashManager.stashesOf(b).toString());