Skip to content

Commit 4f792f6

Browse files
committed
SCMSourceRetrieverTest.java: optimize tests using MBP to not build same jobs twice [JENKINS-69731]
1 parent 7ddf8e6 commit 4f792f6

File tree

1 file changed

+51
-9
lines changed

1 file changed

+51
-9
lines changed

src/test/java/org/jenkinsci/plugins/workflow/libs/SCMSourceRetrieverTest.java

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -315,21 +315,35 @@ public class SCMSourceRetrieverTest {
315315
WorkflowMultiBranchProject mbp = r.jenkins.createProject(WorkflowMultiBranchProject.class, "mbp");
316316
BranchSource branchSource = new BranchSource(new GitSCMSource("source-id", sampleRepo2.toString(), "", "*", "", false));
317317
mbp.getSourcesList().add(branchSource);
318+
// Note: this notification causes discovery of branches,
319+
// definition of MBP "leaf" jobs, and launch of builds,
320+
// so below we just make sure they complete and analyze
321+
// the outcomes.
318322
sampleRepo2.notifyCommit(r);
323+
r.waitUntilNoActivity();
319324

320325
WorkflowJob p1 = mbp.getItem("master");
321-
WorkflowRun b1 = r.buildAndAssertSuccess(p1);
326+
WorkflowRun b1 = p1.getLastBuild();
327+
r.waitForCompletion(b1);
328+
assertFalse(p1.isBuilding());
329+
r.assertBuildStatusSuccess(b1);
322330
r.assertLogContains("Loading library branchylib@master", b1);
323331
r.assertLogContains("something special", b1);
324332

325333
WorkflowJob p2 = mbp.getItem("feature");
326-
WorkflowRun b2 = r.buildAndAssertSuccess(p2);
334+
WorkflowRun b2 = p2.getLastBuild();
335+
r.waitForCompletion(b2);
336+
assertFalse(p2.isBuilding());
337+
r.assertBuildStatusSuccess(b2);
327338
r.assertLogContains("Loading library branchylib@feature", b2);
328339
r.assertLogContains("something very special", b2);
329340

330341
// library branch "bogus" does not exist => fall back to default (master)
331342
WorkflowJob p3 = mbp.getItem("bogus");
332-
WorkflowRun b3 = r.buildAndAssertSuccess(p3);
343+
WorkflowRun b3 = p3.getLastBuild();
344+
r.waitForCompletion(b3);
345+
assertFalse(p3.isBuilding());
346+
r.assertBuildStatusSuccess(b3);
333347
r.assertLogContains("Loading library branchylib@master", b3);
334348
r.assertLogContains("something special", b3);
335349

@@ -376,20 +390,34 @@ public class SCMSourceRetrieverTest {
376390
WorkflowMultiBranchProject mbp = r.jenkins.createProject(WorkflowMultiBranchProject.class, "mbp");
377391
BranchSource branchSource = new BranchSource(new GitSCMSource("source-id", sampleRepo2.toString(), "", "*", "", false));
378392
mbp.getSourcesList().add(branchSource);
393+
// Note: this notification causes discovery of branches,
394+
// definition of MBP "leaf" jobs, and launch of builds,
395+
// so below we just make sure they complete and analyze
396+
// the outcomes.
379397
sampleRepo2.notifyCommit(r);
398+
r.waitUntilNoActivity();
380399

381400
WorkflowJob p1 = mbp.getItem("master");
382-
WorkflowRun b1 = r.buildAndAssertSuccess(p1);
401+
WorkflowRun b1 = p1.getLastBuild();
402+
r.waitForCompletion(b1);
403+
assertFalse(p1.isBuilding());
404+
r.assertBuildStatusSuccess(b1);
383405
r.assertLogContains("Loading library branchylib@master", b1);
384406
r.assertLogContains("something special", b1);
385407

386408
WorkflowJob p2 = mbp.getItem("feature");
387-
WorkflowRun b2 = r.buildAndAssertSuccess(p2);
409+
WorkflowRun b2 = p2.getLastBuild();
410+
r.waitForCompletion(b2);
411+
assertFalse(p2.isBuilding());
412+
r.assertBuildStatusSuccess(b2);
388413
r.assertLogContains("Loading library branchylib@feature", b2);
389414
r.assertLogContains("something very special", b2);
390415

391416
WorkflowJob p3 = mbp.getItem("bogus");
392-
WorkflowRun b3 = r.buildAndAssertStatus(Result.FAILURE, p3);
417+
WorkflowRun b3 = p3.getLastBuild();
418+
r.waitForCompletion(b3);
419+
assertFalse(p3.isBuilding());
420+
r.assertBuildStatus(Result.FAILURE, b3);
393421
r.assertLogContains("ERROR: Could not resolve bogus", b3);
394422
r.assertLogContains("ambiguous argument 'bogus^{commit}': unknown revision or path not in the working tree", b3);
395423
r.assertLogContains("ERROR: No version bogus found for library branchylib", b3);
@@ -430,20 +458,34 @@ public class SCMSourceRetrieverTest {
430458
WorkflowMultiBranchProject mbp = r.jenkins.createProject(WorkflowMultiBranchProject.class, "mbp");
431459
BranchSource branchSource = new BranchSource(new GitSCMSource("source-id", sampleRepo2.toString(), "", "*", "", false));
432460
mbp.getSourcesList().add(branchSource);
461+
// Note: this notification causes discovery of branches,
462+
// definition of MBP "leaf" jobs, and launch of builds,
463+
// so below we just make sure they complete and analyze
464+
// the outcomes.
433465
sampleRepo2.notifyCommit(r);
466+
r.waitUntilNoActivity();
434467

435468
WorkflowJob p1 = mbp.getItem("master");
436-
WorkflowRun b1 = r.buildAndAssertStatus(Result.FAILURE, p1);
469+
WorkflowRun b1 = p1.getLastBuild();
470+
r.waitForCompletion(b1);
471+
assertFalse(p1.isBuilding());
472+
r.assertBuildStatus(Result.FAILURE, b1);
437473
r.assertLogContains("ERROR: Version override not permitted for library branchylib", b1);
438474
r.assertLogContains("WorkflowScript: Loading libraries failed", b1);
439475

440476
WorkflowJob p2 = mbp.getItem("feature");
441-
WorkflowRun b2 = r.buildAndAssertStatus(Result.FAILURE, p2);
477+
WorkflowRun b2 = p2.getLastBuild();
478+
r.waitForCompletion(b2);
479+
assertFalse(p2.isBuilding());
480+
r.assertBuildStatus(Result.FAILURE, b2);
442481
r.assertLogContains("ERROR: Version override not permitted for library branchylib", b2);
443482
r.assertLogContains("WorkflowScript: Loading libraries failed", b2);
444483

445484
WorkflowJob p3 = mbp.getItem("bogus");
446-
WorkflowRun b3 = r.buildAndAssertStatus(Result.FAILURE, p3);
485+
WorkflowRun b3 = p3.getLastBuild();
486+
r.waitForCompletion(b3);
487+
assertFalse(p3.isBuilding());
488+
r.assertBuildStatus(Result.FAILURE, b3);
447489
r.assertLogContains("ERROR: Version override not permitted for library branchylib", b3);
448490
r.assertLogContains("WorkflowScript: Loading libraries failed", b3);
449491
}

0 commit comments

Comments
 (0)