From 5043f1f863ba857176b52d3ca67ce81e515e7c43 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sat, 7 Aug 2021 22:16:02 -0700 Subject: [PATCH 001/152] [JENKINS-66299] Prepare Build Monitor View for core Guava upgrade --- build-monitor-plugin/pom.xml | 4 ++-- .../jenkinsci/plugins/buildmonitor/Config.java | 5 +---- .../jenkinsci/plugins/buildmonitor/api/Success.java | 9 ++++----- pom.xml | 8 ++++---- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index b68e081b8..82e87d5a4 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -77,14 +77,14 @@ repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java index c10b3296f..3d7b2e1da 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java @@ -1,6 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor; -import com.google.common.base.Objects; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.order.ByName; import hudson.model.Job; @@ -51,9 +50,7 @@ public void setDisplayCommitters(boolean flag) { @Override public String toString() { - return Objects.toStringHelper(this) - .add("order", order.getClass().getSimpleName()) - .toString(); + return "Config{order=%s}".format(order.getClass().getSimpleName()); } // -- diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java index a63df3186..e75bc04c5 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java @@ -1,20 +1,19 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.api; -import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableMap; import org.codehaus.jackson.annotate.JsonProperty; import java.util.Map; +import java.util.concurrent.TimeUnit; /* package */ class Success { - private final Stopwatch stopwatch; + private final long startTimeNanos; private T data; public Success(T data) { this.data = data; - this.stopwatch = new Stopwatch(); - stopwatch.start(); + this.startTimeNanos = System.nanoTime(); } public static Success successful(T data) { @@ -29,7 +28,7 @@ public T data() { @JsonProperty public Map meta() { return ImmutableMap.of( - "response_time_ms", stopwatch.elapsedMillis() + "response_time_ms", TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTimeNanos, TimeUnit.NANOSECONDS) ); } } diff --git a/pom.xml b/pom.xml index 0239bf052..355c9a43b 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ @@ -39,13 +39,13 @@ central bintray - http://jcenter.bintray.com + https://jcenter.bintray.com repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ @@ -53,7 +53,7 @@ central bintray-plugins - http://jcenter.bintray.com + https://jcenter.bintray.com From c529644e64a13b9423ca62e201aad4787e9774ec Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 17 Sep 2021 17:26:05 +0100 Subject: [PATCH 002/152] Corrected gitignore --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 736edf3c4..20cddcf24 100644 --- a/.gitignore +++ b/.gitignore @@ -16,8 +16,8 @@ work* node_modules use-node -.* +.DS_Store chromedriver.exe -!.travis.yml \ No newline at end of file +!.travis.yml From ed3479d723248e9b5faa48927b18bbeaf51d3830 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 17 Sep 2021 17:27:15 +0100 Subject: [PATCH 003/152] Created a basic pipeline --- .github/FUNDING.yml | 3 +++ .github/workflows/build.yaml | 25 +++++++++++++++++++++++++ .gitignore | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 .github/FUNDING.yml create mode 100644 .github/workflows/build.yaml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..31296afba --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [ jan-molak ] diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 000000000..505588e28 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,25 @@ +name: Release Pipeline + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + types: [ opened, synchronize ] + +jobs: + + build: + if: "!contains(github.event.head_commit.message, 'ci skip')" + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Setup Java + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: 'maven' + - name: Build with Maven + run: mvn --batch-mode --update-snapshots verify diff --git a/.gitignore b/.gitignore index 20cddcf24..5072f043c 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ .java-version target -work* +work node_modules From ba9b1478ac28f3d2463734d26be35424e64c399c Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 17 Sep 2021 17:29:14 +0100 Subject: [PATCH 004/152] Renamed main worflow so that it aligns with GitHub conventions --- .github/workflows/{build.yaml => main.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{build.yaml => main.yaml} (100%) diff --git a/.github/workflows/build.yaml b/.github/workflows/main.yaml similarity index 100% rename from .github/workflows/build.yaml rename to .github/workflows/main.yaml From 57a15e1a8c71c1ce7af594723d09e4620754e9d9 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 17 Sep 2021 17:49:08 +0100 Subject: [PATCH 005/152] Auto-download chromedriver --- .../src/test/resources/serenity.conf | 9 +++- build-monitor-plugin/package-lock.json | 51 +++++++++++++------ 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf index a0fbd2266..9e0d0653e 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf @@ -29,7 +29,12 @@ serenity { outputDirectory = ../target/site/serenity } -webdriver.driver = chrome +webdriver { + driver = chrome + autodownload = true + chrome.silentOutput = true +} + chrome.switches = "--lang=en,--no-sandbox;--disable-gpu;--no-default-browser-check;--no-first-run;--disable-default-apps;--disable-popup-blocking;--disable-translate;--disable-background-timer-throttling;--disable-renderer-backgrounding;--disable-device-discovery-notifications;--window-size=1440,900;" -junit.retry.tests = true \ No newline at end of file +junit.retry.tests = true diff --git a/build-monitor-plugin/package-lock.json b/build-monitor-plugin/package-lock.json index 72bad6ecc..35f0297c7 100644 --- a/build-monitor-plugin/package-lock.json +++ b/build-monitor-plugin/package-lock.json @@ -58,6 +58,7 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1047,7 +1048,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1071,13 +1073,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1094,19 +1098,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1237,7 +1244,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1251,6 +1259,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1267,6 +1276,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1275,13 +1285,15 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -1302,6 +1314,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1390,7 +1403,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1404,6 +1418,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1499,7 +1514,8 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -1541,6 +1557,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1562,6 +1579,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1610,13 +1628,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", - "dev": true + "dev": true, + "optional": true } } }, @@ -2238,13 +2258,13 @@ }, "lodash": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, "log4js": { "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "resolved": "http://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { @@ -2282,7 +2302,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loud-rejection": { "version": "1.6.0", @@ -2407,7 +2428,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { From e2f2baad297d7e69636a251c74bc0d8c66330087 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 17 Sep 2021 17:50:12 +0100 Subject: [PATCH 006/152] Updated Serenity BDD --- build-monitor-acceptance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index a65dea9f0..9bf5f51d9 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -15,7 +15,7 @@ UTF-8 - 2.0.56 + 2.4.20 1.0.0.v20140518 chrome From 432856ed411bd391caa3cdbd3227cd993d51535e Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 17 Sep 2021 20:24:26 +0100 Subject: [PATCH 007/152] Added the new build badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a4aa322e..907ea5049 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Build Monitor Plugin provides a highly visible view of the status of selected Je It easily accommodates different computer screen sizes and is ideal as an Extreme Feedback Device to be displayed on a screen on your office wall. (Inspired by the no longer maintained [RadiatorView](https://wiki.jenkins-ci.org/display/JENKINS/Radiator+View+Plugin) plugin). -[![Build Status](https://travis-ci.org/jan-molak/jenkins-build-monitor-plugin.svg?branch=master)](https://travis-ci.org/jan-molak/jenkins-build-monitor-plugin) +[![Build Status](https://github.com/jan-molak/jenkins-build-monitor-plugin/workflows/Release%20Pipeline/badge.svg)](https://github.com/jan-molak/jenkins-build-monitor-plugin/actions) [![Join the chat at https://gitter.im/jenkins-build-monitor-plugin/Lobby](https://badges.gitter.im/jenkins-build-monitor-plugin/Lobby.svg)](https://gitter.im/jenkins-build-monitor-plugin/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Have a question? Perhaps it's already been answered - check the [FAQ](#faq) section below. From cad790210c739362ad332acaf2808df5cd8f1eb2 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sat, 18 Sep 2021 14:24:33 -0700 Subject: [PATCH 008/152] Use HTTPS URLs in `package-lock.json` --- build-monitor-plugin/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build-monitor-plugin/package-lock.json b/build-monitor-plugin/package-lock.json index 35f0297c7..bf144a4ae 100644 --- a/build-monitor-plugin/package-lock.json +++ b/build-monitor-plugin/package-lock.json @@ -2258,13 +2258,13 @@ }, "lodash": { "version": "3.10.1", - "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, "log4js": { "version": "0.6.38", - "resolved": "http://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { @@ -2428,7 +2428,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { From 109fd60b831c8ca11c048e02eb0362939d1a3318 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 19 Sep 2021 11:07:50 -0700 Subject: [PATCH 009/152] Update baseline to 2.249.3 (#483) --- .../build-monitor-acceptance-base/pom.xml | 3 + .../model/ProjectInformation.java | 8 +- .../build_monitor/model/ProjectStatus.java | 5 +- .../jenkins/client/JenkinsClient.java | 12 +- .../jenkins/client/JenkinsClientExecutor.java | 64 ----------- .../jenkins/environment/UpdateCenter.java | 11 +- .../rules/ManageJenkinsServer.java | 4 +- .../build-monitor-acceptance-latest/pom.xml | 3 +- build-monitor-acceptance/pom.xml | 29 ----- build-monitor-plugin/pom.xml | 54 +++------ pom.xml | 106 ++++++++++++++++-- 11 files changed, 145 insertions(+), 154 deletions(-) delete mode 100644 build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClientExecutor.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml index f589fcc74..e501090a7 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml +++ b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml @@ -43,6 +43,9 @@ maven-failsafe-plugin + + true + net.serenity-bdd.maven.plugins diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java index c49b5271b..50e28baba 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java @@ -1,10 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.build_monitor.model; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import java.util.List; +import java.util.stream.Collectors; public class ProjectInformation { private final String name; @@ -25,9 +24,6 @@ public List status() { @Override public String toString() { - return MoreObjects.toStringHelper(this) - .add("name", name) - .add("status", status) - .toString(); + return "ProjectInformation{name=%s, status={%s}}".format(name, status.stream().map(Object::toString).collect(Collectors.joining(", "))); } } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java index a44f78281..585caa89c 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java @@ -1,6 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.build_monitor.model; -import com.google.common.base.Splitter; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; @@ -9,6 +8,8 @@ import java.util.EnumSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.jetbrains.annotations.NotNull; import static java.lang.String.format; @@ -61,7 +62,7 @@ private static Set projectStatusClasses() { } private static List split(String spaceSeparatedItems) { - return Splitter.on(" ").splitToList(spaceSeparatedItems); + return Stream.of(spaceSeparatedItems.split("\\s+")).collect(Collectors.toList()); } private static Set setOf(List items) { diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java index 122b2b361..06f4fd5f6 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java @@ -27,10 +27,8 @@ public class JenkinsClient { private static String OS_VERSION = System.getProperty("os.version").toLowerCase(); private final JenkinsProcess process; - private final JenkinsClientExecutor executor; - public JenkinsClient(JenkinsClientExecutor executor, JenkinsProcess process) { - this.executor = executor; + public JenkinsClient(JenkinsProcess process) { this.process = process; } @@ -138,11 +136,15 @@ public void setExternalBuildResult(String projectName, String result) { private int executeGroovy(String... groovyScriptLines) { String script = Joiner.on(";\n").join(groovyScriptLines); - return executor.call("groovy", "=").execute(withInput(script), info(logger), error(logger)); + //TODO use RealJenkinsRule + //return executor.call("groovy", "=").execute(withInput(script), info(logger), error(logger)); + return -1; } private int executeCommand(String... args) { - return executor.call(args).execute(noManualInput(), info(logger), error(logger)); + //TODO use RealJenkinsRule + //return executor.call(args).execute(noManualInput(), info(logger), error(logger)); + return -1; } private InputStream noManualInput() { diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClientExecutor.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClientExecutor.java deleted file mode 100644 index 6b860af13..000000000 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClientExecutor.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.serenitybdd.integration.jenkins.client; - -import com.google.common.util.concurrent.ThreadFactoryBuilder; -import hudson.cli.CLI; -import hudson.cli.CLIConnectionFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import static java.util.Arrays.asList; - -public class JenkinsClientExecutor { - - private final URL jenkinsUrl; - private final List args; - - public JenkinsClientExecutor(URL jenkinsUrl, String... args) { - this.jenkinsUrl = jenkinsUrl; - this.args = asList(args); - } - - public JenkinsClientExecutor call(String... args) { - return new JenkinsClientExecutor(jenkinsUrl, args); - } - - public int execute() { - return execute(System.in, System.out, System.err); - } - - public int execute(InputStream input, OutputStream output, OutputStream error) { - try { - CLI connection = connectTo(jenkinsUrl); - - int result = connection.execute(args, input, output, error); - - connection.close(); - - return result; - } catch (IOException | InterruptedException e) { - throw new RuntimeException(String.format("Couldn't connect to Jenkins at '%s'", jenkinsUrl), e); - } - } - - - private CLI connectTo(URL jenkinsUrl) { - try { - return new CLIConnectionFactory() - .url(jenkinsUrl) - .executorService(jenkinsCLIExecutorService()) - .connect(); - } catch (IOException | InterruptedException e) { - throw new RuntimeException(String.format("Couldn't connect to Jenkins at '%s'", jenkinsUrl), e); - } - } - - private ExecutorService jenkinsCLIExecutorService() { - return Executors.newCachedThreadPool(new ThreadFactoryBuilder().setNameFormat("jenkins-cli-%d").build()); - } -} diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java index b68400a66..9c333738b 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java @@ -26,7 +26,16 @@ public class UpdateCenter { private final Path tempDir; private List jenkinsLTSVersions = Arrays.asList( - Version.valueOf("2.176.1"), + Version.valueOf("2.303.1"), + Version.valueOf("2.289.3"), + Version.valueOf("2.277.4"), + Version.valueOf("2.263.4"), + Version.valueOf("2.249.3"), + Version.valueOf("2.235.5"), + Version.valueOf("2.222.4"), + Version.valueOf("2.204.6"), + Version.valueOf("2.190.3"), + Version.valueOf("2.176.4"), Version.valueOf("2.164.3"), Version.valueOf("2.150.3"), Version.valueOf("2.138.4"), diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java index a3ca46f83..d8f9362df 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java @@ -4,7 +4,6 @@ import net.serenitybdd.integration.jenkins.JenkinsArtifactTransporter; import net.serenitybdd.integration.jenkins.JenkinsInstance; import net.serenitybdd.integration.jenkins.client.JenkinsClient; -import net.serenitybdd.integration.jenkins.client.JenkinsClientExecutor; import net.serenitybdd.integration.jenkins.process.JenkinsProcess; import net.serenitybdd.integration.utils.CommandLineTools; import org.junit.rules.TestRule; @@ -46,8 +45,7 @@ protected void starting(Description description) { throw new RuntimeException("Couldn't start Jenkins", e); } - JenkinsClientExecutor executor = new JenkinsClientExecutor(jenkins.url()); - jenkins.setClient(new JenkinsClient(executor, process)); + jenkins.setClient(new JenkinsClient(process)); } @Override diff --git a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml index 49d0f61ac..f38d1f3ce 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml +++ b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml @@ -15,7 +15,7 @@ - 2.107.3 + 2.303.1 @@ -42,6 +42,7 @@ org.jenkins-ci.plugins:build-monitor-acceptance-base + true diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 9bf5f51d9..18cdc23ce 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -176,13 +176,6 @@ - - maven-compiler-plugin - - 1.8 - 1.8 - - maven-failsafe-plugin @@ -240,28 +233,6 @@ - - maven-enforcer-plugin - - - display-info - - - - - org.springframework:spring-core - org.springframework:spring-beans - org.eclipse.jetty.websocket:websocket-client - org.jenkins-ci:trilead-ssh2 - commons-io:commons-io - commons-codec:commons-codec - - - - - - - diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 82e87d5a4..db6d84c94 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -56,7 +56,6 @@ npm 2.43.0 DEV - 1.32 @@ -110,13 +109,7 @@ org.jenkins-ci.modules instance-identity - 2.1 - provided - - - com.google.guava - guava - 11.0.1 + 2.2 provided @@ -124,13 +117,11 @@ org.jenkins-ci.plugins cloudbees-folder - 5.16 true org.jenkins-ci.plugins credentials - 2.1.14 true @@ -142,19 +133,16 @@ org.jenkins-ci.plugins matrix-project - 1.7.1 true org.jenkins-ci.plugins git - 3.9.0 true - org.apache.httpcomponents - httpclient - 4.5.3 + org.jenkins-ci.plugins + apache-httpcomponents-client-4-api true @@ -189,57 +177,56 @@ org.jenkins-ci.plugins.workflow - workflow-aggregator - 2.4 + workflow-cps + true + + + org.jenkins-ci.plugins.workflow + workflow-job true org.jenkins-ci.plugins.workflow workflow-step-api - 2.15 + true + + + org.jenkins-ci.plugins + pipeline-stage-step + 2.5 true org.jenkins-ci.plugins scm-api - 2.2.0 test - true org.jenkins-ci.plugins structs - 1.14 test - true org.jenkins-ci.plugins script-security - 1.39 test - true io.jenkins configuration-as-code - ${configuration-as-code.version} test - io.jenkins - configuration-as-code - ${configuration-as-code.version} + io.jenkins.configuration-as-code + test-harness test - tests junit junit - 4.12 test @@ -259,11 +246,6 @@ 2.6 test - - commons-io - commons-io - 2.4 - com.github.detro.ghostdriver phantomjsdriver @@ -349,7 +331,7 @@ org.codehaus.mojo exec-maven-plugin - 1.2.1 + 3.0.0 diff --git a/pom.xml b/pom.xml index 355c9a43b..2364a75bd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,15 +4,17 @@ 4.0.0 - 2.60.3 + 2.249.3 8 UTF-8 + 9.4.19.v20190610 org.jenkins-ci.plugins plugin - 3.50 + 4.25 + build-monitor @@ -64,6 +66,28 @@ + + io.jenkins.tools.bom + bom-2.249.x + 950.v396cb834de1e + import + pom + + + antlr + antlr + 2.7.7 + + + commons-beanutils + commons-beanutils + 1.9.4 + + + com.google.protobuf + protobuf-java + 3.11.1 + org.jdeferred jdeferred-core @@ -75,9 +99,49 @@ 1.7.19 - junit - junit - 4.12 + org.eclipse.jetty + jetty-io + ${jetty.version} + + + org.eclipse.jetty + jetty-security + ${jetty.version} + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + + + org.eclipse.jetty + jetty-util + ${jetty.version} + + + org.eclipse.jetty + jetty-webapp + ${jetty.version} + + + org.eclipse.jetty + jetty-xml + ${jetty.version} + + + org.eclipse.jetty.websocket + websocket-api + ${jetty.version} + + + org.eclipse.jetty.websocket + websocket-server + ${jetty.version} org.hamcrest @@ -88,12 +152,12 @@ org.hamcrest hamcrest-core - 2.1 + 2.2 org.json json - 20190722 + 20210307 @@ -106,6 +170,34 @@ release-candidate-maven-plugin 1.0-201603091838.01dbbbf + + maven-enforcer-plugin + + + display-info + + + + + org.eclipse.jetty:jetty-client + org.eclipse.jetty:jetty-http + org.eclipse.jetty:jetty-io + org.eclipse.jetty:jetty-security + org.eclipse.jetty:jetty-server + org.eclipse.jetty:jetty-util + org.eclipse.jetty:jetty-webapp + org.eclipse.jetty:jetty-xml + org.eclipse.jetty.websocket:websocket-api + org.eclipse.jetty.websocket:websocket-client + org.eclipse.jetty.websocket:websocket-common + org.eclipse.jetty.websocket:websocket-server + + + + + + + From 82b51dca65d57bc5f1082e7b0a482e7195c3a2d5 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 19 Sep 2021 11:18:02 -0700 Subject: [PATCH 010/152] Prefer library versions from less4j to minimize risk --- build-monitor-plugin/pom.xml | 7 +++++++ pom.xml | 10 ---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index db6d84c94..9bd683d76 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -139,6 +139,13 @@ org.jenkins-ci.plugins git true + + + + com.google.protobuf + protobuf-java + + org.jenkins-ci.plugins diff --git a/pom.xml b/pom.xml index 2364a75bd..d1c9b7585 100644 --- a/pom.xml +++ b/pom.xml @@ -78,16 +78,6 @@ antlr 2.7.7 - - commons-beanutils - commons-beanutils - 1.9.4 - - - com.google.protobuf - protobuf-java - 3.11.1 - org.jdeferred jdeferred-core From 45d3f82b10f080a3b77f4a6bd16eec1d8d00950c Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 20:45:10 +0100 Subject: [PATCH 011/152] ci: set the version number automatically --- .github/workflows/main.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 505588e28..553045c59 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,5 +21,20 @@ jobs: java-version: '8' distribution: 'adopt' cache: 'maven' + - name: Set version + run: mvn --batch-mode release-candidate:updateVersion - name: Build with Maven run: mvn --batch-mode --update-snapshots verify + - uses: actions/upload-artifact@v2 + with: + retention-days: 3 + name: artifacts + path: | + build-monitor-plugin/target/*.hpi + pom.xml + build-monitor-plugin/pom.xml + build-monitor-acceptance/pom.xml + build-monitor-acceptance/build-monitor-acceptance-base/pom.xml + build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml + build-monitor-acceptance/build-monitor-acceptance-base/target/failsafe-reports/*-output.txt + build-monitor-acceptance/build-monitor-acceptance-latest/target/failsafe-reports/*-output.txt From 694b855b74b8ae8d49b16f57bef70eba2c642d85 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 20:54:32 +0100 Subject: [PATCH 012/152] Read new version into env --- .github/workflows/main.yaml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 553045c59..3ed2d8bcb 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,8 +21,12 @@ jobs: java-version: '8' distribution: 'adopt' cache: 'maven' - - name: Set version - run: mvn --batch-mode release-candidate:updateVersion + - name: Set version (master only) +# if: github.ref == 'refs/heads/master' + run: | + mvn --batch-mode release-candidate:updateVersion + cat build-monitor-plugin/target/classes/build-monitor.properties >> $GITHUB_ENV + echo $version - name: Build with Maven run: mvn --batch-mode --update-snapshots verify - uses: actions/upload-artifact@v2 @@ -38,3 +42,9 @@ jobs: build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml build-monitor-acceptance/build-monitor-acceptance-base/target/failsafe-reports/*-output.txt build-monitor-acceptance/build-monitor-acceptance-latest/target/failsafe-reports/*-output.txt +# - name: Release (master only +# if: github.ref == 'refs/heads/master' +# run: | +# git checkout -b release-${version} +# git commit -a -m \"Release candidate v${version}\" +# git push origin release-${version} From 6e5eefd148faa46618fc129601598eea6cb68840 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 20:58:00 +0100 Subject: [PATCH 013/152] print new version in the log --- .github/workflows/main.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 3ed2d8bcb..9ca15065e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -23,10 +23,13 @@ jobs: cache: 'maven' - name: Set version (master only) # if: github.ref == 'refs/heads/master' - run: | - mvn --batch-mode release-candidate:updateVersion - cat build-monitor-plugin/target/classes/build-monitor.properties >> $GITHUB_ENV - echo $version + run: mvn --batch-mode release-candidate:updateVersion + - name: Read $version (master only) +# if: github.ref == 'refs/heads/master' + run: cat build-monitor-plugin/target/classes/build-monitor.properties >> $GITHUB_ENV + - name: Print $version (master only) + # if: github.ref == 'refs/heads/master' + run: echo $version - name: Build with Maven run: mvn --batch-mode --update-snapshots verify - uses: actions/upload-artifact@v2 From 1152c0f7641b96a0ba0cfed4096f33f59ffc8ed0 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 21:00:20 +0100 Subject: [PATCH 014/152] ci: corrected the order of steps in the pipeline --- .github/workflows/main.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9ca15065e..9f3eed76c 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -24,14 +24,14 @@ jobs: - name: Set version (master only) # if: github.ref == 'refs/heads/master' run: mvn --batch-mode release-candidate:updateVersion + - name: Build with Maven + run: mvn --batch-mode --update-snapshots verify - name: Read $version (master only) -# if: github.ref == 'refs/heads/master' + # if: github.ref == 'refs/heads/master' run: cat build-monitor-plugin/target/classes/build-monitor.properties >> $GITHUB_ENV - name: Print $version (master only) # if: github.ref == 'refs/heads/master' run: echo $version - - name: Build with Maven - run: mvn --batch-mode --update-snapshots verify - uses: actions/upload-artifact@v2 with: retention-days: 3 From ede5847cd0a593c8d722b2cee9939f31fba98f16 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 21:05:40 +0100 Subject: [PATCH 015/152] ci: automatically create a release branch --- .github/workflows/main.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9f3eed76c..197d5de31 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -45,9 +45,9 @@ jobs: build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml build-monitor-acceptance/build-monitor-acceptance-base/target/failsafe-reports/*-output.txt build-monitor-acceptance/build-monitor-acceptance-latest/target/failsafe-reports/*-output.txt -# - name: Release (master only + - name: Release (master only) # if: github.ref == 'refs/heads/master' -# run: | -# git checkout -b release-${version} -# git commit -a -m \"Release candidate v${version}\" -# git push origin release-${version} + run: | + git checkout -b "release-${version}" + git commit -a -m "Release candidate v$version" + git push origin "release-$version" From a7505ad7a4e6556edb9e206d471cb85bd08ca694 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 21:18:14 +0100 Subject: [PATCH 016/152] ci: configure git for automated release branch creation --- .github/actions/setup-git/action.yml | 25 +++++++++++++++++++++++++ .github/workflows/main.yaml | 5 +++++ 2 files changed, 30 insertions(+) create mode 100644 .github/actions/setup-git/action.yml diff --git a/.github/actions/setup-git/action.yml b/.github/actions/setup-git/action.yml new file mode 100644 index 000000000..361371c11 --- /dev/null +++ b/.github/actions/setup-git/action.yml @@ -0,0 +1,25 @@ +inputs: + github_token: + description: 'GitHub Token' + required: true + git_user_email: + description: 'Git user email' + required: true + git_username: + description: 'Git username' + required: true + npm_token: + description: 'NPM Token' + required: true + +runs: + using: 'composite' + steps: + + - name: Configure Lerna + shell: bash + run: | + git config --global user.email ${{ inputs.git_user_email }} + git config --global user.name ${{ inputs.git_username }} + git config --global user.password ${{ inputs.github_token }} + git config --global push.default simple diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 197d5de31..ec5a2ba0e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,6 +21,11 @@ jobs: java-version: '8' distribution: 'adopt' cache: 'maven' + - uses: ./.github/actions/setup-lerna + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + git_user_email: ${{ secrets.RELEASE_GH_EMAIL }} + git_username: ${{ secrets.RELEASE_GH_USERNAME }} - name: Set version (master only) # if: github.ref == 'refs/heads/master' run: mvn --batch-mode release-candidate:updateVersion From 846155700b34e2d2740253bb51ac70da860c54a4 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 21:19:03 +0100 Subject: [PATCH 017/152] ci: corrected a typo --- .github/actions/setup-git/action.yml | 2 +- .github/workflows/main.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-git/action.yml b/.github/actions/setup-git/action.yml index 361371c11..446035d96 100644 --- a/.github/actions/setup-git/action.yml +++ b/.github/actions/setup-git/action.yml @@ -16,7 +16,7 @@ runs: using: 'composite' steps: - - name: Configure Lerna + - name: Configure Git shell: bash run: | git config --global user.email ${{ inputs.git_user_email }} diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ec5a2ba0e..560998dab 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,7 +21,7 @@ jobs: java-version: '8' distribution: 'adopt' cache: 'maven' - - uses: ./.github/actions/setup-lerna + - uses: ./.github/actions/setup-git with: github_token: ${{ secrets.GITHUB_TOKEN }} git_user_email: ${{ secrets.RELEASE_GH_EMAIL }} From aca07fecf05659ea8968fd2944b00a981fa0f0cd Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 21:26:04 +0100 Subject: [PATCH 018/152] ci: corrected git checkout --- .github/workflows/main.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 560998dab..215677dfc 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -15,6 +15,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 + with: + fetch-depth: 0 - name: Setup Java uses: actions/setup-java@v2 with: From d17e5535d53a79594ae061e2a9756a0f34ad0a1b Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Sun, 26 Sep 2021 21:39:45 +0100 Subject: [PATCH 019/152] Prepeared for the release --- .github/workflows/main.yaml | 20 ++++++++++++------- .../build-monitor-acceptance-base/pom.xml | 2 +- .../build-monitor-acceptance-latest/pom.xml | 2 +- build-monitor-acceptance/pom.xml | 2 +- build-monitor-plugin/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 215677dfc..8c8090de6 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -29,16 +29,13 @@ jobs: git_user_email: ${{ secrets.RELEASE_GH_EMAIL }} git_username: ${{ secrets.RELEASE_GH_USERNAME }} - name: Set version (master only) -# if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' run: mvn --batch-mode release-candidate:updateVersion - name: Build with Maven run: mvn --batch-mode --update-snapshots verify - name: Read $version (master only) - # if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' run: cat build-monitor-plugin/target/classes/build-monitor.properties >> $GITHUB_ENV - - name: Print $version (master only) - # if: github.ref == 'refs/heads/master' - run: echo $version - uses: actions/upload-artifact@v2 with: retention-days: 3 @@ -52,9 +49,18 @@ jobs: build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml build-monitor-acceptance/build-monitor-acceptance-base/target/failsafe-reports/*-output.txt build-monitor-acceptance/build-monitor-acceptance-latest/target/failsafe-reports/*-output.txt - - name: Release (master only) -# if: github.ref == 'refs/heads/master' + - name: Create Release Branch (master only) + if: github.ref == 'refs/heads/master' run: | git checkout -b "release-${version}" git commit -a -m "Release candidate v$version" git push origin "release-$version" +# - name: Publish (master only) +# if: github.ref == 'refs/heads/master' +# run: | +# mvn --batch-mode deploy:deploy-file -DpomFile=pom.xml \ +# -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ +# -DrepositoryId=repo.jenkins-ci.org \ +# -Durl=https://repo.jenkins-ci.org/public/ +# -Dtoken=... + diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml index e501090a7..fa93dce7b 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml +++ b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci.plugins build-monitor-acceptance - 1.12-SNAPSHOT + 1.13-SNAPSHOT build-monitor-acceptance-base diff --git a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml index f38d1f3ce..cf2247ebf 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml +++ b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml @@ -5,7 +5,7 @@ build-monitor-acceptance org.jenkins-ci.plugins - 1.12-SNAPSHOT + 1.13-SNAPSHOT 4.0.0 diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 18cdc23ce..071fe75b0 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci.plugins build-monitor - 1.12-SNAPSHOT + 1.13-SNAPSHOT ../pom.xml diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 9bd683d76..eee34d606 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci.plugins build-monitor - 1.12-SNAPSHOT + 1.13-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index d1c9b7585..cb019396b 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ build-monitor - 1.12-SNAPSHOT + 1.13-SNAPSHOT pom Build Monitor From d487c6fd5ed137a1d6d4e6f036cff0f11628d118 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 22:16:55 +0100 Subject: [PATCH 020/152] configure release profile --- .github/workflows/main.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 8c8090de6..b779ff47f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -55,6 +55,16 @@ jobs: git checkout -b "release-${version}" git commit -a -m "Release candidate v$version" git push origin "release-$version" + - name: Setup https://repo.jenkins-ci.org/ + # if: github.ref == 'refs/heads/master' + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: 'maven' + server-id: 'repo.jenkins-ci.org' + server-username: JENKINS_REPO_USERNAME + server-password: JENKINS_REPO_TOKEN # - name: Publish (master only) # if: github.ref == 'refs/heads/master' # run: | @@ -62,5 +72,4 @@ jobs: # -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ # -DrepositoryId=repo.jenkins-ci.org \ # -Durl=https://repo.jenkins-ci.org/public/ -# -Dtoken=... From 01dcf2c998b8b461c64b00db10debb4c287a5094 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 22:21:10 +0100 Subject: [PATCH 021/152] Added publish step --- .github/workflows/main.yaml | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b779ff47f..0c7f155cd 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -17,25 +17,31 @@ jobs: uses: actions/checkout@v2 with: fetch-depth: 0 + - name: Setup Java uses: actions/setup-java@v2 with: java-version: '8' distribution: 'adopt' cache: 'maven' + - uses: ./.github/actions/setup-git with: github_token: ${{ secrets.GITHUB_TOKEN }} git_user_email: ${{ secrets.RELEASE_GH_EMAIL }} git_username: ${{ secrets.RELEASE_GH_USERNAME }} + - name: Set version (master only) if: github.ref == 'refs/heads/master' run: mvn --batch-mode release-candidate:updateVersion + - name: Build with Maven run: mvn --batch-mode --update-snapshots verify + - name: Read $version (master only) if: github.ref == 'refs/heads/master' run: cat build-monitor-plugin/target/classes/build-monitor.properties >> $GITHUB_ENV + - uses: actions/upload-artifact@v2 with: retention-days: 3 @@ -49,14 +55,16 @@ jobs: build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml build-monitor-acceptance/build-monitor-acceptance-base/target/failsafe-reports/*-output.txt build-monitor-acceptance/build-monitor-acceptance-latest/target/failsafe-reports/*-output.txt + - name: Create Release Branch (master only) if: github.ref == 'refs/heads/master' run: | git checkout -b "release-${version}" git commit -a -m "Release candidate v$version" git push origin "release-$version" - - name: Setup https://repo.jenkins-ci.org/ - # if: github.ref == 'refs/heads/master' + + - name: Setup https://repo.jenkins-ci.org/ (master only) + if: github.ref == 'refs/heads/master' uses: actions/setup-java@v2 with: java-version: '8' @@ -65,11 +73,12 @@ jobs: server-id: 'repo.jenkins-ci.org' server-username: JENKINS_REPO_USERNAME server-password: JENKINS_REPO_TOKEN -# - name: Publish (master only) -# if: github.ref == 'refs/heads/master' -# run: | -# mvn --batch-mode deploy:deploy-file -DpomFile=pom.xml \ -# -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -# -DrepositoryId=repo.jenkins-ci.org \ -# -Durl=https://repo.jenkins-ci.org/public/ + + - name: Publish (master only) + if: github.ref == 'refs/heads/master' + run: | + mvn --batch-mode deploy:deploy-file -DpomFile=pom.xml \ + -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ + -DrepositoryId=repo.jenkins-ci.org \ + -Durl=https://repo.jenkins-ci.org/public/ From a8def3cb915c3a45bfc8ac605082f3f796c0a79c Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 22:31:17 +0100 Subject: [PATCH 022/152] Corrected release config --- .github/workflows/main.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 0c7f155cd..dc68c61be 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -71,8 +71,8 @@ jobs: distribution: 'adopt' cache: 'maven' server-id: 'repo.jenkins-ci.org' - server-username: JENKINS_REPO_USERNAME - server-password: JENKINS_REPO_TOKEN + server-username: ${{ secrets.JENKINS_REPO_USERNAME }} + server-password: ${{ secrets.JENKINS_REPO_TOKEN }} - name: Publish (master only) if: github.ref == 'refs/heads/master' From abd00a5654861fcc417444f079d6359b3cd84587 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 22:36:31 +0100 Subject: [PATCH 023/152] Corrected registry url --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index dc68c61be..b994fabd0 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -80,5 +80,5 @@ jobs: mvn --batch-mode deploy:deploy-file -DpomFile=pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ - -Durl=https://repo.jenkins-ci.org/public/ + -Durl=https://repo.jenkins-ci.org/artifactory/releases/ From eb310f6e4a7b62f5be446b5552c3d41c517a0027 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 22:45:55 +0100 Subject: [PATCH 024/152] Corrected path to POM --- .github/workflows/main.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b994fabd0..fea29ce18 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -77,8 +77,7 @@ jobs: - name: Publish (master only) if: github.ref == 'refs/heads/master' run: | - mvn --batch-mode deploy:deploy-file -DpomFile=pom.xml \ + mvn --batch-mode deploy:deploy-file -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ -Durl=https://repo.jenkins-ci.org/artifactory/releases/ - From e7f4513bd5103d1d943365b181566dbb0fd2b2e7 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 23:02:25 +0100 Subject: [PATCH 025/152] Corrected registry url --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index fea29ce18..f2d542c5f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -80,4 +80,4 @@ jobs: mvn --batch-mode deploy:deploy-file -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ - -Durl=https://repo.jenkins-ci.org/artifactory/releases/ + -Durl=https://repo.jenkins-ci.org/artifactory/public/ From 1b22743bafcd086a9c1e698e63d9040777a75de8 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Thu, 30 Sep 2021 23:10:21 +0100 Subject: [PATCH 026/152] Corrected the publish command --- .github/workflows/main.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index f2d542c5f..a70a84bea 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -63,7 +63,7 @@ jobs: git commit -a -m "Release candidate v$version" git push origin "release-$version" - - name: Setup https://repo.jenkins-ci.org/ (master only) + - name: Setup repo.jenkins-ci.org (master only) if: github.ref == 'refs/heads/master' uses: actions/setup-java@v2 with: @@ -80,4 +80,5 @@ jobs: mvn --batch-mode deploy:deploy-file -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ - -Durl=https://repo.jenkins-ci.org/artifactory/public/ + -Durl=https://repo.jenkins-ci.org/artifactory/releases/ \ + -DrepositoryId=releases From fec7bfe40a5351dd73d381733b48097abced3460 Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Fri, 1 Oct 2021 07:56:42 +0100 Subject: [PATCH 027/152] Correct distribution management url --- build-monitor-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index eee34d606..8f4116dba 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -90,7 +90,7 @@ maven.jenkins-ci.org - http://maven.jenkins-ci.org:8081/content/repositories/releases/ + https://repo.jenkins-ci.org/releases/ From e37d7779c893ce8465d87da2f9966322f776e02d Mon Sep 17 00:00:00 2001 From: Tim Jacomb <21194782+timja@users.noreply.github.com> Date: Fri, 1 Oct 2021 07:57:50 +0100 Subject: [PATCH 028/152] Update main.yaml --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index a70a84bea..14ea67bd1 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -80,5 +80,5 @@ jobs: mvn --batch-mode deploy:deploy-file -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ - -Durl=https://repo.jenkins-ci.org/artifactory/releases/ \ + -Durl=https://repo.jenkins-ci.org/releases/ \ -DrepositoryId=releases From 30c2311e452fb331c813a0313b5321acc7071056 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 10:56:44 +0100 Subject: [PATCH 029/152] Removed the unused travis config --- .github/workflows/main.yaml | 4 +++- .travis.yml | 28 ---------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 .travis.yml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index a70a84bea..f83ce61b5 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -25,7 +25,9 @@ jobs: distribution: 'adopt' cache: 'maven' - - uses: ./.github/actions/setup-git + - name: Setup git (master only) + uses: ./.github/actions/setup-git + if: github.ref == 'refs/heads/master' with: github_token: ${{ secrets.GITHUB_TOKEN }} git_user_email: ${{ secrets.RELEASE_GH_EMAIL }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f7917699b..000000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -# VM overview: https://docs.travis-ci.com/user/reference/overview/ - -# don't build tags, it's redundant -if: tag IS blank - -language: java -jdk: openjdk8 -sudo: false -install: mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn install -DskipTests - -cache: - directories: - - $HOME/.m2 - -addons: - chrome: stable - apt: - packages: - - chromium-chromedriver - -services: - - xvfb - -env: - - MAVEN_OPTS=-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn - -script: - - mvn -B clean verify failsafe:verify From f1ba50a178d7cb3b0f111446aec51aff1586e5f5 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 10:56:44 +0100 Subject: [PATCH 030/152] Removed the unused travis config --- .github/workflows/main.yaml | 4 +++- .travis.yml | 28 ---------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 .travis.yml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 14ea67bd1..84c2cdac6 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -25,7 +25,9 @@ jobs: distribution: 'adopt' cache: 'maven' - - uses: ./.github/actions/setup-git + - name: Setup git (master only) + uses: ./.github/actions/setup-git + if: github.ref == 'refs/heads/master' with: github_token: ${{ secrets.GITHUB_TOKEN }} git_user_email: ${{ secrets.RELEASE_GH_EMAIL }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f7917699b..000000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -# VM overview: https://docs.travis-ci.com/user/reference/overview/ - -# don't build tags, it's redundant -if: tag IS blank - -language: java -jdk: openjdk8 -sudo: false -install: mvn -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn install -DskipTests - -cache: - directories: - - $HOME/.m2 - -addons: - chrome: stable - apt: - packages: - - chromium-chromedriver - -services: - - xvfb - -env: - - MAVEN_OPTS=-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn - -script: - - mvn -B clean verify failsafe:verify From 09441c2e548c53d71ef66b985aba7b75d678e277 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 12:07:50 +0100 Subject: [PATCH 031/152] Corrected release script --- .github/workflows/main.yaml | 3 +-- pom.xml | 23 +++++++---------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 84c2cdac6..7a8e8c2d9 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -82,5 +82,4 @@ jobs: mvn --batch-mode deploy:deploy-file -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ - -Durl=https://repo.jenkins-ci.org/releases/ \ - -DrepositoryId=releases + -Durl=https://repo.jenkins-ci.org/releases/ diff --git a/pom.xml b/pom.xml index cb019396b..a8dbe95b2 100644 --- a/pom.xml +++ b/pom.xml @@ -35,30 +35,21 @@ repo.jenkins-ci.org https://repo.jenkins-ci.org/public/ - - - false - - central - bintray - https://jcenter.bintray.com - repo.jenkins-ci.org https://repo.jenkins-ci.org/public/ - - - false - - central - bintray-plugins - https://jcenter.bintray.com - + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/releases + + + build-monitor-plugin build-monitor-acceptance From d2064f7a90f3763ff06bf50048544140b2229e77 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 12:17:29 +0100 Subject: [PATCH 032/152] Debug maven release process --- .github/workflows/main.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 7a8e8c2d9..983e4d2ba 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -76,6 +76,9 @@ jobs: server-username: ${{ secrets.JENKINS_REPO_USERNAME }} server-password: ${{ secrets.JENKINS_REPO_TOKEN }} + - name: Debug settings.xml + run: cat /home/runner/.m2/settings.xml + - name: Publish (master only) if: github.ref == 'refs/heads/master' run: | From aabe75339989c8586319c7293722212ec7f9ee1e Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 12:50:40 +0100 Subject: [PATCH 033/152] Corrected config --- .github/workflows/main.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 983e4d2ba..c0fe9b479 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -73,8 +73,8 @@ jobs: distribution: 'adopt' cache: 'maven' server-id: 'repo.jenkins-ci.org' - server-username: ${{ secrets.JENKINS_REPO_USERNAME }} - server-password: ${{ secrets.JENKINS_REPO_TOKEN }} + server-username: JENKINS_REPO_USERNAME + server-password: JENKINS_REPO_TOKEN - name: Debug settings.xml run: cat /home/runner/.m2/settings.xml From f4fc9caa8d5eb117bf80294a3f93cdd7cbc04315 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 13:16:57 +0100 Subject: [PATCH 034/152] Set path to settings --- .github/workflows/main.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index c0fe9b479..3947d7459 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -76,13 +76,11 @@ jobs: server-username: JENKINS_REPO_USERNAME server-password: JENKINS_REPO_TOKEN - - name: Debug settings.xml - run: cat /home/runner/.m2/settings.xml - - name: Publish (master only) if: github.ref == 'refs/heads/master' run: | - mvn --batch-mode deploy:deploy-file -DpomFile=build-monitor-plugin/pom.xml \ + mvn --batch-mode deploy:deploy-file --settings /home/runner/.m2/settings.xml \ + -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ -Durl=https://repo.jenkins-ci.org/releases/ From 098711eacb0a043955f260470f766251c57358c0 Mon Sep 17 00:00:00 2001 From: Jan Molak <1089173+jan-molak@users.noreply.github.com> Date: Fri, 1 Oct 2021 13:22:36 +0100 Subject: [PATCH 035/152] Ensure env variables are passed to the release script --- .github/workflows/main.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 3947d7459..ddb8bd91d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -78,8 +78,11 @@ jobs: - name: Publish (master only) if: github.ref == 'refs/heads/master' + env: + JENKINS_REPO_USERNAME: ${{ secrets.JENKINS_REPO_USERNAME }} + JENKINS_REPO_TOKEN: ${{ secrets.JENKINS_REPO_TOKEN }} run: | - mvn --batch-mode deploy:deploy-file --settings /home/runner/.m2/settings.xml \ + mvn --batch-mode deploy:deploy-file \ -DpomFile=build-monitor-plugin/pom.xml \ -Dfile=build-monitor-plugin/target/build-monitor-plugin.hpi \ -DrepositoryId=repo.jenkins-ci.org \ From 27cee3c3c3c42df154596faf7000eeef671a638b Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Wed, 17 Nov 2021 23:22:57 -0500 Subject: [PATCH 036/152] fix the acceptance tests make sure it runs on windows as well --- .gitignore | 1 + .../build-monitor-acceptance-base/pom.xml | 6 -- .../jenkins/JenkinsArtifactTransporter.java | 2 +- .../jenkins/client/JenkinsClient.java | 90 ++++++++++--------- .../jenkins/environment/UpdateCenter.java | 20 +---- .../rules/ManageJenkinsServer.java | 6 +- .../jenkins/process/JenkinsLogWatcher.java | 5 +- .../user_interface/JenkinsHomePage.java | 2 +- .../jenkins/user_interface/LogInForm.java | 3 +- .../user_interface/navigation/SidePanel.java | 2 +- ...ractBase.java => ShouldDisplayBadges.java} | 6 +- .../ShouldDisplayBadgesWithBadgePlugin.java | 13 --- ...isplayBadgesWithGroovyPostbuildPlugin.java | 27 ------ .../environment/UpdateCenterUnitTest.java | 11 ++- .../build-monitor-acceptance-latest/pom.xml | 1 - build-monitor-acceptance/pom.xml | 9 +- build-monitor-plugin/pom.xml | 64 ++++++------- .../plugin/assetbundler/PathToAssetTest.java | 27 +++++- .../src/test/resources/karma.conf.ci.js | 12 +++ 19 files changed, 141 insertions(+), 166 deletions(-) rename build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/{ShouldDisplayBadgesAbstractBase.java => ShouldDisplayBadges.java} (94%) delete mode 100644 build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithBadgePlugin.java delete mode 100644 build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithGroovyPostbuildPlugin.java create mode 100644 build-monitor-plugin/src/test/resources/karma.conf.ci.js diff --git a/.gitignore b/.gitignore index 5072f043c..1c7574520 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ target work +node node_modules use-node diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml index fa93dce7b..dd3088647 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml +++ b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml @@ -41,12 +41,6 @@ - - maven-failsafe-plugin - - true - - net.serenity-bdd.maven.plugins serenity-maven-plugin diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java index e91c0064c..28c441935 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java @@ -10,7 +10,7 @@ public class JenkinsArtifactTransporter { public static ArtifactTransporter create() { return new ArtifactTransporter( pathToLocalMavenRepository(), - RemoteRepository.at("http://repo.jenkins-ci.org/public/") + RemoteRepository.at("https://repo.jenkins-ci.org/public/") ); } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java index 06f4fd5f6..751cf7ff5 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java @@ -1,19 +1,19 @@ package net.serenitybdd.integration.jenkins.client; import com.google.common.base.Joiner; -import net.serenitybdd.integration.jenkins.logging.ErrorWitness; -import net.serenitybdd.integration.jenkins.logging.InfoWitness; -import net.serenitybdd.integration.jenkins.logging.LoggerOutputStream; + +import hudson.cli.CLI; import net.serenitybdd.integration.jenkins.process.JenkinsProcess; import org.jdeferred.Promise; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; -import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; +import java.net.URL; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; @@ -27,9 +27,11 @@ public class JenkinsClient { private static String OS_VERSION = System.getProperty("os.version").toLowerCase(); private final JenkinsProcess process; + private final URL jenkinsUrl; - public JenkinsClient(JenkinsProcess process) { + public JenkinsClient(URL jenkinsUrl, JenkinsProcess process) { this.process = process; + this.jenkinsUrl = jenkinsUrl; } // user accounts @@ -41,17 +43,15 @@ public void registerAccount(String username, String password) { Promise promise = process.promiseWhen("defining beans \\[authenticationManager\\]"); - executeGroovy( - "def instance = jenkins.model.Jenkins.getInstance()", - "def usersCanRegister = true", - "def realm = new hudson.security.HudsonPrivateSecurityRealm(usersCanRegister)", - format("realm.createAccount(\"%s\",\"%s\")", username, password), - "instance.setSecurityRealm(realm)", - "instance.save()" - ); - try { - promise.waitSafely(Max_Wait_Time); + executeGroovy(promise, + "def instance = jenkins.model.Jenkins.getInstance()", + "def usersCanRegister = true", + "def realm = new hudson.security.HudsonPrivateSecurityRealm(usersCanRegister)", + format("realm.createAccount(\"%s\",\"%s\")", username, password), + "instance.setSecurityRealm(realm)", + "instance.save()" + ); logger.info("Account for '{}' created", username); } catch (InterruptedException e) { throw new RuntimeException("Couldn't enable Jenkins Security", e); @@ -63,15 +63,13 @@ public void populateUpdateCenterCaches() { Promise promise = process.promiseWhen("Obtained the latest update center data file for UpdateSource default"); - executeGroovy( - "def ucUrl = new URL('http://updates.jenkins-ci.org/update-center.json')", - "def json = hudson.model.DownloadService.loadJSON(ucUrl)", - "def site = jenkins.model.Jenkins.instance.updateCenter.getById('default')", - "site.updateData(json, false)" - ); - try { - promise.waitSafely(Max_Wait_Time); + executeGroovy(promise, + "def ucUrl = new URL('http://updates.jenkins-ci.org/update-center.json')", + "def json = hudson.model.DownloadService.loadJSON(ucUrl)", + "def site = jenkins.model.Jenkins.instance.updateCenter.getById('default')", + "site.updateData(json, false)" + ); logger.info("UPDATE CENTER RELOADED"); } catch (InterruptedException e) { throw new RuntimeException("Couldn't update the Update Center caches.", e); @@ -113,7 +111,13 @@ private void hardRestart() { } } - private void safeShutdown() throws Exception { + public void shutdown() { + process.getJenkinsLogWatcher().close(); + executeCommand("shutdown"); + process.stop(); + } + + public void safeShutdown() { process.getJenkinsLogWatcher().close(); executeCommand("safe-shutdown"); process.stop(); @@ -133,33 +137,39 @@ public void setExternalBuildResult(String projectName, String result) { ); } - private int executeGroovy(String... groovyScriptLines) { + private synchronized int executeGroovy(Promise promise, String... groovyScriptLines) throws InterruptedException { String script = Joiner.on(";\n").join(groovyScriptLines); //TODO use RealJenkinsRule //return executor.call("groovy", "=").execute(withInput(script), info(logger), error(logger)); - return -1; + + InputStream stdIn = System.in; + try { + System.setIn(withInput(script)); + int result = executeCommand("groovy", "="); + + promise.waitSafely(Max_Wait_Time); + + return result; + } finally { + System.setIn(stdIn); + } } private int executeCommand(String... args) { //TODO use RealJenkinsRule //return executor.call(args).execute(noManualInput(), info(logger), error(logger)); - return -1; - } - - private InputStream noManualInput() { - return withInput(""); + try { + List cliArgs = new ArrayList(Arrays.asList("-s", jenkinsUrl.toString(), "-http")); + cliArgs.addAll(Arrays.asList(args)); + + return CLI._main(cliArgs.toArray(new String[cliArgs.size()])); + } catch (Exception e) { + throw new RuntimeException(String.format("Couldn't connect to Jenkins at '%s'", jenkinsUrl), e); + } } private InputStream withInput(String text) { return new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8)); } - - private OutputStream info(Logger logger) { - return new LoggerOutputStream(new InfoWitness(logger)); - } - - private OutputStream error(Logger logger) { - return new LoggerOutputStream(new ErrorWitness(logger)); - } } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java index 9c333738b..565ef9d68 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java @@ -22,7 +22,7 @@ public class UpdateCenter { private static final String Update_Center_URL_Template // = "http://updates.jenkins-ci.org/stable-%s/update-center.json"; - = "https://ftp-chi.osuosl.org/pub/jenkins/updates/stable-%s/update-center.json"; + = "https://updates.jenkins.io/update-center.json?version=%s"; private final Path tempDir; private List jenkinsLTSVersions = Arrays.asList( @@ -30,21 +30,7 @@ public class UpdateCenter { Version.valueOf("2.289.3"), Version.valueOf("2.277.4"), Version.valueOf("2.263.4"), - Version.valueOf("2.249.3"), - Version.valueOf("2.235.5"), - Version.valueOf("2.222.4"), - Version.valueOf("2.204.6"), - Version.valueOf("2.190.3"), - Version.valueOf("2.176.4"), - Version.valueOf("2.164.3"), - Version.valueOf("2.150.3"), - Version.valueOf("2.138.4"), - Version.valueOf("2.121.3"), - Version.valueOf("2.107.3"), - Version.valueOf("2.89.0"), - Version.valueOf("2.73.0"), - Version.valueOf("2.60.0"), - Version.valueOf("2.46.0") + Version.valueOf("2.249.3") ); @@ -86,7 +72,7 @@ String getUpdateVersionToUse(String jenkinsVersionString) { } } assert versionToUse != null; //versionToUse should never be null since we already made sure jenkinsVersion isn't lower than the lowest LTS. - return versionToUse.getMajorVersion() + "." + versionToUse.getMinorVersion(); + return versionToUse.getNormalVersion(); } private String stripJSONPEnvelope(Path jsonp) throws IOException { diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java index d8f9362df..6f61cc453 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java @@ -34,6 +34,7 @@ public ManageJenkinsServer(Path javaExecutable, ArtifactTransporter artifactTran public TestRule applyTo(final JenkinsInstance jenkins) { return new TestWatcher() { private JenkinsProcess process; + private JenkinsClient client; @Override protected void starting(Description description) { @@ -45,12 +46,13 @@ protected void starting(Description description) { throw new RuntimeException("Couldn't start Jenkins", e); } - jenkins.setClient(new JenkinsClient(process)); + client = new JenkinsClient(jenkins.url(), process); + jenkins.setClient(client); } @Override protected void finished(Description description) { - process.stop(); + client.safeShutdown(); } }; } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java index 9f5d947cd..dc4741fdf 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java @@ -31,9 +31,8 @@ public JenkinsLogWatcher(InputStream jenkinsOutput) { } @Override - public void close() throws Exception { + public void close() { stop = true; - jenkinsOutput.close(); watchers.clear(); } @@ -41,7 +40,7 @@ public void close() throws Exception { public void run() { try (BufferedReader reader = new BufferedReader(new InputStreamReader(jenkinsOutput, Charset.forName("UTF-8")))) { String line; - while ((line = reader.readLine()) != null) { + while ((line = reader.readLine()) != null && !stop) { Log.debug(line); diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java index e6f5dda6e..b14f1fb05 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java @@ -4,7 +4,7 @@ import net.serenitybdd.screenplay.targets.Target; public class JenkinsHomePage { - public static final Target New_View_link = Link.called("+"); + public static final Target New_View_link = Link.called("New View"); public static final Target Schedule_A_Build = Target.the("the 'build now' link").locatedBy("//table[@id='projectstatus']//tr[td/a[.='{0}']]/td/a[contains(@href, '/build')]"); public static final Target Log_In_Link = Link.called("log in"); } \ No newline at end of file diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java index 7ebb14dee..000aab455 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java @@ -1,10 +1,9 @@ package net.serenitybdd.screenplay.jenkins.user_interface; -import net.serenitybdd.screenplay.jenkins.targets.Button; import net.serenitybdd.screenplay.targets.Target; public class LogInForm { public static final Target Username_Field = Target.the("the 'User' field").locatedBy("//input[@name='j_username']"); public static final Target Password_Field = Target.the("the 'Password' field").locatedBy("//input[@name='j_password']"); - public static final Target Log_In_Buttton = Button.called("log in"); + public static final Target Log_In_Buttton = Target.the("the 'Sign In' button").locatedBy("//input[@type='submit']"); } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java index a2e4ab146..c05daba50 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java @@ -5,5 +5,5 @@ public class SidePanel { public static final Target New_Item_Link = Link.to("New Item"); - public static final Target Back_to_Dashboard = Target.the("Back to Dashboard").locatedBy("//*[@id=\"tasks\"]/div/a[@href='/']"); + public static final Target Back_to_Dashboard = Target.the("Back to Dashboard").locatedBy("//*[@id=\"tasks\"]//a[@href='/']"); } \ No newline at end of file diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesAbstractBase.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadges.java similarity index 94% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesAbstractBase.java rename to build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadges.java index 0da1de33e..8ef528d75 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesAbstractBase.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadges.java @@ -29,18 +29,16 @@ import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; @RunWith(SerenityRunner.class) -public abstract class ShouldDisplayBadgesAbstractBase { +public class ShouldDisplayBadges { Actor paul = Actor.named("Paul"); @Managed public WebDriver browser; @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter(getPlugins()) + InstallPlugins.fromUpdateCenter("workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild") ).create(); - abstract String[] getPlugins(); - @Before public void actorCanBrowseTheWeb() { paul.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithBadgePlugin.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithBadgePlugin.java deleted file mode 100644 index fd4f4ec1a..000000000 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithBadgePlugin.java +++ /dev/null @@ -1,13 +0,0 @@ -package features; - -import net.serenitybdd.junit.runners.SerenityRunner; -import org.junit.runner.RunWith; - -@RunWith(SerenityRunner.class) -public class ShouldDisplayBadgesWithBadgePlugin extends ShouldDisplayBadgesAbstractBase { - - @Override - String[] getPlugins() { - return new String[] {"workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild"}; - } -} diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithGroovyPostbuildPlugin.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithGroovyPostbuildPlugin.java deleted file mode 100644 index 7c59b3122..000000000 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadgesWithGroovyPostbuildPlugin.java +++ /dev/null @@ -1,27 +0,0 @@ -package features; - -import com.github.zafarkhaja.semver.Version; -import net.serenitybdd.junit.runners.SerenityRunner; -import org.junit.Assert; -import org.junit.Assume; -import org.junit.BeforeClass; -import org.junit.runner.RunWith; - -@RunWith(SerenityRunner.class) -public class ShouldDisplayBadgesWithGroovyPostbuildPlugin extends ShouldDisplayBadgesAbstractBase { - - @BeforeClass - public static void ensureJenkinsVersion() { - String jenkinsVersionString = System.getenv("JENKINS_VERSION"); - if (jenkinsVersionString == null) { - Assert.fail("Jenkins version needs to be set as env JENKINS_VERSION"); - } - Version jenkinsVersion = Version.valueOf(jenkinsVersionString); - Assume.assumeTrue("Jenkins version too new", jenkinsVersion.lessThanOrEqualTo(Version.valueOf("2.46.3"))); - } - - @Override - String[] getPlugins() { - return new String[] {"workflow-aggregator", "buildtriggerbadge", "groovy-postbuild"}; - } -} diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java index 0dec4c12b..89f0eae82 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java @@ -14,11 +14,10 @@ public void getUpdateVersionToUseTooLow() { @Test public void getUpdateVersionToUse() { - Assert.assertEquals("2.46", updateCenter.getUpdateVersionToUse("2.46.0")); - Assert.assertEquals("2.46", updateCenter.getUpdateVersionToUse("2.47.0")); - Assert.assertEquals("2.60", updateCenter.getUpdateVersionToUse("2.72.0")); - Assert.assertEquals("2.73", updateCenter.getUpdateVersionToUse("2.88.0")); - Assert.assertEquals("2.89", updateCenter.getUpdateVersionToUse("2.106.9999")); - Assert.assertEquals("2.107", updateCenter.getUpdateVersionToUse("2.108.0")); + Assert.assertEquals("2.249.3", updateCenter.getUpdateVersionToUse("2.249.3")); + Assert.assertEquals("2.249.3", updateCenter.getUpdateVersionToUse("2.250.0")); + Assert.assertEquals("2.263.4", updateCenter.getUpdateVersionToUse("2.276.0")); + Assert.assertEquals("2.289.3", updateCenter.getUpdateVersionToUse("2.289.9999")); + Assert.assertEquals("2.303.1", updateCenter.getUpdateVersionToUse("2.304.0")); } } \ No newline at end of file diff --git a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml index cf2247ebf..9d8e058a8 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml +++ b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml @@ -42,7 +42,6 @@ org.jenkins-ci.plugins:build-monitor-acceptance-base - true diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 071fe75b0..4ffc49a15 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -15,7 +15,7 @@ UTF-8 - 2.4.20 + 2.4.51 1.0.0.v20140518 chrome @@ -148,6 +148,11 @@ + + com.google.guava + guava + 31.0.1-jre + org.jdeferred jdeferred-core @@ -201,7 +206,7 @@ false 2 - true + false ${surefire.rerunFailingTestsCount} false ${jenkins.version} diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 8f4116dba..1868b298d 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -53,25 +53,12 @@ UTF-8 UTF-8 - npm + v16.13.0 + 8.1.0 2.43.0 DEV - - - windows - - - Windows - - - - npm.cmd - - - - @@ -336,41 +323,42 @@ - org.codehaus.mojo - exec-maven-plugin - 3.0.0 + com.github.eirslett + frontend-maven-plugin + 1.12.0 + install node and npm - exec + install-node-and-npm generate-test-resources + + ${node.version} + ${npm.version} + + + + npm install + + npm + + generate-test-resources + + install --silent + - - - ${npm-executable} - - install - --silent - - - - - com.kelveden - maven-karma-plugin - 1.8 - + karma - start + karma test + + src/test/resources/karma.conf.ci.js + - - ${project.basedir}/node_modules/karma/bin/karma - src/test/resources/karma.conf.js - org.jacoco diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java index 8e59235c8..8f8745986 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java @@ -1,5 +1,6 @@ package com.smartcodeltd.jenkinsci.plugin.assetbundler; +import org.apache.commons.lang.SystemUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -12,13 +13,16 @@ public class PathToAssetTest { + private static final String WINDOWS_SEPARATOR = "\\\\"; + private static final String UNIX_SEPARATOR = "/"; + @Test public void combines_base_resource_url_given_by_jenkins_and_a_path_to_the_asset() throws Exception { URL base = baseResourceUrlGivenByJenkins("file:///opt/jenkins/plugins/build-monitor-plugin/"); PathToAsset path = new PathToAsset(base, "less/index.less"); - assertThat(absolute(path), is("/opt/jenkins/plugins/build-monitor-plugin/less/index.less")); + assertThat(normalize(absolute(path)), is("/opt/jenkins/plugins/build-monitor-plugin/less/index.less")); } @Test @@ -27,7 +31,7 @@ public void works_with_unc_paths_on_windows() throws Exception { PathToAsset path = new PathToAsset(base, "less/index.less"); - assertThat(absolute(path), is("/server/jenkins/plugins/build-monitor-plugin/less/index.less")); + assertThat(normalize(absolute(path)), is("/server/jenkins/plugins/build-monitor-plugin/less/index.less")); } @Rule public ExpectedException thrown = ExpectedException.none(); @@ -46,6 +50,25 @@ private String absolute(PathToAsset path) { return path.toFile().getAbsolutePath(); } + /** + * Normalize the path to get a constant value between windows and *nix + */ + private String normalize(String path) { + String normalized = path; + + if (SystemUtils.IS_OS_WINDOWS) { + normalized = normalized.replaceAll(WINDOWS_SEPARATOR, UNIX_SEPARATOR); + if (normalized.indexOf(":") >= 0) { + normalized = normalized.substring(normalized.indexOf(":") + 1); + } + if (normalized.startsWith("//")) { + normalized = normalized.substring(1); + } + } + + return normalized; + } + // a pass-through method, only here for readability purposes private URL baseResourceUrlGivenByJenkins(String url) throws MalformedURLException { return new URL(url); diff --git a/build-monitor-plugin/src/test/resources/karma.conf.ci.js b/build-monitor-plugin/src/test/resources/karma.conf.ci.js new file mode 100644 index 000000000..55458d121 --- /dev/null +++ b/build-monitor-plugin/src/test/resources/karma.conf.ci.js @@ -0,0 +1,12 @@ +var baseConfig = require('./karma.conf.js'); + +module.exports = function(config){ + // Load base config + baseConfig(config); + + // Override base config + config.set({ + singleRun: true, + autoWatch: false + }); +}; From b945ba2092d58ebbcd6d53b37cd708cb4c085696 Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Thu, 18 Nov 2021 09:42:09 -0500 Subject: [PATCH 037/152] fix the remaining acceptance tests on latest --- .../configuration/DisplayAllProjects.java | 2 ++ .../configuration/DisplayNestedProjects.java | 4 ++++ .../jenkins/client/JenkinsClient.java | 22 ++++++++++++++----- .../rules/ManageJenkinsServer.java | 2 +- .../screenplay/jenkins/targets/Setting.java | 11 ++++++++-- .../user_interface/ViewConfigurationPage.java | 2 ++ .../navigation/Breadcrumbs.java | 3 ++- .../src/test/resources/serenity.conf | 3 ++- 8 files changed, 38 insertions(+), 11 deletions(-) diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java index 9b5375fed..f41d991b8 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java @@ -5,6 +5,7 @@ import net.serenitybdd.screenplay.actions.Enter; import net.serenitybdd.screenplay.jenkins.actions.Choose; import net.serenitybdd.screenplay.jenkins.user_interface.ViewConfigurationPage; +import net.serenitybdd.screenplayx.actions.Scroll; import net.thucydides.core.annotations.Step; import static net.serenitybdd.screenplay.Tasks.instrumented; @@ -18,6 +19,7 @@ public static Task usingARegularExpression() { @Override public void performAs(T actor) { actor.attemptsTo( + Scroll.to(ViewConfigurationPage.Use_Regular_Expression), Choose.the(ViewConfigurationPage.Use_Regular_Expression), Enter.theValue(".*").into(ViewConfigurationPage.Regular_Expression) ); diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java index 93e331727..b45e643d7 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java @@ -4,6 +4,7 @@ import net.serenitybdd.screenplay.Task; import net.serenitybdd.screenplay.jenkins.actions.Choose; import net.serenitybdd.screenplay.jenkins.user_interface.ViewConfigurationPage; +import net.serenitybdd.screenplayx.actions.Scroll; import net.thucydides.core.annotations.Step; import static net.serenitybdd.screenplay.Tasks.instrumented; @@ -17,6 +18,9 @@ public static Task fromSubfolders() { @Override public void performAs(T actor) { actor.attemptsTo( + Scroll.to(ViewConfigurationPage.Recurse_In_Subfolders), + // In case we scroll up and field is under the breadcrumb overlay + Scroll.to(ViewConfigurationPage.Status_Filter), Choose.the(ViewConfigurationPage.Recurse_In_Subfolders) ); } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java index 751cf7ff5..fd4ca6b4f 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java @@ -41,7 +41,8 @@ public JenkinsClient(URL jenkinsUrl, JenkinsProcess process) { public void registerAccount(String username, String password) { logger.info("Enabling Jenkins Security and registering account for '{}', identified by '{}'", username, password); - Promise promise = process.promiseWhen("defining beans \\[authenticationManager\\]"); + String endScriptMessage = format("Account for '%s' created", username); + Promise promise = process.promiseWhen(endScriptMessage); try { executeGroovy(promise, @@ -50,9 +51,13 @@ public void registerAccount(String username, String password) { "def realm = new hudson.security.HudsonPrivateSecurityRealm(usersCanRegister)", format("realm.createAccount(\"%s\",\"%s\")", username, password), "instance.setSecurityRealm(realm)", - "instance.save()" + "instance.save()", + "", + "import java.util.logging.Logger", + "Logger rootLogger = Logger.getLogger('')", + format("rootLogger.info(\"%s\")", endScriptMessage) ); - logger.info("Account for '{}' created", username); + logger.info(endScriptMessage); } catch (InterruptedException e) { throw new RuntimeException("Couldn't enable Jenkins Security", e); } @@ -61,16 +66,21 @@ public void registerAccount(String username, String password) { public void populateUpdateCenterCaches() { logger.info("FETCHING UPDATE CENTER"); - Promise promise = process.promiseWhen("Obtained the latest update center data file for UpdateSource default"); + String endScriptMessage = "UPDATE CENTER RELOADED"; + Promise promise = process.promiseWhen(endScriptMessage); try { executeGroovy(promise, "def ucUrl = new URL('http://updates.jenkins-ci.org/update-center.json')", "def json = hudson.model.DownloadService.loadJSON(ucUrl)", "def site = jenkins.model.Jenkins.instance.updateCenter.getById('default')", - "site.updateData(json, false)" + "site.updateData(json, false)", + "", + "import java.util.logging.Logger", + "Logger rootLogger = Logger.getLogger('')", + format("rootLogger.info(\"%s\")", endScriptMessage) ); - logger.info("UPDATE CENTER RELOADED"); + logger.info(endScriptMessage); } catch (InterruptedException e) { throw new RuntimeException("Couldn't update the Update Center caches.", e); } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java index 6f61cc453..3d759ee69 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java @@ -52,7 +52,7 @@ protected void starting(Description description) { @Override protected void finished(Description description) { - client.safeShutdown(); + client.shutdown(); } }; } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java index e408bde46..56c28cabb 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java @@ -6,16 +6,23 @@ import static java.lang.String.format; public class Setting { + public static Target defining(String name) { return Target.the(format("the '%s' field", name)) - .locatedBy(lastElementMatching(either(xpathFor("input"), xpathFor("textarea")))) + .locatedBy(lastElementMatching(either(xpathFor("input"), xpathFor("textarea"), xpathFor("select"), + xpathForTableLayout("input"), xpathForTableLayout("textarea"), xpathForTableLayout("select")))) .of(name); } - private static String xpathFor(String fieldType) { + private static String xpathForTableLayout(String fieldType) { + // TODO: Deprecated Layout Since 2.277.1 return format("//tr[td[contains(@class, 'setting-name') and contains(., '{0}')]]//%s", fieldType); } + private static String xpathFor(String fieldType) { + return format("//div[contains(@class, 'tr') and div[contains(@class, 'setting-name') and contains(., '{0}')]]//%s", fieldType); + } + private static String either(String... xpaths) { return Joiner.on(" | ").join(xpaths); } diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java index 0abf3c224..d34f5ea1f 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java @@ -2,9 +2,11 @@ import net.serenitybdd.core.annotations.findby.By; import net.serenitybdd.screenplay.jenkins.targets.Checkbox; +import net.serenitybdd.screenplay.jenkins.targets.Setting; import net.serenitybdd.screenplay.targets.Target; public class ViewConfigurationPage { + public static final Target Status_Filter = Setting.defining("Status Filter"); public static final Target Recurse_In_Subfolders = Target.the("the 'Recurse in subfolders' option").locatedBy("#recurse"); public static final Target Use_Regular_Expression = Checkbox.withLabel("Use a regular expression to include jobs into the view"); public static final Target Regular_Expression = Target.the("the 'Regular expression' field").located(By.name("includeRegex")); diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java index 3313a4dcf..1de4934fa 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java @@ -5,7 +5,8 @@ import static java.lang.String.format; public class Breadcrumbs { - public static final Target Jenkins_Link = Target.the("the 'Jenkins' link").locatedBy("//a[./text()='Jenkins']"); + // Breadcrumb has been renamed Dashboard in newer Jenkins + public static final Target Jenkins_Link = Target.the("the 'Jenkins' link").locatedBy("//a[./text()='Jenkins' or ./text()='Dashboard']"); public static Target linkTo(String name) { return Target.the(format("the '%s' breadcrumb link", name)) diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf index 9e0d0653e..2a06c5151 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf +++ b/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf @@ -35,6 +35,7 @@ webdriver { chrome.silentOutput = true } -chrome.switches = "--lang=en,--no-sandbox;--disable-gpu;--no-default-browser-check;--no-first-run;--disable-default-apps;--disable-popup-blocking;--disable-translate;--disable-background-timer-throttling;--disable-renderer-backgrounding;--disable-device-discovery-notifications;--window-size=1440,900;" +# Remove headless switch to debug the tests +chrome.switches = "--headless --lang=en,--no-sandbox;--disable-gpu;--no-default-browser-check;--no-first-run;--disable-default-apps;--disable-popup-blocking;--disable-translate;--disable-background-timer-throttling;--disable-renderer-backgrounding;--disable-device-discovery-notifications;--window-size=1440,900;" junit.retry.tests = true From b68ffbfbbc13acf25687854cb9b3d2b3e1937d57 Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Thu, 18 Nov 2021 13:22:40 -0500 Subject: [PATCH 038/152] move acceptance tests in a single project --- .../build-monitor-acceptance-base/pom.xml | 50 ------ .../build-monitor-acceptance-latest/pom.xml | 54 ------- build-monitor-acceptance/pom.xml | 146 ++++++++++-------- .../plugins/folder/HaveAFolderCreated.java | 0 .../folder/HaveANestedProjectCreated.java | 0 .../plugins/folder/tasks/CreateAFolder.java | 0 .../user_interface/FolderDetailsPage.java | 0 .../aether/ArtifactTransporter.java | 0 .../aether/ConsoleRepositoryListener.java | 0 .../aether/ConsoleTransferListener.java | 0 .../smartcodeltd/aether/RemoteRepository.java | 0 .../matchers/ProjectInformationMatchers.java | 0 .../model/ProjectInformation.java | 0 .../build_monitor/model/ProjectStatus.java | 0 .../questions/ProjectWidget.java | 0 .../project_widget/ProjectBadgesState.java | 0 .../project_widget/ProjectWidgetBuilds.java | 0 .../project_widget/ProjectWidgetDetails.java | 0 .../ProjectWidgetInformation.java | 0 .../ProjectWidgetPipelineStages.java | 0 .../project_widget/ProjectWidgetState.java | 0 .../build_monitor/tasks/AddProjects.java | 0 .../tasks/ConfigureEmptyBuildMonitorView.java | 0 .../tasks/CreateABuildMonitorView.java | 0 .../tasks/HaveABuildMonitorViewCreated.java | 0 .../tasks/ModifyControlPanelOptions.java | 0 .../build_monitor/tasks/ShowBadges.java | 0 .../configuration/DisplayAllProjects.java | 0 .../configuration/DisplayNestedProjects.java | 0 .../SaveTheChangesToBuildMonitor.java | 0 .../user_interface/BuildMonitorDashboard.java | 0 .../DefineABuildLogIndicatedFailureCause.java | 0 .../HaveAShellScriptFailureCauseDefined.java | 0 .../bfa/UseFailureCauseManagement.java | 0 .../bfa/tasks/DefineAFailureCause.java | 0 .../configuration/LineInTheBuildLog.java | 0 .../FailureCauseManagementPage.java | 0 .../JenkinsHomePageWithBFA.java | 0 .../HaveAFailingClaimableProjectCreated.java | 0 .../hudson/plugins/claim/tasks/Claim.java | 0 .../configuration/BrokenBuildClaiming.java | 0 .../ClaimableBuildDetailsPage.java | 0 .../tasks/SetBuildDescription.java | 0 .../BrowserStackTestSessionName.java | 0 .../jenkins/JenkinsArtifactTransporter.java | 0 .../integration/jenkins/JenkinsInstance.java | 0 .../integration/jenkins/TestEnvironment.java | 0 .../jenkins/client/JenkinsClient.java | 0 .../integration/jenkins/environment/CWD.java | 0 .../jenkins/environment/Directories.java | 0 .../environment/PluginDescription.java | 0 .../jenkins/environment/UpdateCenter.java | 0 .../rules/ApplicativeTestRule.java | 0 .../rules/DescribeBrowserStackSession.java | 0 .../environment/rules/FindFreePort.java | 0 .../environment/rules/InstallPlugins.java | 0 .../rules/InstallPluginsFromDisk.java | 0 .../rules/InstallPluginsFromUpdateCenter.java | 0 .../rules/ManageJenkinsServer.java | 0 .../rules/RegisterUserAccount.java | 0 .../environment/rules/SandboxJenkinsHome.java | 0 .../jenkins/logging/ErrorWitness.java | 0 .../jenkins/logging/InfoWitness.java | 0 .../jenkins/logging/LoggerOutputStream.java | 0 .../integration/jenkins/logging/Witness.java | 0 .../process/JenkinsLogLineWatcher.java | 0 .../jenkins/process/JenkinsLogWatcher.java | 0 .../jenkins/process/JenkinsProcess.java | 0 .../integration/utils/CommandLineTools.java | 0 .../integration/utils/ListFunctions.java | 0 .../serenitybdd/integration/utils/Nulls.java | 0 .../integration/utils/RuleChains.java | 0 .../serenitybdd/readability/Typograph.java | 0 .../abilities/InteractWithJenkinsAPI.java | 0 .../ActorCannotInteractWithJenkinsApi.java | 0 .../interactions/NotifyOfExternalProject.java | 0 .../NotifyOfExternalProjectFailure.java | 0 .../NotifyOfExternalProjectSuccess.java | 0 .../jenkins/HaveAFailingProjectCreated.java | 0 .../jenkins/HaveAPipelineProjectCreated.java | 0 .../jenkins/HaveAProjectCreated.java | 0 .../HaveASuccessfulProjectCreated.java | 0 .../jenkins/HaveAnExternalProjectCreated.java | 0 .../screenplay/jenkins/JenkinsUser.java | 0 .../screenplay/jenkins/actions/Choose.java | 0 .../screenplay/jenkins/actions/EnterCode.java | 0 .../screenplay/jenkins/targets/Button.java | 0 .../screenplay/jenkins/targets/Checkbox.java | 0 .../screenplay/jenkins/targets/Link.java | 0 .../jenkins/targets/RadioButton.java | 0 .../screenplay/jenkins/targets/Setting.java | 0 .../tasks/CreateAFreestyleProject.java | 0 .../jenkins/tasks/CreateAPipelineProject.java | 0 .../jenkins/tasks/CreateAProject.java | 0 .../tasks/CreateAnExternalProject.java | 0 .../screenplay/jenkins/tasks/GoBack.java | 0 .../screenplay/jenkins/tasks/LogIn.java | 0 .../jenkins/tasks/ScheduleABuild.java | 0 .../jenkins/tasks/configuration/Enable.java | 0 .../jenkins/tasks/configuration/TodoList.java | 0 .../build_steps/AddABuildStep.java | 0 .../AddAGroovyPostbuildScript.java | 0 .../build_steps/AddAPostBuildAction.java | 0 .../EnableExecutingConcurrentBuilds.java | 0 .../build_steps/ExecuteAShellScript.java | 0 .../build_steps/GroovyScript.java | 0 .../build_steps/GroovyScriptThat.java | 0 .../build_steps/SetPipelineDefinition.java | 0 .../build_steps/ShellScript.java | 0 .../build_steps/ShellScriptThat.java | 0 .../user_interface/JenkinsHomePage.java | 0 .../jenkins/user_interface/LogInForm.java | 0 .../jenkins/user_interface/NewJobPage.java | 0 .../jenkins/user_interface/NewViewPage.java | 0 .../ProjectConfigurationPage.java | 0 .../user_interface/ProjectDetailsPage.java | 0 .../user_interface/ViewConfigurationPage.java | 0 .../navigation/Breadcrumbs.java | 0 .../user_interface/navigation/Buttons.java | 0 .../user_interface/navigation/SidePanel.java | 0 .../build_steps/GroovyPostBuildStep.java | 0 .../build_steps/PipelineDefinition.java | 0 .../build_steps/ShellBuildStep.java | 0 .../screenplayx/actions/Evaluate.java | 0 .../screenplayx/actions/Navigate.java | 0 .../screenplayx/actions/Scroll.java | 0 .../screenplayx/actions/ScrollToTarget.java | 0 .../test/java/environment/JenkinsSandbox.java | 0 .../BuildMonitorShouldBeEasyToSetUp.java | 0 .../ProjectStatusShouldBeEasyToDetermine.java | 0 .../features/ShouldDescribeEachProject.java | 0 .../java/features/ShouldDisplayBadges.java | 0 .../ShouldDisplayConcurrentBuilds.java | 0 .../features/ShouldDisplayPipelineStage.java | 0 .../ShouldSupportCloudBeesFolders.java | 0 .../ShouldSupportExternalProjects.java | 0 .../features/ShouldTellWhatBrokeTheBuild.java | 0 .../ShouldTellWhoIsFixingTheBrokenBuild.java | 0 .../environment/UpdateCenterUnitTest.java | 0 .../src/test/resources/serenity.conf | 2 +- .../test/resources/simplelogger.properties | 0 141 files changed, 80 insertions(+), 172 deletions(-) delete mode 100644 build-monitor-acceptance/build-monitor-acceptance-base/pom.xml delete mode 100644 build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/cloudbees/hudson/plugins/folder/HaveAFolderCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/cloudbees/hudson/plugins/folder/HaveANestedProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/cloudbees/hudson/plugins/folder/user_interface/FolderDetailsPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/aether/ArtifactTransporter.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/aether/ConsoleRepositoryListener.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/aether/RemoteRepository.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/matchers/ProjectInformationMatchers.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/ProjectWidget.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectBadgesState.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetBuilds.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetDetails.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetInformation.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetPipelineStages.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetState.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/AddProjects.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ConfigureEmptyBuildMonitorView.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/CreateABuildMonitorView.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/HaveABuildMonitorViewCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ModifyControlPanelOptions.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/SaveTheChangesToBuildMonitor.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/user_interface/BuildMonitorDashboard.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/DefineABuildLogIndicatedFailureCause.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/HaveAShellScriptFailureCauseDefined.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/UseFailureCauseManagement.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/DefineAFailureCause.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/configuration/LineInTheBuildLog.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/FailureCauseManagementPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/JenkinsHomePageWithBFA.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/hudson/plugins/claim/HaveAFailingClaimableProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/hudson/plugins/claim/tasks/Claim.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/hudson/plugins/claim/tasks/configuration/BrokenBuildClaiming.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/hudson/plugins/claim/user_interface/ClaimableBuildDetailsPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/hudson/plugins/descriptionsetter/tasks/SetBuildDescription.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/browserstack/BrowserStackTestSessionName.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/CWD.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/Directories.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/PluginDescription.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ApplicativeTestRule.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/DescribeBrowserStackSession.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/RegisterUserAccount.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/SandboxJenkinsHome.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/logging/ErrorWitness.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/logging/InfoWitness.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/logging/Witness.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogLineWatcher.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/utils/CommandLineTools.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/utils/Nulls.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/integration/utils/RuleChains.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/readability/Typograph.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/abilities/InteractWithJenkinsAPI.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/exceptions/ActorCannotInteractWithJenkinsApi.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProject.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectFailure.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectSuccess.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAFailingProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAPipelineProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/HaveASuccessfulProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAnExternalProjectCreated.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/JenkinsUser.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/actions/Choose.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Button.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Checkbox.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Link.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/targets/RadioButton.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAFreestyleProject.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAPipelineProject.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAProject.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAnExternalProject.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/GoBack.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/LogIn.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/ScheduleABuild.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/Enable.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddABuildStep.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAGroovyPostbuildScript.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAPostBuildAction.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/EnableExecutingConcurrentBuilds.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ExecuteAShellScript.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/SetPipelineDefinition.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScriptThat.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewJobPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectConfigurationPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectDetailsPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Buttons.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/GroovyPostBuildStep.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/PipelineDefinition.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/ShellBuildStep.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplayx/actions/Evaluate.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplayx/actions/Navigate.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplayx/actions/Scroll.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/environment/JenkinsSandbox.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldDescribeEachProject.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldDisplayBadges.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldDisplayConcurrentBuilds.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldDisplayPipelineStage.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldSupportCloudBeesFolders.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldSupportExternalProjects.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldTellWhatBrokeTheBuild.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java (100%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/resources/serenity.conf (96%) rename build-monitor-acceptance/{build-monitor-acceptance-base => }/src/test/resources/simplelogger.properties (100%) diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml deleted file mode 100644 index dd3088647..000000000 --- a/build-monitor-acceptance/build-monitor-acceptance-base/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - 4.0.0 - - org.jenkins-ci.plugins - build-monitor-acceptance - 1.13-SNAPSHOT - - - build-monitor-acceptance-base - jar - - Build Monitor Acceptance Tests (Jenkins ${jenkins.version}) - - - - - maven-jar-plugin - - - test-compile - - test-jar - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*UnitTest.java - - - - - - test - - - - - - net.serenity-bdd.maven.plugins - serenity-maven-plugin - - - - diff --git a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml b/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml deleted file mode 100644 index 9d8e058a8..000000000 --- a/build-monitor-acceptance/build-monitor-acceptance-latest/pom.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - build-monitor-acceptance - org.jenkins-ci.plugins - 1.13-SNAPSHOT - - 4.0.0 - - build-monitor-acceptance-latest - - Build Monitor Acceptance Tests (Jenkins ${jenkins.version}) - - - - 2.303.1 - - - - - org.jenkins-ci.plugins - build-monitor-acceptance-base - ${project.version} - test - - - org.jenkins-ci.plugins - build-monitor-acceptance-base - ${project.version} - test - test-jar - - - - - - - maven-failsafe-plugin - - - org.jenkins-ci.plugins:build-monitor-acceptance-base - - - - - net.serenity-bdd.maven.plugins - serenity-maven-plugin - - - - - diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 4ffc49a15..5880573d2 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -9,11 +9,14 @@ build-monitor-acceptance - pom + jar Build Monitor Acceptance Tests + + 2.303.1 + UTF-8 2.4.51 1.0.0.v20140518 @@ -24,11 +27,6 @@ true - - build-monitor-acceptance-base - build-monitor-acceptance-latest - - remote-browser @@ -179,66 +177,80 @@ - - - - maven-failsafe-plugin - - - **/*UnitTest.java - - - **/features/*Test.java - **/features/*Should*.java - - -Xmx2048m - - ${webdriver.driver} - ${browserstack.url} - ../../ - jenkins-${jenkins.version} - - - - htmlunit - ${jenkins.version} - ../../build-monitor-plugin/target - false - - 2 - false - ${surefire.rerunFailingTestsCount} - false - ${jenkins.version} - - - - - integration-test - - - - - - net.serenity-bdd.maven.plugins - serenity-maven-plugin - ${serenity.version} - - - serenity-reports - post-integration-test - - aggregate - - - true - ../target/site/serenity - ../target/site/serenity - - - - - - + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*UnitTest.java + + + + + + test + + + + + + maven-failsafe-plugin + + + **/*UnitTest.java + + + **/features/*Test.java + **/features/*Should*.java + + -Xmx2048m + + ${webdriver.driver} + ${browserstack.url} + ../ + jenkins-${jenkins.version} + + + + htmlunit + ${jenkins.version} + ../build-monitor-plugin/target + false + + 2 + false + ${surefire.rerunFailingTestsCount} + false + ${jenkins.version} + + + + + integration-test + + + + + + net.serenity-bdd.maven.plugins + serenity-maven-plugin + ${serenity.version} + + + serenity-reports + post-integration-test + + aggregate + + + true + target/site/serenity + target/site/serenity + + + + + diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/HaveAFolderCreated.java b/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/HaveAFolderCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/HaveAFolderCreated.java rename to build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/HaveAFolderCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/HaveANestedProjectCreated.java b/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/HaveANestedProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/HaveANestedProjectCreated.java rename to build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/HaveANestedProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java b/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java rename to build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/user_interface/FolderDetailsPage.java b/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/user_interface/FolderDetailsPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/cloudbees/hudson/plugins/folder/user_interface/FolderDetailsPage.java rename to build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/user_interface/FolderDetailsPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/ArtifactTransporter.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ArtifactTransporter.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/ArtifactTransporter.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ArtifactTransporter.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/ConsoleRepositoryListener.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleRepositoryListener.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/ConsoleRepositoryListener.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleRepositoryListener.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/RemoteRepository.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/RemoteRepository.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/aether/RemoteRepository.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/RemoteRepository.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/matchers/ProjectInformationMatchers.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/matchers/ProjectInformationMatchers.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/matchers/ProjectInformationMatchers.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/matchers/ProjectInformationMatchers.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/ProjectWidget.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/ProjectWidget.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/ProjectWidget.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/ProjectWidget.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectBadgesState.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectBadgesState.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectBadgesState.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectBadgesState.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetBuilds.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetBuilds.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetBuilds.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetBuilds.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetDetails.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetDetails.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetDetails.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetDetails.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetInformation.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetInformation.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetInformation.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetInformation.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetPipelineStages.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetPipelineStages.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetPipelineStages.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetPipelineStages.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetState.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetState.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetState.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/questions/project_widget/ProjectWidgetState.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/AddProjects.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/AddProjects.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/AddProjects.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/AddProjects.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ConfigureEmptyBuildMonitorView.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ConfigureEmptyBuildMonitorView.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ConfigureEmptyBuildMonitorView.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ConfigureEmptyBuildMonitorView.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/CreateABuildMonitorView.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/CreateABuildMonitorView.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/CreateABuildMonitorView.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/CreateABuildMonitorView.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/HaveABuildMonitorViewCreated.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/HaveABuildMonitorViewCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/HaveABuildMonitorViewCreated.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/HaveABuildMonitorViewCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ModifyControlPanelOptions.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ModifyControlPanelOptions.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ModifyControlPanelOptions.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ModifyControlPanelOptions.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayAllProjects.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/SaveTheChangesToBuildMonitor.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/SaveTheChangesToBuildMonitor.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/SaveTheChangesToBuildMonitor.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/SaveTheChangesToBuildMonitor.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/user_interface/BuildMonitorDashboard.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/user_interface/BuildMonitorDashboard.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/user_interface/BuildMonitorDashboard.java rename to build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/user_interface/BuildMonitorDashboard.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/DefineABuildLogIndicatedFailureCause.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/DefineABuildLogIndicatedFailureCause.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/DefineABuildLogIndicatedFailureCause.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/DefineABuildLogIndicatedFailureCause.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/HaveAShellScriptFailureCauseDefined.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/HaveAShellScriptFailureCauseDefined.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/HaveAShellScriptFailureCauseDefined.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/HaveAShellScriptFailureCauseDefined.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/UseFailureCauseManagement.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/UseFailureCauseManagement.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/UseFailureCauseManagement.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/UseFailureCauseManagement.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/DefineAFailureCause.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/DefineAFailureCause.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/DefineAFailureCause.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/DefineAFailureCause.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/configuration/LineInTheBuildLog.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/configuration/LineInTheBuildLog.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/configuration/LineInTheBuildLog.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/tasks/configuration/LineInTheBuildLog.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/FailureCauseManagementPage.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/FailureCauseManagementPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/FailureCauseManagementPage.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/FailureCauseManagementPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/JenkinsHomePageWithBFA.java b/build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/JenkinsHomePageWithBFA.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/JenkinsHomePageWithBFA.java rename to build-monitor-acceptance/src/main/java/com/sonyericsson/jenkins/plugins/bfa/user_interface/JenkinsHomePageWithBFA.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/HaveAFailingClaimableProjectCreated.java b/build-monitor-acceptance/src/main/java/hudson/plugins/claim/HaveAFailingClaimableProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/HaveAFailingClaimableProjectCreated.java rename to build-monitor-acceptance/src/main/java/hudson/plugins/claim/HaveAFailingClaimableProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/tasks/Claim.java b/build-monitor-acceptance/src/main/java/hudson/plugins/claim/tasks/Claim.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/tasks/Claim.java rename to build-monitor-acceptance/src/main/java/hudson/plugins/claim/tasks/Claim.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/tasks/configuration/BrokenBuildClaiming.java b/build-monitor-acceptance/src/main/java/hudson/plugins/claim/tasks/configuration/BrokenBuildClaiming.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/tasks/configuration/BrokenBuildClaiming.java rename to build-monitor-acceptance/src/main/java/hudson/plugins/claim/tasks/configuration/BrokenBuildClaiming.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/user_interface/ClaimableBuildDetailsPage.java b/build-monitor-acceptance/src/main/java/hudson/plugins/claim/user_interface/ClaimableBuildDetailsPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/claim/user_interface/ClaimableBuildDetailsPage.java rename to build-monitor-acceptance/src/main/java/hudson/plugins/claim/user_interface/ClaimableBuildDetailsPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/descriptionsetter/tasks/SetBuildDescription.java b/build-monitor-acceptance/src/main/java/hudson/plugins/descriptionsetter/tasks/SetBuildDescription.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/hudson/plugins/descriptionsetter/tasks/SetBuildDescription.java rename to build-monitor-acceptance/src/main/java/hudson/plugins/descriptionsetter/tasks/SetBuildDescription.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/browserstack/BrowserStackTestSessionName.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/browserstack/BrowserStackTestSessionName.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/browserstack/BrowserStackTestSessionName.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/browserstack/BrowserStackTestSessionName.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsArtifactTransporter.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/CWD.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/CWD.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/CWD.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/CWD.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/Directories.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/Directories.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/Directories.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/Directories.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/PluginDescription.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/PluginDescription.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/PluginDescription.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/PluginDescription.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ApplicativeTestRule.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ApplicativeTestRule.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ApplicativeTestRule.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ApplicativeTestRule.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/DescribeBrowserStackSession.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/DescribeBrowserStackSession.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/DescribeBrowserStackSession.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/DescribeBrowserStackSession.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/ManageJenkinsServer.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/RegisterUserAccount.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/RegisterUserAccount.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/RegisterUserAccount.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/RegisterUserAccount.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/SandboxJenkinsHome.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/SandboxJenkinsHome.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/SandboxJenkinsHome.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/SandboxJenkinsHome.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/ErrorWitness.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/ErrorWitness.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/ErrorWitness.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/ErrorWitness.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/InfoWitness.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/InfoWitness.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/InfoWitness.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/InfoWitness.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/Witness.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/Witness.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/logging/Witness.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/Witness.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogLineWatcher.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogLineWatcher.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogLineWatcher.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogLineWatcher.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/CommandLineTools.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/CommandLineTools.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/CommandLineTools.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/CommandLineTools.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/Nulls.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/Nulls.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/Nulls.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/Nulls.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/RuleChains.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/RuleChains.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/integration/utils/RuleChains.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/RuleChains.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/readability/Typograph.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/readability/Typograph.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/readability/Typograph.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/readability/Typograph.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/abilities/InteractWithJenkinsAPI.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/abilities/InteractWithJenkinsAPI.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/abilities/InteractWithJenkinsAPI.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/abilities/InteractWithJenkinsAPI.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/exceptions/ActorCannotInteractWithJenkinsApi.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/exceptions/ActorCannotInteractWithJenkinsApi.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/exceptions/ActorCannotInteractWithJenkinsApi.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/exceptions/ActorCannotInteractWithJenkinsApi.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProject.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProject.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProject.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProject.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectFailure.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectFailure.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectFailure.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectFailure.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectSuccess.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectSuccess.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectSuccess.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/interacting_with_jenkins_api/interactions/NotifyOfExternalProjectSuccess.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAFailingProjectCreated.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAFailingProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAFailingProjectCreated.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAFailingProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAPipelineProjectCreated.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAPipelineProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAPipelineProjectCreated.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAPipelineProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveASuccessfulProjectCreated.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveASuccessfulProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveASuccessfulProjectCreated.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveASuccessfulProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAnExternalProjectCreated.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAnExternalProjectCreated.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAnExternalProjectCreated.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAnExternalProjectCreated.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/JenkinsUser.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/JenkinsUser.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/JenkinsUser.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/JenkinsUser.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/actions/Choose.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/Choose.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/actions/Choose.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/Choose.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Button.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Button.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Button.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Button.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Checkbox.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Checkbox.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Checkbox.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Checkbox.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Link.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Link.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Link.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Link.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/RadioButton.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/RadioButton.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/RadioButton.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/RadioButton.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAFreestyleProject.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAFreestyleProject.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAFreestyleProject.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAFreestyleProject.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAPipelineProject.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAPipelineProject.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAPipelineProject.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAPipelineProject.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAProject.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAProject.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAProject.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAProject.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAnExternalProject.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAnExternalProject.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAnExternalProject.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/CreateAnExternalProject.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/GoBack.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/GoBack.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/GoBack.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/GoBack.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/LogIn.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/LogIn.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/LogIn.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/LogIn.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/ScheduleABuild.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/ScheduleABuild.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/ScheduleABuild.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/ScheduleABuild.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/Enable.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/Enable.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/Enable.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/Enable.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddABuildStep.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddABuildStep.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddABuildStep.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddABuildStep.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAGroovyPostbuildScript.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAGroovyPostbuildScript.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAGroovyPostbuildScript.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAGroovyPostbuildScript.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAPostBuildAction.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAPostBuildAction.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAPostBuildAction.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/AddAPostBuildAction.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/EnableExecutingConcurrentBuilds.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/EnableExecutingConcurrentBuilds.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/EnableExecutingConcurrentBuilds.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/EnableExecutingConcurrentBuilds.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ExecuteAShellScript.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ExecuteAShellScript.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ExecuteAShellScript.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ExecuteAShellScript.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/SetPipelineDefinition.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/SetPipelineDefinition.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/SetPipelineDefinition.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/SetPipelineDefinition.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScriptThat.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScriptThat.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScriptThat.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScriptThat.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/JenkinsHomePage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/LogInForm.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewJobPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewJobPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewJobPage.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewJobPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectConfigurationPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectConfigurationPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectConfigurationPage.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectConfigurationPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectDetailsPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectDetailsPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectDetailsPage.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ProjectDetailsPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Breadcrumbs.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Buttons.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Buttons.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Buttons.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/Buttons.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/navigation/SidePanel.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/GroovyPostBuildStep.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/GroovyPostBuildStep.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/GroovyPostBuildStep.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/GroovyPostBuildStep.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/PipelineDefinition.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/PipelineDefinition.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/PipelineDefinition.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/PipelineDefinition.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/ShellBuildStep.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/ShellBuildStep.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/ShellBuildStep.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/project_configuration/build_steps/ShellBuildStep.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/Evaluate.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/Evaluate.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/Evaluate.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/Evaluate.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/Navigate.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/Navigate.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/Navigate.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/Navigate.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/Scroll.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/Scroll.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/Scroll.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/Scroll.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java rename to build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/environment/JenkinsSandbox.java b/build-monitor-acceptance/src/test/java/environment/JenkinsSandbox.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/environment/JenkinsSandbox.java rename to build-monitor-acceptance/src/test/java/environment/JenkinsSandbox.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java rename to build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java rename to build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDescribeEachProject.java rename to build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayBadges.java rename to build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayConcurrentBuilds.java rename to build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldDisplayPipelineStage.java rename to build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldSupportCloudBeesFolders.java rename to build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldSupportExternalProjects.java rename to build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldTellWhatBrokeTheBuild.java rename to build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java rename to build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java b/build-monitor-acceptance/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java rename to build-monitor-acceptance/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf b/build-monitor-acceptance/src/test/resources/serenity.conf similarity index 96% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf rename to build-monitor-acceptance/src/test/resources/serenity.conf index 2a06c5151..433213d7f 100644 --- a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/serenity.conf +++ b/build-monitor-acceptance/src/test/resources/serenity.conf @@ -26,7 +26,7 @@ serenity { height = 900 } - outputDirectory = ../target/site/serenity + outputDirectory = target/site/serenity } webdriver { diff --git a/build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/simplelogger.properties b/build-monitor-acceptance/src/test/resources/simplelogger.properties similarity index 100% rename from build-monitor-acceptance/build-monitor-acceptance-base/src/test/resources/simplelogger.properties rename to build-monitor-acceptance/src/test/resources/simplelogger.properties From 4c826390a80e64041a4c130c2baf331613bc0c1a Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Thu, 18 Nov 2021 15:08:22 -0500 Subject: [PATCH 039/152] refactor acceptance tests with parameters for jenkins versions to test --- build-monitor-acceptance/pom.xml | 3 +- .../integration/jenkins/JenkinsInstance.java | 2 +- .../features/BuildMonitorAbstractBase.java | 41 +++++++++++++++++++ .../BuildMonitorShouldBeEasyToSetUp.java | 29 ++++++++----- .../ProjectStatusShouldBeEasyToDetermine.java | 29 ++++++++----- .../features/ShouldDescribeEachProject.java | 32 +++++++++------ .../java/features/ShouldDisplayBadges.java | 31 ++++++++------ .../ShouldDisplayConcurrentBuilds.java | 32 +++++++++------ .../features/ShouldDisplayPipelineStage.java | 32 +++++++++------ .../ShouldSupportCloudBeesFolders.java | 31 ++++++++------ .../ShouldSupportExternalProjects.java | 31 ++++++++------ .../features/ShouldTellWhatBrokeTheBuild.java | 31 ++++++++------ .../ShouldTellWhoIsFixingTheBrokenBuild.java | 35 +++++++++------- 13 files changed, 235 insertions(+), 124 deletions(-) create mode 100644 build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 5880573d2..85d6e6e1d 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -209,12 +209,11 @@ ${webdriver.driver} ${browserstack.url} ../ - jenkins-${jenkins.version} htmlunit - ${jenkins.version} + ${jenkins.version},${jenkins.latest.version} ../build-monitor-plugin/target false diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java index b9c4e53fd..a2e236dd7 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java @@ -66,7 +66,7 @@ public String pluginUnderTestVersion() { } public String version() { - return System.getenv("JENKINS_VERSION"); + return System.getProperty("jenkins.version"); } public Path home() { diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java new file mode 100644 index 000000000..5c85677ac --- /dev/null +++ b/build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java @@ -0,0 +1,41 @@ +package features; + +import environment.JenkinsSandbox; +import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; +import net.serenitybdd.junit.runners.SerenityParameterizedRunner; +import net.thucydides.core.annotations.Managed; + +import org.junit.Rule; +import org.junit.runner.RunWith; +import org.openqa.selenium.WebDriver; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@RunWith(SerenityParameterizedRunner.class) +public abstract class BuildMonitorAbstractBase { + + @Managed public WebDriver browser; + + @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart(jenkinsAfterStartRules()).create(); + + protected abstract List> jenkinsAfterStartRules(); + + + public static Collection testData(){ + List data = new ArrayList<>(); + + String[] jenkinsVersions = System.getenv("JENKINS_VERSIONS").split(","); + for (String jenkinsVersion : jenkinsVersions) { + data.add(new Object[]{jenkinsVersion}); + } + + return data; + } + + protected BuildMonitorAbstractBase(String jenkinsVersion) { + System.setProperty("jenkins.version", jenkinsVersion); + } +} diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java index d383e99e2..2cacabff1 100644 --- a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java +++ b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java @@ -2,20 +2,17 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; -import net.serenitybdd.junit.runners.SerenityRunner; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAProjectCreated; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; import net.thucydides.core.annotations.Title; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.givenThat; import static net.serenitybdd.screenplay.GivenWhenThen.seeThat; @@ -23,15 +20,27 @@ import static net.serenitybdd.screenplay.GivenWhenThen.when; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; -@RunWith(SerenityRunner.class) -public class BuildMonitorShouldBeEasyToSetUp { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class BuildMonitorShouldBeEasyToSetUp extends BuildMonitorAbstractBase { Actor anna = Actor.named("Anna"); - @Managed public WebDriver browser; + public BuildMonitorShouldBeEasyToSetUp(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { anna.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java index 94aeb7f96..5056967de 100644 --- a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java +++ b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java @@ -2,35 +2,44 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; -import net.serenitybdd.junit.runners.SerenityRunner; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAFailingProjectCreated; import net.serenitybdd.screenplay.jenkins.HaveASuccessfulProjectCreated; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.matchers.ProjectInformationMatchers.displaysProjectStatusAs; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Failing; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Successful; import static net.serenitybdd.screenplay.GivenWhenThen.*; -@RunWith(SerenityRunner.class) -public class ProjectStatusShouldBeEasyToDetermine { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ProjectStatusShouldBeEasyToDetermine extends BuildMonitorAbstractBase { private Actor anna = Actor.named("Anna"); - @Managed public WebDriver browser; + public ProjectStatusShouldBeEasyToDetermine(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { anna.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java index c6917a2e8..7555e629d 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java @@ -2,11 +2,10 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import hudson.plugins.descriptionsetter.tasks.SetBuildDescription; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAProjectCreated; @@ -14,28 +13,35 @@ import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.ExecuteAShellScript; import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.ShellScript; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.is; -@RunWith(SerenityRunner.class) -public class ShouldDescribeEachProject { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldDescribeEachProject extends BuildMonitorAbstractBase { private Actor dave = Actor.named("Dave"); - @Managed public WebDriver browser; + public ShouldDescribeEachProject(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule - public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("description-setter") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("description-setter")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { dave.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index 8ef528d75..5efb0d3b6 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -4,10 +4,9 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.ModifyControlPanelOptions; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.ShowBadges; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAPipelineProjectCreated; @@ -15,12 +14,10 @@ import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.GroovyScriptThat; import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.SetPipelineDefinition; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.givenThat; import static net.serenitybdd.screenplay.GivenWhenThen.seeThat; @@ -28,17 +25,27 @@ import static net.serenitybdd.screenplay.GivenWhenThen.when; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; -@RunWith(SerenityRunner.class) -public class ShouldDisplayBadges { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldDisplayBadges extends BuildMonitorAbstractBase { Actor paul = Actor.named("Paul"); - @Managed public WebDriver browser; + public ShouldDisplayBadges(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { paul.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java index 75df4fff3..50fb9d651 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java @@ -2,10 +2,9 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAProjectCreated; @@ -14,29 +13,36 @@ import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.ExecuteAShellScript; import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.ShellScript; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.is; -@RunWith(SerenityRunner.class) -public class ShouldDisplayConcurrentBuilds { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldDisplayConcurrentBuilds extends BuildMonitorAbstractBase { private static String My_App = "My App"; Actor dave = Actor.named("Dave"); - @Managed public WebDriver browser; + public ShouldDisplayConcurrentBuilds(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule - public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("description-setter") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("description-setter")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { dave.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java index 92b32cc3e..9902d04df 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java @@ -2,38 +2,44 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAPipelineProjectCreated; import net.serenitybdd.screenplay.jenkins.tasks.ScheduleABuild; import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.SetPipelineDefinition; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.containsString; -@RunWith(SerenityRunner.class) -public class ShouldDisplayPipelineStage { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldDisplayPipelineStage extends BuildMonitorAbstractBase { Actor donald = Actor.named("Donald"); - @Managed public WebDriver browser; + public ShouldDisplayPipelineStage(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule - public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("workflow-aggregator") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("workflow-aggregator")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { donald.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java index ec6b84f80..b59b73d78 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java @@ -6,34 +6,41 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.CreateABuildMonitorView; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration.DisplayAllProjects; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration.DisplayNestedProjects; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isVisible; -@RunWith(SerenityRunner.class) -public class ShouldSupportCloudBeesFolders { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldSupportCloudBeesFolders extends BuildMonitorAbstractBase { Actor anna = Actor.named("Anna"); - @Managed public WebDriver browser; + public ShouldSupportCloudBeesFolders(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("cloudbees-folder") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("cloudbees-folder")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { anna.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java index 48656e405..18e6ac5e1 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java @@ -2,38 +2,45 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAnExternalProjectCreated; import net.serenitybdd.screenplay.interacting_with_jenkins_api.abilities.InteractWithJenkinsAPI; import net.serenitybdd.screenplay.interacting_with_jenkins_api.interactions.NotifyOfExternalProject; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.matchers.ProjectInformationMatchers.displaysProjectStatusAs; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Successful; import static net.serenitybdd.screenplay.GivenWhenThen.*; -@RunWith(SerenityRunner.class) -public class ShouldSupportExternalProjects { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldSupportExternalProjects extends BuildMonitorAbstractBase { Actor maggie = Actor.named("Maggie"); - @Managed public WebDriver browser; + public ShouldSupportExternalProjects(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("external-monitor-job") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("external-monitor-job")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { maggie.can(BrowseTheWeb.with(browser)) diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java index 669c8dd2f..7f021482a 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java @@ -3,35 +3,42 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; import com.sonyericsson.jenkins.plugins.bfa.HaveAShellScriptFailureCauseDefined; -import environment.JenkinsSandbox; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAFailingProjectCreated; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.containsString; -@RunWith(SerenityRunner.class) -public class ShouldTellWhatBrokeTheBuild { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class ShouldTellWhatBrokeTheBuild extends BuildMonitorAbstractBase { Actor dave = Actor.named("Dave"); - @Managed public WebDriver browser; + public ShouldTellWhatBrokeTheBuild(String jenkinsVersion) { + super(jenkinsVersion); + } - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("cloudbees-folder", "build-failure-analyzer") - ).create(); + protected List> jenkinsAfterStartRules() { + return Arrays.asList(InstallPlugins.fromUpdateCenter("cloudbees-folder", "build-failure-analyzer")); + } + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { dave.can(BrowseTheWeb.with(browser)); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java index 4e25a1642..737f69db3 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java @@ -2,42 +2,49 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import environment.JenkinsSandbox; import hudson.plugins.claim.HaveAFailingClaimableProjectCreated; import hudson.plugins.claim.tasks.Claim; import net.serenitybdd.integration.jenkins.JenkinsInstance; +import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; import net.serenitybdd.integration.jenkins.environment.rules.RegisterUserAccount; -import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.JenkinsUser; import net.serenitybdd.screenplay.jenkins.tasks.GoBack; import net.serenitybdd.screenplay.jenkins.tasks.LogIn; import net.serenitybdd.screenplayx.actions.Navigate; -import net.thucydides.core.annotations.Managed; +import net.thucydides.junit.annotations.TestData; + import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.openqa.selenium.WebDriver; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.matchers.ProjectInformationMatchers.displaysProjectStatusAs; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Claimed; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.core.Is.is; -@RunWith(SerenityRunner.class) -public class ShouldTellWhoIsFixingTheBrokenBuild { +import java.util.Arrays; +import java.util.Collection; +import java.util.List; - JenkinsUser ben = JenkinsUser.named("Ben"); +public class ShouldTellWhoIsFixingTheBrokenBuild extends BuildMonitorAbstractBase { - @Managed public WebDriver browser; + JenkinsUser ben; - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( - InstallPlugins.fromUpdateCenter("claim"), - RegisterUserAccount.of(ben) - ).create(); + public ShouldTellWhoIsFixingTheBrokenBuild(String jenkinsVersion) { + super(jenkinsVersion); + } + protected List> jenkinsAfterStartRules() { + ben = JenkinsUser.named("Ben"); + return Arrays.asList(InstallPlugins.fromUpdateCenter("claim"), RegisterUserAccount.of(ben)); + } + + @TestData + public static Collection testData(){ + return BuildMonitorAbstractBase.testData(); + } + @Before public void actorCanBrowseTheWeb() { ben.can(BrowseTheWeb.with(browser)); From 3d1bd076d6c70135dd697c6a2fafbe3392f87cf9 Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Fri, 19 Nov 2021 08:23:00 -0500 Subject: [PATCH 040/152] renaming class to BuildMonitorAcceptanceTest --- ...onitorAbstractBase.java => BuilMonitorAcceptanceTest.java} | 4 ++-- .../test/java/features/BuildMonitorShouldBeEasyToSetUp.java | 4 ++-- .../java/features/ProjectStatusShouldBeEasyToDetermine.java | 4 ++-- .../src/test/java/features/ShouldDescribeEachProject.java | 4 ++-- .../src/test/java/features/ShouldDisplayBadges.java | 4 ++-- .../src/test/java/features/ShouldDisplayConcurrentBuilds.java | 4 ++-- .../src/test/java/features/ShouldDisplayPipelineStage.java | 4 ++-- .../src/test/java/features/ShouldSupportCloudBeesFolders.java | 4 ++-- .../src/test/java/features/ShouldSupportExternalProjects.java | 4 ++-- .../src/test/java/features/ShouldTellWhatBrokeTheBuild.java | 4 ++-- .../java/features/ShouldTellWhoIsFixingTheBrokenBuild.java | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) rename build-monitor-acceptance/src/test/java/features/{BuildMonitorAbstractBase.java => BuilMonitorAcceptanceTest.java} (91%) diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java b/build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java similarity index 91% rename from build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java rename to build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java index 5c85677ac..1da5aee9c 100644 --- a/build-monitor-acceptance/src/test/java/features/BuildMonitorAbstractBase.java +++ b/build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java @@ -15,7 +15,7 @@ import java.util.List; @RunWith(SerenityParameterizedRunner.class) -public abstract class BuildMonitorAbstractBase { +public abstract class BuilMonitorAcceptanceTest { @Managed public WebDriver browser; @@ -35,7 +35,7 @@ public static Collection testData(){ return data; } - protected BuildMonitorAbstractBase(String jenkinsVersion) { + protected BuilMonitorAcceptanceTest(String jenkinsVersion) { System.setProperty("jenkins.version", jenkinsVersion); } } diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java index 2cacabff1..99d5918cc 100644 --- a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java +++ b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java @@ -24,7 +24,7 @@ import java.util.Collection; import java.util.List; -public class BuildMonitorShouldBeEasyToSetUp extends BuildMonitorAbstractBase { +public class BuildMonitorShouldBeEasyToSetUp extends BuilMonitorAcceptanceTest { Actor anna = Actor.named("Anna"); @@ -38,7 +38,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java index 5056967de..f830a73fc 100644 --- a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java +++ b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java @@ -23,7 +23,7 @@ import java.util.Collection; import java.util.List; -public class ProjectStatusShouldBeEasyToDetermine extends BuildMonitorAbstractBase { +public class ProjectStatusShouldBeEasyToDetermine extends BuilMonitorAcceptanceTest { private Actor anna = Actor.named("Anna"); @@ -37,7 +37,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java index 7555e629d..e5652ea66 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java @@ -25,7 +25,7 @@ import java.util.Collection; import java.util.List; -public class ShouldDescribeEachProject extends BuildMonitorAbstractBase { +public class ShouldDescribeEachProject extends BuilMonitorAcceptanceTest { private Actor dave = Actor.named("Dave"); @@ -39,7 +39,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index 5efb0d3b6..b0d244484 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -29,7 +29,7 @@ import java.util.Collection; import java.util.List; -public class ShouldDisplayBadges extends BuildMonitorAbstractBase { +public class ShouldDisplayBadges extends BuilMonitorAcceptanceTest { Actor paul = Actor.named("Paul"); @@ -43,7 +43,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java index 50fb9d651..073aff24f 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java @@ -25,7 +25,7 @@ import java.util.Collection; import java.util.List; -public class ShouldDisplayConcurrentBuilds extends BuildMonitorAbstractBase { +public class ShouldDisplayConcurrentBuilds extends BuilMonitorAcceptanceTest { private static String My_App = "My App"; Actor dave = Actor.named("Dave"); @@ -40,7 +40,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java index 9902d04df..d3cf9f868 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java @@ -23,7 +23,7 @@ import java.util.Collection; import java.util.List; -public class ShouldDisplayPipelineStage extends BuildMonitorAbstractBase { +public class ShouldDisplayPipelineStage extends BuilMonitorAcceptanceTest { Actor donald = Actor.named("Donald"); @@ -37,7 +37,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java index b59b73d78..f3e2c8d52 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java @@ -24,7 +24,7 @@ import java.util.Collection; import java.util.List; -public class ShouldSupportCloudBeesFolders extends BuildMonitorAbstractBase { +public class ShouldSupportCloudBeesFolders extends BuilMonitorAcceptanceTest { Actor anna = Actor.named("Anna"); @@ -38,7 +38,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java index 18e6ac5e1..0d58e0141 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java @@ -24,7 +24,7 @@ import java.util.Collection; import java.util.List; -public class ShouldSupportExternalProjects extends BuildMonitorAbstractBase { +public class ShouldSupportExternalProjects extends BuilMonitorAcceptanceTest { Actor maggie = Actor.named("Maggie"); @@ -38,7 +38,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java index 7f021482a..17961609b 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java @@ -22,7 +22,7 @@ import java.util.Collection; import java.util.List; -public class ShouldTellWhatBrokeTheBuild extends BuildMonitorAbstractBase { +public class ShouldTellWhatBrokeTheBuild extends BuilMonitorAcceptanceTest { Actor dave = Actor.named("Dave"); @@ -36,7 +36,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java index 737f69db3..5ac4b0299 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java @@ -27,7 +27,7 @@ import java.util.Collection; import java.util.List; -public class ShouldTellWhoIsFixingTheBrokenBuild extends BuildMonitorAbstractBase { +public class ShouldTellWhoIsFixingTheBrokenBuild extends BuilMonitorAcceptanceTest { JenkinsUser ben; @@ -42,7 +42,7 @@ protected List> jenkinsAfterStart @TestData public static Collection testData(){ - return BuildMonitorAbstractBase.testData(); + return BuilMonitorAcceptanceTest.testData(); } @Before From a1c8a405839fd909ccee6e17a109fe7a2bbc61bf Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Thu, 18 Nov 2021 20:14:35 -0500 Subject: [PATCH 041/152] update to jenkins 2.289.1, use java.util.function.Predicate --- .../jenkins/environment/UpdateCenter.java | 7 +- .../screenplay/jenkins/targets/Setting.java | 8 +- .../environment/UpdateCenterUnitTest.java | 13 ++- build-monitor-plugin/pom.xml | 8 -- .../viewmodel/BuildingPredicate.java | 5 +- .../buildmonitor/viewmodel/JobViews.java | 13 --- .../features/HasBadgesBadgePlugin.java | 7 +- .../HasBadgesGroovyPostbuildPlugin.java | 95 ------------------- .../viewmodel/features/HasHeadline.java | 11 +-- .../HasBadgesGroovyPostbuildPluginTest.java | 76 --------------- .../BadgeGroovyPostbuildRecipe.java | 36 ------- .../syntacticsugar/BuildStateRecipe.java | 11 --- .../syntacticsugar/JobStateRecipe.java | 2 +- .../viewmodel/syntacticsugar/Sugar.java | 4 - pom.xml | 8 +- 15 files changed, 29 insertions(+), 275 deletions(-) delete mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPlugin.java delete mode 100644 build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPluginTest.java delete mode 100644 build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeGroovyPostbuildRecipe.java diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java index 565ef9d68..a01a75d1f 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java @@ -26,11 +26,12 @@ public class UpdateCenter { private final Path tempDir; private List jenkinsLTSVersions = Arrays.asList( + Version.valueOf("2.303.3"), + Version.valueOf("2.303.2"), Version.valueOf("2.303.1"), Version.valueOf("2.289.3"), - Version.valueOf("2.277.4"), - Version.valueOf("2.263.4"), - Version.valueOf("2.249.3") + Version.valueOf("2.289.2"), + Version.valueOf("2.289.1") ); diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java index 56c28cabb..d0d7a4a0d 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java @@ -9,16 +9,10 @@ public class Setting { public static Target defining(String name) { return Target.the(format("the '%s' field", name)) - .locatedBy(lastElementMatching(either(xpathFor("input"), xpathFor("textarea"), xpathFor("select"), - xpathForTableLayout("input"), xpathForTableLayout("textarea"), xpathForTableLayout("select")))) + .locatedBy(lastElementMatching(either(xpathFor("input"), xpathFor("textarea"), xpathFor("select")))) .of(name); } - private static String xpathForTableLayout(String fieldType) { - // TODO: Deprecated Layout Since 2.277.1 - return format("//tr[td[contains(@class, 'setting-name') and contains(., '{0}')]]//%s", fieldType); - } - private static String xpathFor(String fieldType) { return format("//div[contains(@class, 'tr') and div[contains(@class, 'setting-name') and contains(., '{0}')]]//%s", fieldType); } diff --git a/build-monitor-acceptance/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java b/build-monitor-acceptance/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java index 89f0eae82..e789a237b 100644 --- a/build-monitor-acceptance/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java +++ b/build-monitor-acceptance/src/test/java/net/serenitybdd/integration/jenkins/environment/UpdateCenterUnitTest.java @@ -9,15 +9,18 @@ public class UpdateCenterUnitTest { @Test(expected = RuntimeException.class) public void getUpdateVersionToUseTooLow() { - String versionToUse = updateCenter.getUpdateVersionToUse("2.45"); + String versionToUse = updateCenter.getUpdateVersionToUse("2.280"); } @Test public void getUpdateVersionToUse() { - Assert.assertEquals("2.249.3", updateCenter.getUpdateVersionToUse("2.249.3")); - Assert.assertEquals("2.249.3", updateCenter.getUpdateVersionToUse("2.250.0")); - Assert.assertEquals("2.263.4", updateCenter.getUpdateVersionToUse("2.276.0")); + // Exact version + Assert.assertEquals("2.289.2", updateCenter.getUpdateVersionToUse("2.289.2")); + // Higher patch Assert.assertEquals("2.289.3", updateCenter.getUpdateVersionToUse("2.289.9999")); - Assert.assertEquals("2.303.1", updateCenter.getUpdateVersionToUse("2.304.0")); + // Higher minor + Assert.assertEquals("2.303.3", updateCenter.getUpdateVersionToUse("2.304.0")); + // Higher major + Assert.assertEquals("2.303.3", updateCenter.getUpdateVersionToUse("3.1.0")); } } \ No newline at end of file diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 1868b298d..2cedbdef8 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -96,7 +96,6 @@ org.jenkins-ci.modules instance-identity - 2.2 provided @@ -157,12 +156,6 @@ 1.26 true - - org.jvnet.hudson.plugins - groovy-postbuild - 2.3.1 - true - org.jenkins-ci.plugins badge @@ -187,7 +180,6 @@ org.jenkins-ci.plugins pipeline-stage-step - 2.5 true diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildingPredicate.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildingPredicate.java index 79a8070e4..7a11054af 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildingPredicate.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildingPredicate.java @@ -1,8 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; -import com.google.common.base.Predicate; import hudson.model.Run; +import java.util.function.Predicate; + import javax.annotation.Nullable; public final class BuildingPredicate implements Predicate> { @@ -13,7 +14,7 @@ private BuildingPredicate() { } @Override - public boolean apply(@Nullable Run run) { + public boolean test(@Nullable Run run) { if (run == null) { throw new RuntimeException("Run was null"); } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java index dfc714014..017be8509 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java @@ -16,10 +16,8 @@ public class JobViews { private static final String Claim = "claim"; private static final String Build_Failure_Analyzer = "build-failure-analyzer"; - private static final String Groovy_Post_Build = "groovy-postbuild"; private static final String Badge_Plugin = "badge"; private static final String Pipeline = "workflow-aggregator"; - private static final String GroovyPostbuildActionClass = "org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildAction"; private final StaticJenkinsAPIs jenkins; private final com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config; @@ -47,21 +45,10 @@ public JobView viewOf(Job job) { if (jenkins.hasPlugin(Badge_Plugin)) { viewFeatures.add(new HasBadgesBadgePlugin()); - } else if (jenkins.hasPlugin(Groovy_Post_Build) && hasGroovyPostbuildActionClass()) { - viewFeatures.add(new HasBadgesGroovyPostbuildPlugin()); } boolean isPipelineJob = jenkins.hasPlugin(Pipeline) && job instanceof WorkflowJob; return JobView.of(job, viewFeatures, isPipelineJob); } - - private boolean hasGroovyPostbuildActionClass() { - try { - Class.forName(GroovyPostbuildActionClass); - return true; - } catch (ClassNotFoundException ignore) { - return false; - } - } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java index c7fc881c9..e459f5931 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java @@ -1,14 +1,13 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; -import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import static com.google.common.collect.Lists.newArrayList; import java.util.Iterator; import java.util.List; +import java.util.function.Predicate; import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.annotate.JsonValue; @@ -30,7 +29,7 @@ public HasBadgesBadgePlugin of(JobView jobView) { @Override public Badges asJson() { - Iterator badges = Iterables.filter(job.lastBuild().allDetailsOf(BadgeAction.class), filter).iterator(); + Iterator badges = job.lastBuild().allDetailsOf(BadgeAction.class).stream().filter(filter).iterator(); return badges.hasNext() ? new Badges(badges) @@ -87,7 +86,7 @@ public final String borderColor() { private static class ActionFilter implements Predicate { @Override - public boolean apply(BadgeAction action) { + public boolean test(BadgeAction action) { return action.getIconPath() == null; } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPlugin.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPlugin.java deleted file mode 100644 index 779da6956..000000000 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPlugin.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; - -import static com.google.common.collect.Lists.newArrayList; - -import java.util.Iterator; -import java.util.List; - -import org.codehaus.jackson.annotate.JsonProperty; -import org.codehaus.jackson.annotate.JsonValue; -import org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildAction; - -/** - * @author Daniel Beland - */ -public class HasBadgesGroovyPostbuildPlugin implements Feature { - private ActionFilter filter = new ActionFilter(); - private JobView job; - - @Override - public HasBadgesGroovyPostbuildPlugin of(JobView jobView) { - this.job = jobView; - - return this; - } - - @Override - public Badges asJson() { - Iterator badges = Iterables.filter(job.lastBuild().allDetailsOf(GroovyPostbuildAction.class), filter).iterator(); - - return badges.hasNext() - ? new Badges(badges) - : null; // `null` because we don't want to serialise an empty object - } - - public static class Badges { - private final List badges = newArrayList(); - - public Badges(Iterator badgeActions) { - while (badgeActions.hasNext()) { - badges.add(new Badge(badgeActions.next())); - } - } - - @JsonValue - public List value() { - return ImmutableList.copyOf(badges); - } - } - - public static class Badge { - private final GroovyPostbuildAction badge; - - public Badge(GroovyPostbuildAction badge) { - this.badge = badge; - } - - @JsonProperty - public final String text() { - return badge.getText(); - } - - @JsonProperty - public final String color() { - return badge.getColor(); - } - - @JsonProperty - public final String background() { - return badge.getBackground(); - } - - @JsonProperty - public final String border() { - return badge.getBorder(); - } - - @JsonProperty - public final String borderColor() { - return badge.getBorderColor(); - } - } - - private static class ActionFilter implements Predicate { - @Override - public boolean apply(GroovyPostbuildAction action) { - return action.getIconPath() == null; - } - } - -} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java index ee338d83d..d5b1fa6f3 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java @@ -1,13 +1,11 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; -import com.google.common.base.Predicate; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.*; import java.util.List; +import java.util.function.Predicate; -import static com.google.common.collect.Iterables.filter; -import static com.google.common.collect.Iterables.getFirst; import static com.google.common.collect.Lists.newArrayList; /** @@ -42,11 +40,12 @@ private CandidateHeadline headlineOf(final JobView job) { new HeadlineOfFailing(job, config) ); - return getFirst(filter(availableHeadlines, new Predicate() { + + return availableHeadlines.stream().filter(new Predicate() { @Override - public boolean apply(CandidateHeadline candidateHeadline) { + public boolean test(CandidateHeadline candidateHeadline) { return candidateHeadline.isApplicableTo(job); } - }), new NoHeadline()); + }).findFirst().orElse(new NoHeadline()); } } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPluginTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPluginTest.java deleted file mode 100644 index 46a0c354c..000000000 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesGroovyPostbuildPluginTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; - -import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; -import jenkins.model.Jenkins; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.collection.IsCollectionWithSize.hasSize; -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; - -import java.net.URL; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class, URL.class}) -public class HasBadgesGroovyPostbuildPluginTest { - private JobView job; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Mock - private Jenkins jenkins; - - @Before - public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); - } - - @Test - public void should_support_job_without_badges() throws Exception { - job = a(jobView().which(new HasBadgesGroovyPostbuildPlugin()).of( - a(job()))); - - assertThat(serialisedBadgesDetailsOf(job), is(nullValue())); - } - - @Test - public void should_convert_badges_to_json() throws Exception { - job = a(jobView().which(new HasBadgesGroovyPostbuildPlugin()).of( - a(job().whereTheLast(build().hasBadgesGroovyPostbuildPlugin(groovyPostbuildBadge().withText("badge1"), groovyPostbuildBadge().withText("badge2")))))); - - assertThat(serialisedBadgesDetailsOf(job).value(), hasSize(2)); - } - - @Test - public void should_ignore_badges_with_icon() throws Exception { - job = a(jobView().which(new HasBadgesGroovyPostbuildPlugin()).of( - a(job().whereTheLast(build().hasBadgesGroovyPostbuildPlugin(groovyPostbuildBadge().withIcon("icon.gif", "badge1"), groovyPostbuildBadge().withText("badge2")))))); - - assertThat(serialisedBadgesDetailsOf(job).value(), hasSize(1)); - } - - @Test - public void should_report_badges_from_latest_build() throws Exception { - job = a(jobView().which(new HasBadgesGroovyPostbuildPlugin()).of( - a(job().whereTheLast(build().isStillBuilding().hasBadgesGroovyPostbuildPlugin(groovyPostbuildBadge().withText("badge1"))) - .andThePrevious(build().hasBadgesGroovyPostbuildPlugin(groovyPostbuildBadge().withText("badge1"), groovyPostbuildBadge().withText("badge2")))))); - - assertThat(serialisedBadgesDetailsOf(job).value(), hasSize(1)); - } - - private HasBadgesGroovyPostbuildPlugin.Badges serialisedBadgesDetailsOf(JobView job) { - return job.which(HasBadgesGroovyPostbuildPlugin.class).asJson(); - } -} diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeGroovyPostbuildRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeGroovyPostbuildRecipe.java deleted file mode 100644 index 6c6fac81a..000000000 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeGroovyPostbuildRecipe.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; - -import com.google.common.base.Supplier; - -import org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildAction; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * @author Daniel Beland - */ -public class BadgeGroovyPostbuildRecipe implements Supplier { - private GroovyPostbuildAction badge; - - public BadgeGroovyPostbuildRecipe() { - badge = mock(GroovyPostbuildAction.class); - } - - public BadgeGroovyPostbuildRecipe withText(String text) throws Exception { - when(badge.getIconPath()).thenReturn(null); - when(badge.getText()).thenReturn(text); - return this; - } - - public BadgeGroovyPostbuildRecipe withIcon(String icon, String text) throws Exception { - when(badge.getIconPath()).thenReturn(icon); - when(badge.getText()).thenReturn(text); - return this; - } - - @Override - public GroovyPostbuildAction get() { - return badge; - } -} \ No newline at end of file diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index 58bd2c6be..601a18a1e 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -14,7 +14,6 @@ import jenkins.model.InterruptedBuildAction; import com.jenkinsci.plugins.badge.action.BadgeAction; -import org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildAction; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; @@ -228,16 +227,6 @@ private FoundFailureCause failure(String name) { return failure; } - public BuildStateRecipe hasBadgesGroovyPostbuildPlugin(BadgeGroovyPostbuildRecipe... badges) { - List actions = new ArrayList(); - for (int i = 0; i < badges.length; i++) { - actions.add(badges[i].get()); - } - when(build.getActions(GroovyPostbuildAction.class)).thenReturn(actions); - - return this; - } - public BuildStateRecipe hasBadgesBadgePlugin(BadgeBadgePluginRecipe... badges) { List actions = new ArrayList(); for (int i = 0; i < badges.length; i++) { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java index 86964d54b..9c9758680 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java @@ -1,6 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Predicate; import com.google.common.base.Supplier; import hudson.model.AbstractBuild; import hudson.model.ItemGroup; @@ -12,6 +11,7 @@ import java.util.Iterator; import java.util.List; import java.util.Stack; +import java.util.function.Predicate; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java index ed8ed7a5f..ee7077279 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java @@ -21,10 +21,6 @@ public static BuildStateRecipe build() { return new BuildStateRecipe(); } - public static BadgeGroovyPostbuildRecipe groovyPostbuildBadge() { - return new BadgeGroovyPostbuildRecipe(); - } - public static BadgeBadgePluginRecipe badgePluginBadge() { return new BadgeBadgePluginRecipe(); } diff --git a/pom.xml b/pom.xml index a8dbe95b2..1d6842e1a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 - 2.249.3 + 2.289.1 8 UTF-8 9.4.19.v20190610 @@ -13,7 +13,7 @@ org.jenkins-ci.plugins plugin - 4.25 + 4.31 @@ -59,8 +59,8 @@ io.jenkins.tools.bom - bom-2.249.x - 950.v396cb834de1e + bom-2.289.x + 987.v4ade2e49fe70 import pom From 2629889b6d810825f698fb075611fd6684a3cb89 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 17:10:34 -0800 Subject: [PATCH 042/152] Remove all usages of Guava --- build-monitor-acceptance/pom.xml | 1 + .../model/ProjectInformation.java | 6 +-- .../build_monitor/model/ProjectStatus.java | 13 +++--- .../integration/jenkins/JenkinsInstance.java | 11 +++-- .../integration/jenkins/TestEnvironment.java | 6 +-- .../jenkins/client/JenkinsClient.java | 4 +- .../jenkins/environment/UpdateCenter.java | 4 +- .../environment/rules/FindFreePort.java | 5 ++- .../rules/InstallPluginsFromDisk.java | 9 ++-- .../rules/InstallPluginsFromUpdateCenter.java | 4 +- .../integration/utils/ListFunctions.java | 10 ++--- .../screenplay/jenkins/actions/EnterCode.java | 5 +-- .../screenplay/jenkins/targets/Setting.java | 3 +- .../jenkins/tasks/configuration/TodoList.java | 4 +- .../build_steps/GroovyScript.java | 11 +++-- .../build_steps/ShellScript.java | 11 +++-- .../plugins/buildmonitor/Config.java | 9 ++-- .../plugins/buildmonitor/api/Success.java | 4 +- .../culprits/BuildCulpritsAbstractBuild.java | 41 ++++++++----------- .../culprits/BuildCulpritsRetriever.java | 8 ---- .../culprits/BuildCulpritsWorkflowRun.java | 31 ++++++-------- .../buildmonitor/functions/NullSafety.java | 14 ------- .../BuildMonitorInstallation.java | 5 +-- .../buildmonitor/viewmodel/BuildView.java | 11 ++--- .../viewmodel/BuildViewModel.java | 2 +- .../buildmonitor/viewmodel/JobView.java | 14 +++---- .../buildmonitor/viewmodel/JobViews.java | 5 +-- .../buildmonitor/viewmodel/NullBuildView.java | 4 +- .../viewmodel/features/CanBeClaimed.java | 3 +- .../features/CanBeDiagnosedForProblems.java | 11 +++-- .../features/HasBadgesBadgePlugin.java | 9 ++-- .../viewmodel/features/HasHeadline.java | 8 ++-- .../features/KnowsCurrentBuildsDetails.java | 12 +++--- .../features/headline/HeadlineOfAborted.java | 5 ++- .../headline/HeadlineOfExecuting.java | 9 ++-- .../features/headline/HeadlineOfFailing.java | 25 ++++++----- .../features/headline/HeadlineOfFixed.java | 12 +++--- .../BadgeBadgePluginRecipe.java | 3 +- .../syntacticsugar/BuildStateRecipe.java | 8 ++-- .../syntacticsugar/ConfigStateRecipe.java | 2 +- .../syntacticsugar/JobStateRecipe.java | 4 +- .../syntacticsugar/JobViewRecipe.java | 7 ++-- .../viewmodel/syntacticsugar/Loops.java | 8 ++-- .../viewmodel/syntacticsugar/Sugar.java | 3 +- 44 files changed, 168 insertions(+), 216 deletions(-) delete mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/functions/NullSafety.java diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 85d6e6e1d..f3963455a 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -146,6 +146,7 @@ + com.google.guava guava diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java index 50e28baba..831c6ab77 100644 --- a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java @@ -1,7 +1,7 @@ package com.smartcodeltd.jenkinsci.plugins.build_monitor.model; -import com.google.common.collect.ImmutableList; - +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -19,7 +19,7 @@ public String name() { } public List status() { - return ImmutableList.copyOf(status); + return Collections.unmodifiableList(new ArrayList<>(status)); } @Override diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java index 585caa89c..cb9147b67 100644 --- a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectStatus.java @@ -1,11 +1,10 @@ package com.smartcodeltd.jenkinsci.plugins.build_monitor.model; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -37,8 +36,10 @@ public static List fromMultiple(String cssClasses) { // todo: Java 8? List statuses = new ArrayList<>(); - for(String statusClass : Sets.intersection(projectStatusClasses(), setOf(split(cssClasses)))) { - statuses.add(ProjectStatus.from(statusClass)); + for (String statusClass : projectStatusClasses()) { + if (setOf(split(cssClasses)).contains(statusClass)) { + statuses.add(ProjectStatus.from(statusClass)); + } } return statuses; @@ -66,7 +67,7 @@ private static List split(String spaceSeparatedItems) { } private static Set setOf(List items) { - return ImmutableSet.copyOf(items); + return Collections.unmodifiableSet(new HashSet<>(items)); } private static List stringRepresentationsOf(Collection items) { diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java index a2e236dd7..d8c07b6ca 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java @@ -1,6 +1,5 @@ package net.serenitybdd.integration.jenkins; -import com.beust.jcommander.internal.Lists; import net.serenitybdd.integration.jenkins.client.JenkinsClient; import net.serenitybdd.integration.jenkins.environment.PluginDescription; import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; @@ -17,9 +16,9 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collections; import java.util.List; -import static com.google.common.collect.ImmutableList.copyOf; import static java.lang.String.format; import static java.util.Arrays.asList; import static net.serenitybdd.integration.utils.ListFunctions.concat; @@ -32,9 +31,9 @@ public class JenkinsInstance implements TestRule { private JenkinsClient client = null; // instantiated when the Jenkins server is up and running - private List> customRulesToApplyBeforeStart = Lists.newArrayList(); + private List> customRulesToApplyBeforeStart = new ArrayList<>(); private List> defaultRules; - private List> customRulesToApplyAfterStart = Lists.newArrayList(); + private List> customRulesToApplyAfterStart = new ArrayList<>(); /** * @param pluginUnderTest @@ -102,13 +101,13 @@ public void setPort(int portNumber) { } public > JenkinsInstance beforeStartApply(List customRulesToBeApplied) { - this.customRulesToApplyBeforeStart = copyOf(customRulesToBeApplied); + this.customRulesToApplyBeforeStart = Collections.unmodifiableList(new ArrayList<>(customRulesToBeApplied)); return this; } public > JenkinsInstance afterStartApply(List customRulesToBeApplied) { - this.customRulesToApplyAfterStart = copyOf(customRulesToBeApplied); + this.customRulesToApplyAfterStart = Collections.unmodifiableList(new ArrayList<>(customRulesToBeApplied)); return this; } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java index 7500cd263..3b1f17e1b 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/TestEnvironment.java @@ -2,15 +2,15 @@ import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; +import java.util.ArrayList; import java.util.List; -import static com.google.common.collect.Lists.newArrayList; import static java.util.Arrays.asList; public class TestEnvironment { private final JenkinsInstance instance; - private final List> rulesToBeAppliedBeforeJenkinsStart = newArrayList(); - private final List> rulesToBeAppliedAfterJenkinsStart = newArrayList(); + private final List> rulesToBeAppliedBeforeJenkinsStart = new ArrayList<>(); + private final List> rulesToBeAppliedAfterJenkinsStart = new ArrayList<>(); public TestEnvironment(JenkinsInstance instance) { this.instance = instance; diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java index fd4ca6b4f..25cfc4d14 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java @@ -1,7 +1,5 @@ package net.serenitybdd.integration.jenkins.client; -import com.google.common.base.Joiner; - import hudson.cli.CLI; import net.serenitybdd.integration.jenkins.process.JenkinsProcess; import org.jdeferred.Promise; @@ -148,7 +146,7 @@ public void setExternalBuildResult(String projectName, String result) { } private synchronized int executeGroovy(Promise promise, String... groovyScriptLines) throws InterruptedException { - String script = Joiner.on(";\n").join(groovyScriptLines); + String script = String.join(";\n", groovyScriptLines); //TODO use RealJenkinsRule //return executor.call("groovy", "=").execute(withInput(script), info(logger), error(logger)); diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java index a01a75d1f..58f30a297 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java @@ -1,7 +1,6 @@ package net.serenitybdd.integration.jenkins.environment; import com.github.zafarkhaja.semver.Version; -import com.google.common.base.Charsets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,6 +10,7 @@ import java.net.URL; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; @@ -77,7 +77,7 @@ String getUpdateVersionToUse(String jenkinsVersionString) { } private String stripJSONPEnvelope(Path jsonp) throws IOException { - return Files.readAllLines(jsonp, Charsets.UTF_8).get(1); + return Files.readAllLines(jsonp, StandardCharsets.UTF_8).get(1); } private Path download(URL link) throws IOException { diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java index d1f78c851..9eeda40c0 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/FindFreePort.java @@ -10,7 +10,6 @@ import java.io.IOException; import java.net.ServerSocket; -import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; public class FindFreePort implements ApplicativeTestRule { @@ -31,7 +30,9 @@ public static FindFreePort useFreePortFromTheFollowingRange(int rangeStart, int } public FindFreePort(int rangeStart, int rangeEnd) { - checkArgument(rangeStart <= rangeEnd, format("Start of the port range (%d) should be lower than the end of the range (%d)", rangeStart, rangeEnd)); + if (rangeStart > rangeEnd) { + throw new IllegalArgumentException(format("Start of the port range (%d) should be lower than the end of the range (%d)", rangeStart, rangeEnd)); + } this.rangeStart = rangeStart; this.rangeEnd = rangeEnd; diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java index f3ca1d95a..4bebb0cd8 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java @@ -1,6 +1,5 @@ package net.serenitybdd.integration.jenkins.environment.rules; -import com.google.common.base.Joiner; import net.serenitybdd.integration.jenkins.JenkinsInstance; import org.junit.rules.TestRule; import org.junit.rules.TestWatcher; @@ -12,8 +11,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import java.util.stream.Collectors; -import static com.google.common.base.Preconditions.checkArgument; import static java.util.Arrays.asList; public class InstallPluginsFromDisk implements ApplicativeTestRule { @@ -31,7 +30,7 @@ public TestRule applyTo(final JenkinsInstance jenkins) { @Override protected void starting(Description description) { Path pluginsDir = jenkins.home().resolve("plugins"); - String plugins = Joiner.on(", ").join(pluginsToInstall); + String plugins = pluginsToInstall.stream().map(Object::toString).collect(Collectors.joining(", ")); Log.info("Installing {} into {}", plugins, pluginsDir); @@ -47,7 +46,9 @@ protected void starting(Description description) { } private Path existing(Path plugin) { - checkArgument(Files.exists(plugin), String.format("Plugin file '%s' doesn't exist and couldn't be installed.", plugin)); + if (!Files.exists(plugin)) { + throw new IllegalArgumentException(String.format("Plugin file '%s' doesn't exist and couldn't be installed.", plugin)); + } return plugin; } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java index 890a6dd0a..b1d3dfa16 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromUpdateCenter.java @@ -1,6 +1,5 @@ package net.serenitybdd.integration.jenkins.environment.rules; -import com.google.common.base.Charsets; import net.serenitybdd.integration.jenkins.JenkinsInstance; import net.serenitybdd.integration.jenkins.environment.UpdateCenter; import org.junit.rules.TestRule; @@ -10,6 +9,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; @@ -47,7 +47,7 @@ private void warmUpUpdateCenterCacheFor(JenkinsInstance jenkins) { String json = updateCenter.jsonFor(jenkins.version()); Path destination = Files.createDirectories(jenkins.home().resolve("updates")).resolve("default.json"); - Files.write(destination, json.getBytes(Charsets.UTF_8)); + Files.write(destination, json.getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { throw new RuntimeException("Couldn't warm up the Update Center cache", e); } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java index d7b3d4cfd..82021f80b 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/utils/ListFunctions.java @@ -1,8 +1,6 @@ package net.serenitybdd.integration.utils; -import com.beust.jcommander.internal.Lists; -import com.google.common.collect.ImmutableList; - +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -10,10 +8,10 @@ public class ListFunctions { public static List concat(List... lists) { if (lists.length == 0) { - return Collections.EMPTY_LIST; + return Collections.emptyList(); } - List combined = Lists.newArrayList(); + List combined = new ArrayList<>(); for (List list : lists) { combined.addAll(list); @@ -34,6 +32,6 @@ public static T head(List list) { } public static List tail(List list) { - return ImmutableList.copyOf(list.subList(1, list.size())); + return Collections.unmodifiableList(new ArrayList<>(list.subList(1, list.size()))); } } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java index a2a2331f8..2dedfc059 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java @@ -1,6 +1,5 @@ package net.serenitybdd.screenplay.jenkins.actions; -import com.google.common.base.Joiner; import net.serenitybdd.screenplay.Action; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.actions.Click; @@ -20,11 +19,11 @@ public static EnterCode asFollows(String... lines) { } public Action intoTheCodeMirror(Target editorField) { - return instrumented(EnterCodeIntoCodeMirrorEditor.class, editorField, Joiner.on(System.lineSeparator()).join(lines)); + return instrumented(EnterCodeIntoCodeMirrorEditor.class, editorField, String.join(System.lineSeparator(), lines)); } public Action intoThePipelineEditor(Target editorField) { - return instrumented(EnterCodeIntoPipelineEditor.class, editorField, Joiner.on(System.lineSeparator()).join(lines)); + return instrumented(EnterCodeIntoPipelineEditor.class, editorField, String.join(System.lineSeparator(), lines)); } public EnterCode(List lines) { diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java index d0d7a4a0d..0d35555e8 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/targets/Setting.java @@ -1,6 +1,5 @@ package net.serenitybdd.screenplay.jenkins.targets; -import com.google.common.base.Joiner; import net.serenitybdd.screenplay.targets.Target; import static java.lang.String.format; @@ -18,7 +17,7 @@ private static String xpathFor(String fieldType) { } private static String either(String... xpaths) { - return Joiner.on(" | ").join(xpaths); + return String.join(" | ", xpaths); } private static String lastElementMatching(String xpath) { diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java index f08003737..e5f832f3f 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java @@ -1,10 +1,10 @@ package net.serenitybdd.screenplay.jenkins.tasks.configuration; -import com.beust.jcommander.internal.Lists; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.Performable; import net.serenitybdd.screenplay.Task; +import java.util.ArrayList; import java.util.List; import static java.util.Arrays.asList; @@ -42,5 +42,5 @@ private Performable[] perform(List todos) { return todos.toArray(new Performable[todos.size()]); } - private final List todos = Lists.newArrayList(); + private final List todos = new ArrayList<>(); } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java index 525aeed62..e4952f9a6 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScript.java @@ -1,12 +1,11 @@ package net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps; -import com.google.common.base.Function; -import com.google.common.base.Joiner; - import javax.annotation.Nullable; +import java.util.Arrays; import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; -import static com.google.common.collect.Lists.transform; import static java.util.Arrays.asList; public class GroovyScript { @@ -20,13 +19,13 @@ public GroovyScript definedAs(String... lines) { } public GroovyScript definedAs(List lines) { - this.code = Joiner.on('\n').join(lines); + this.code = String.join("\n", lines); return this; } public GroovyScript andOutputs(String... lines) { - return definedAs(transform(asList(lines), mapEachLineTo("echo \"%s\";"))); + return definedAs(Arrays.stream(lines).map(mapEachLineTo("echo \"%s\";")).collect(Collectors.toList())); } public String code() { diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java index b0359dde4..1607dedf0 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/ShellScript.java @@ -1,12 +1,11 @@ package net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps; -import com.google.common.base.Function; -import com.google.common.base.Joiner; - import javax.annotation.Nullable; +import java.util.Arrays; import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; -import static com.google.common.collect.Lists.transform; import static java.util.Arrays.asList; public class ShellScript { @@ -20,13 +19,13 @@ public ShellScript definedAs(String... lines) { } public ShellScript definedAs(List lines) { - this.code = Joiner.on('\n').join(lines); + this.code = String.join("\n", lines); return this; } public ShellScript andOutputs(String... lines) { - return definedAs(transform(asList(lines), mapEachLineTo("echo \"%s\";"))); + return definedAs(Arrays.stream(lines).map(mapEachLineTo("echo \"%s\";")).collect(Collectors.toList())); } public String code() { diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java index 3d7b2e1da..61d09df61 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java @@ -4,8 +4,7 @@ import hudson.model.Job; import java.util.Comparator; - -import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.functions.NullSafety.getOrElse; +import java.util.Optional; public class Config { @@ -25,7 +24,7 @@ public static Config defaultConfig() { * https://github.com/jan-molak/jenkins-build-monitor-plugin/issues/43 */ - return getOrElse(order, new ByName()); + return Optional.ofNullable(order).orElse(new ByName()); } public void setOrder(Comparator> order) { @@ -33,7 +32,7 @@ public void setOrder(Comparator> order) { } public BuildFailureAnalyzerDisplayedField getBuildFailureAnalyzerDisplayedField() { - return getOrElse(buildFailureAnalyzerDisplayedField, BuildFailureAnalyzerDisplayedField.Name); + return Optional.ofNullable(buildFailureAnalyzerDisplayedField).orElse(BuildFailureAnalyzerDisplayedField.Name); } public void setBuildFailureAnalyzerDisplayedField(String buildFailureAnalyzerDisplayedField) { @@ -41,7 +40,7 @@ public void setBuildFailureAnalyzerDisplayedField(String buildFailureAnalyzerDis } public boolean shouldDisplayCommitters() { - return getOrElse(displayCommitters, true); + return Optional.ofNullable(displayCommitters).orElse(true); } public void setDisplayCommitters(boolean flag) { diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java index e75bc04c5..ee1eea916 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java @@ -1,8 +1,8 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.api; -import com.google.common.collect.ImmutableMap; import org.codehaus.jackson.annotate.JsonProperty; +import java.util.Collections; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -27,7 +27,7 @@ public T data() { @JsonProperty public Map meta() { - return ImmutableMap.of( + return Collections.singletonMap( "response_time_ms", TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTimeNanos, TimeUnit.NANOSECONDS) ); } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java index 1346b46e1..709be22a8 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java @@ -1,16 +1,17 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.culprits; -import com.google.common.base.Function; -import com.google.common.collect.Iterables; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; + import hudson.model.AbstractBuild; import hudson.model.Run; import hudson.model.User; import hudson.scm.ChangeLogSet; +import java.util.Collections; import java.util.Set; import java.util.TreeSet; - -import static com.google.common.collect.Iterables.transform; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; class BuildCulpritsAbstractBuild extends BuildCulpritsRetriever { @@ -19,30 +20,24 @@ class BuildCulpritsAbstractBuild extends BuildCulpritsRetriever { @Override public Set getCulprits(Run run) { AbstractBuild abstractBuild = (AbstractBuild) run; - Set culprits = new TreeSet(); - Iterable forAbstractBuild = transform(abstractBuild.getCulprits(), new Function() { - @Override - public String apply(User culprit) { - return culprit.getFullName(); - } - }); - Iterables.addAll(culprits, forAbstractBuild); - return culprits; + return new TreeSet<>( + abstractBuild.getCulprits().stream() + .map(User::getFullName) + .collect(Collectors.toSet())); } @Override + @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") protected Set getCommittersForRun(Run run) { AbstractBuild abstractBuild = (AbstractBuild) run; - Set committers = new TreeSet(); - Iterable iterable = transform(nonNullIterable(((AbstractBuild) abstractBuild) - .getChangeSet()), new Function() { - @Override - public String apply(ChangeLogSet.Entry entry) { - return entry.getAuthor().getFullName(); - } - }); - Iterables.addAll(committers, iterable); - return committers; + ChangeLogSet cs = abstractBuild.getChangeSet(); + if (cs == null) { + return Collections.emptySet(); + } + return new TreeSet<>( + StreamSupport.stream(cs.spliterator(), false) + .map(entry -> entry.getAuthor().getFullName()) + .collect(Collectors.toSet())); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsRetriever.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsRetriever.java index 29a8e45e7..310c476cc 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsRetriever.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsRetriever.java @@ -8,9 +8,6 @@ import java.util.Set; -import static com.google.common.collect.Lists.newArrayList; -import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.functions.NullSafety.getOrElse; - /** * Created by Erik Håkansson on 2017-04-25. * https://github.com/erikhakansson @@ -27,11 +24,6 @@ public static BuildCulpritsRetriever getInstanceForRun(Run run, StaticJenk } } - @SuppressWarnings("unchecked") - static T nonNullIterable(T list) { - return (T) getOrElse(list, newArrayList()); - } - public abstract Set getCulprits(Run run); protected abstract Set getCommittersForRun(Run run); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java index d93c98d63..159031abe 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java @@ -1,17 +1,14 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.culprits; -import com.google.common.base.Function; -import com.google.common.collect.Iterables; import hudson.model.Result; import hudson.model.Run; -import hudson.scm.ChangeLogSet; import org.jenkinsci.plugins.workflow.job.WorkflowRun; -import javax.annotation.Nullable; +import java.util.Objects; import java.util.Set; import java.util.TreeSet; - -import static com.google.common.collect.Iterables.transform; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; class BuildCulpritsWorkflowRun extends BuildCulpritsRetriever { @@ -44,18 +41,14 @@ public Set getCulprits(Run run) { @Override protected Set getCommittersForRun(Run run) { WorkflowRun workflowRun = (WorkflowRun) run; - Set committers = new TreeSet(); - for (ChangeLogSet changeLogSet : workflowRun.getChangeSets()) { - Iterables - .addAll(committers, transform(nonNullIterable(changeLogSet), new Function - () { - @Override - public String apply(@Nullable ChangeLogSet.Entry entry) { - return entry != null ? entry.getAuthor().getFullName() : null; - } - })); - } - return committers; + return new TreeSet<>( + workflowRun.getChangeSets().stream() + .filter(Objects::nonNull) + .flatMap( + changeLogSet -> + StreamSupport.stream(changeLogSet.spliterator(), false)) + .map(entry -> entry != null ? entry.getAuthor().getFullName() : null) + .collect(Collectors.toSet())); } private Set getCulpritsForRun(WorkflowRun from, WorkflowRun to) { @@ -66,7 +59,7 @@ private Set getCulpritsForRun(WorkflowRun from, WorkflowRun to) { if (next == null || next.getNumber() >= to.getNumber()) { break; } - Iterables.addAll(culprits, getCommitters(next)); + culprits.addAll(getCommitters(next)); } return culprits; } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/functions/NullSafety.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/functions/NullSafety.java deleted file mode 100644 index 04eb55cef..000000000 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/functions/NullSafety.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugins.buildmonitor.functions; - -public class NullSafety { - - /** - * @param value a value that can be a potential null - * @param defaultValue a default to be returned if the value is null - * - * @return either value or defaultValue - */ - public static T getOrElse(T value, T defaultValue) { - return value != null ? value : defaultValue; - } -} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallation.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallation.java index 672945b88..c849c2d40 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallation.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallation.java @@ -2,8 +2,7 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; -import static com.google.common.base.Charsets.UTF_8; -import static com.google.common.hash.Hashing.sha256; +import org.apache.commons.codec.digest.DigestUtils; public class BuildMonitorInstallation { private static final String UNKNOWN = "unknown"; @@ -26,7 +25,7 @@ public BuildMonitorInstallation(StaticJenkinsAPIs jenkinsAPIs) { public String anonymousCorrelationId() { // we only need to calculate this once if (UNKNOWN.equalsIgnoreCase(anonymousCorrelationId)) { - anonymousCorrelationId = sha256().hashString(jenkins.encodedPublicKey(), UTF_8).toString(); + anonymousCorrelationId = DigestUtils.sha256Hex(jenkins.encodedPublicKey()); } return anonymousCorrelationId; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildView.java index 6110b39f2..cb6bf4d20 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildView.java @@ -1,7 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.culprits.BuildCulpritsRetriever; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.RelativeLocation; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; @@ -14,10 +12,9 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Optional; import java.util.Set; -import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.functions.NullSafety.getOrElse; - public class BuildView implements BuildViewModel { private final Run build; @@ -26,7 +23,7 @@ public class BuildView implements BuildViewModel { private final Date systemTime; private final BuildCulpritsRetriever buildCulpritsRetriever; - @VisibleForTesting + // Visible for testing static BuildView of(Run build) { return new BuildView(build, false, RelativeLocation.of(build.getParent()), new Date()); } @@ -102,7 +99,7 @@ public int progress() { @Override public String description() { - return getOrElse(build.getDescription(), ""); + return Optional.ofNullable(build.getDescription()).orElse(""); } @Override @@ -144,7 +141,7 @@ public Set committers() { @Override public Optional detailsOf(Class jenkinsAction) { - return Optional.fromNullable(build.getAction(jenkinsAction)); + return Optional.ofNullable(build.getAction(jenkinsAction)); } @Override diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewModel.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewModel.java index 3a54f31de..e79a1e569 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewModel.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewModel.java @@ -1,11 +1,11 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; -import com.google.common.base.Optional; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; import hudson.model.Action; import hudson.model.Result; import java.util.List; +import java.util.Optional; import java.util.Set; public interface BuildViewModel { diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java index 86def670d..7824c4823 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java @@ -1,7 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.RelativeLocation; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.Feature; @@ -13,11 +11,13 @@ import org.codehaus.jackson.map.annotate.JsonSerialize; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Objects; -import static com.google.common.collect.Lists.newArrayList; import static java.lang.String.format; /** @@ -30,7 +30,7 @@ public class JobView { private final boolean isPipelineJob; private final RelativeLocation relative; - private final List features = newArrayList(); + private final List features = new ArrayList<>(); public static JobView of(Job job, List features, boolean isPipelineJob) { return new JobView(job, features, isPipelineJob, RelativeLocation.of(job), new Date()); @@ -49,7 +49,7 @@ public JobView(Job job, List features, boolean isPipelineJob, Rel } public List features() { - return ImmutableList.copyOf(features); + return Collections.unmodifiableList(new ArrayList<>(features)); } public F which(Class requestedFeature) { @@ -119,7 +119,7 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return Objects.equal(job, obj); + return Objects.equals(job, obj); } @Override @@ -131,7 +131,7 @@ public String toString() { @SuppressWarnings("unchecked") public List currentBuilds() { - List currentBuilds = newArrayList(); + List currentBuilds = new ArrayList<>(); RunList> runList = ((RunList>)job.getNewBuilds()).filter(BuildingPredicate.INSTANCE); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java index 017be8509..5b1afd379 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java @@ -6,10 +6,9 @@ import hudson.model.Job; import org.jenkinsci.plugins.workflow.job.WorkflowJob; +import java.util.ArrayList; import java.util.List; -import static com.google.common.collect.Lists.newArrayList; - /** * @author Jan Molak */ @@ -28,7 +27,7 @@ public JobViews(StaticJenkinsAPIs jenkins, com.smartcodeltd.jenkinsci.plugins.bu } public JobView viewOf(Job job) { - List viewFeatures = newArrayList(); + List viewFeatures = new ArrayList<>(); // todo: a more elegant way of assembling the features would be nice viewFeatures.add(new HasHeadline(new HeadlineConfig(config.shouldDisplayCommitters()))); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java index a606964f9..d68ed512c 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java @@ -1,6 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; -import com.google.common.base.Optional; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; import hudson.model.Action; import hudson.model.BuildBadgeAction; @@ -9,6 +8,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; public class NullBuildView implements BuildViewModel { @@ -95,7 +95,7 @@ public Set committers() { @Override public Optional detailsOf(Class jenkinsAction) { - return Optional.absent(); + return Optional.empty(); } @Override diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java index b6d503924..6d436140c 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java @@ -1,10 +1,11 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; -import com.google.common.base.Optional; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import hudson.plugins.claim.ClaimBuildAction; import org.codehaus.jackson.annotate.JsonProperty; +import java.util.Optional; + public class CanBeClaimed implements Feature { private JobView job; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java index 7c726a6ba..42a6dc0c4 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java @@ -1,16 +1,15 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableList; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config.BuildFailureAnalyzerDisplayedField; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction; import com.sonyericsson.jenkins.plugins.bfa.model.FoundFailureCause; import org.codehaus.jackson.annotate.JsonValue; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; - -import static com.google.common.collect.Lists.newArrayList; +import java.util.Optional; public class CanBeDiagnosedForProblems implements Feature { private JobView job; @@ -38,7 +37,7 @@ public Problems asJson() { public static class Problems { - private final List failures = newArrayList(); + private final List failures = new ArrayList<>(); public Problems(FailureCauseBuildAction action, BuildFailureAnalyzerDisplayedField displayedField) { if (displayedField != BuildFailureAnalyzerDisplayedField.None) { @@ -50,7 +49,7 @@ public Problems(FailureCauseBuildAction action, BuildFailureAnalyzerDisplayedFie @JsonValue public List value() { - return ImmutableList.copyOf(failures); + return Collections.unmodifiableList(new ArrayList<>(failures)); } } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java index e459f5931..588709f5d 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java @@ -1,10 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; -import com.google.common.collect.ImmutableList; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; -import static com.google.common.collect.Lists.newArrayList; - +import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.function.Predicate; @@ -37,7 +36,7 @@ public Badges asJson() { } public static class Badges { - private final List badges = newArrayList(); + private final List badges = new ArrayList<>(); public Badges(Iterator badgeActions) { while (badgeActions.hasNext()) { @@ -47,7 +46,7 @@ public Badges(Iterator badgeActions) { @JsonValue public List value() { - return ImmutableList.copyOf(badges); + return Collections.unmodifiableList(new ArrayList<>(badges)); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java index d5b1fa6f3..a8fa5ff59 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java @@ -3,11 +3,11 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.*; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.function.Predicate; -import static com.google.common.collect.Lists.newArrayList; - /** * @author Jan Molak */ @@ -33,14 +33,14 @@ public Headline asJson() { } private CandidateHeadline headlineOf(final JobView job) { - List availableHeadlines = newArrayList( + List availableHeadlines = new ArrayList<>(); + Collections.addAll(availableHeadlines, new HeadlineOfExecuting(job, config), new HeadlineOfAborted(job, config), new HeadlineOfFixed(job, config), new HeadlineOfFailing(job, config) ); - return availableHeadlines.stream().filter(new Predicate() { @Override public boolean test(CandidateHeadline candidateHeadline) { diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java index 93c025239..f7f85547e 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java @@ -1,13 +1,11 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; -import com.google.common.base.Joiner; -import com.google.common.collect.ImmutableList; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; -import static com.google.common.collect.Lists.newArrayList; - +import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -43,13 +41,13 @@ private static String formattedDuration(Duration duration) { private static String formattedStages(List stages) { if (!stages.isEmpty()) { - return "[" + Joiner.on(", ").join(stages) + "]"; + return "[" + String.join(", ", stages) + "]"; } return ""; } public static class CurrentBuilds { - private final List builds = newArrayList(); + private final List builds = new ArrayList<>(); public CurrentBuilds(List currentBuilds) { for (Iterator i = currentBuilds.iterator(); i.hasNext(); ) { @@ -59,7 +57,7 @@ public CurrentBuilds(List currentBuilds) { @JsonValue public List value() { - return ImmutableList.copyOf(builds); + return Collections.unmodifiableList(new ArrayList<>(builds)); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfAborted.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfAborted.java index 47f9e2cfe..e755b88c2 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfAborted.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfAborted.java @@ -1,6 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline; -import com.google.common.base.Optional; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import hudson.model.Result; @@ -8,6 +7,8 @@ import jenkins.model.CauseOfInterruption; import jenkins.model.InterruptedBuildAction; +import java.util.Optional; + import static java.lang.String.format; /** @@ -59,6 +60,6 @@ private Optional userResponsibleFor(InterruptedBuildAction details) { } } - return Optional.absent(); + return Optional.empty(); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfExecuting.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfExecuting.java index db06677b9..d626258ec 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfExecuting.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfExecuting.java @@ -1,14 +1,13 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline; -import com.google.common.collect.Sets; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.readability.Lister; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; +import java.util.ArrayList; +import java.util.HashSet; import java.util.Set; -import static com.google.common.collect.Lists.newArrayList; - public class HeadlineOfExecuting implements CandidateHeadline { private final JobView job; private final HeadlineConfig config; @@ -32,13 +31,13 @@ private String text(BuildViewModel build) { return Lister.describe( "", "Building %s's changes", - newArrayList(committersOf(build)) + new ArrayList<>(committersOf(build)) ); } private Set committersOf(BuildViewModel build) { return config.displayCommitters ? build.committers() - : Sets.newHashSet(); + : new HashSet<>(); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFailing.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFailing.java index 96930e6c1..c571512b8 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFailing.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFailing.java @@ -1,19 +1,17 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.readability.Lister; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.readability.Pluraliser; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedList; import java.util.List; +import java.util.NoSuchElementException; import java.util.Set; -import static com.google.common.collect.Iterables.contains; -import static com.google.common.collect.Iterables.getLast; -import static com.google.common.collect.Lists.newArrayList; -import static com.google.common.collect.Lists.newLinkedList; import static hudson.model.Result.FAILURE; import static hudson.model.Result.SUCCESS; import static hudson.model.Result.UNSTABLE; @@ -30,7 +28,7 @@ public HeadlineOfFailing(JobView job, HeadlineConfig config) { @Override public boolean isApplicableTo(JobView job) { - return contains(newArrayList(FAILURE, UNSTABLE), job.lastCompletedBuild().result()); + return FAILURE.equals(job.lastCompletedBuild().result()) || UNSTABLE.equals(job.lastCompletedBuild().result()); } @Override @@ -54,14 +52,21 @@ private String text(BuildViewModel lastBuild) { return Lister.describe( buildsFailedSoFar, buildsFailedSoFar + " since %s committed their changes", - newLinkedList(responsibleFor(firstFailedBuild)) + new LinkedList<>(responsibleFor(firstFailedBuild)) ); } + private static T getLast(List list) { + if (list.isEmpty()) { + throw new NoSuchElementException(); + } + return list.get(list.size() - 1); + } + private List failedBuildsSince(BuildViewModel build) { BuildViewModel currentBuild = build; - List failedBuilds = Lists.newArrayList(); + List failedBuilds = new ArrayList<>(); while (! SUCCESS.equals(currentBuild.result())) { @@ -82,6 +87,6 @@ private List failedBuildsSince(BuildViewModel build) { private Set responsibleFor(BuildViewModel build) { return config.displayCommitters ? build.culprits() - : Sets.newHashSet(); + : new HashSet<>(); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFixed.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFixed.java index d8d79fd16..1449238b9 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFixed.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/HeadlineOfFixed.java @@ -1,15 +1,13 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline; -import com.google.common.collect.Sets; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.readability.Lister; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; +import java.util.HashSet; +import java.util.LinkedList; import java.util.Set; -import static com.google.common.collect.Iterables.contains; -import static com.google.common.collect.Lists.newArrayList; -import static com.google.common.collect.Lists.newLinkedList; import static hudson.model.Result.*; public class HeadlineOfFixed implements CandidateHeadline { @@ -37,7 +35,7 @@ private String textFor(BuildViewModel lastBuild) { return Lister.describe( "Back in the green!", "Fixed after %s committed their changes :-)", - newLinkedList(committersOf(lastBuild)) + new LinkedList<>(committersOf(lastBuild)) ); } @@ -47,12 +45,12 @@ private boolean didTheJobJustGetFixedWith(BuildViewModel build) { private boolean previousFailed(BuildViewModel build) { return build.hasPreviousBuild() && - contains(newArrayList(FAILURE, UNSTABLE, ABORTED), build.previousBuild().result()); + (FAILURE.equals(build.previousBuild().result()) || UNSTABLE.equals(build.previousBuild().result()) || ABORTED.equals(build.previousBuild().result())); } private Set committersOf(BuildViewModel build) { return config.displayCommitters ? build.committers() - : Sets.newHashSet(); + : new HashSet<>(); } } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java index eaa3695ef..aad7e38b2 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java @@ -1,8 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; import com.jenkinsci.plugins.badge.action.BadgeAction; +import java.util.function.Supplier; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index 601a18a1e..b01a568ee 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -1,7 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; -import com.google.common.collect.Lists; import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction; import com.sonyericsson.jenkins.plugins.bfa.model.FoundFailureCause; import hudson.model.AbstractBuild; @@ -22,6 +20,7 @@ import java.util.Calendar; import java.util.Iterator; import java.util.List; +import java.util.function.Supplier; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -193,9 +192,8 @@ public BuildStateRecipe wasAbortedBy(String username) { } private InterruptedBuildAction interruptedBuildAction(User user) { - List causes = Lists.newArrayList( - new CauseOfInterruption.UserInterruption(user) - ); + List causes = new ArrayList<>(); + causes.add(new CauseOfInterruption.UserInterruption(user)); InterruptedBuildAction action = mock(InterruptedBuildAction.class); when(action.getCauses()).thenReturn(causes); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java index f501bf97d..7d832ffe7 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java @@ -1,11 +1,11 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config; import hudson.model.AbstractProject; import hudson.model.Job; import java.util.Comparator; +import java.util.function.Supplier; public class ConfigStateRecipe implements Supplier { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java index 9c9758680..f4fa88b3e 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java @@ -1,6 +1,5 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; import hudson.model.AbstractBuild; import hudson.model.ItemGroup; import hudson.model.Job; @@ -12,6 +11,7 @@ import java.util.List; import java.util.Stack; import java.util.function.Predicate; +import java.util.function.Supplier; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -131,4 +131,4 @@ private JobStateRecipe updatedWithOnlyOneHistoryEntryFor(AbstractBuild build) { return updatedWithEarliestHistoryEntryFor(build); } -} \ No newline at end of file +} diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobViewRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobViewRecipe.java index d062a957a..dddb47bc3 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobViewRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobViewRecipe.java @@ -1,22 +1,21 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.RelativeLocation; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.Feature; import hudson.model.Job; +import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; - -import static com.google.common.collect.Lists.newArrayList; +import java.util.function.Supplier; public class JobViewRecipe implements Supplier { private Job job; private RelativeLocation relative; private Date systemTime = new Date(); - private List features = newArrayList(); + private List features = new ArrayList<>(); private boolean isPipeline; public JobViewRecipe of(Job job) { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Loops.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Loops.java index 35d0baa2c..ada01ea7f 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Loops.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Loops.java @@ -1,11 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.Lists; - import java.util.Arrays; import java.util.List; +import java.util.function.Supplier; +import java.util.stream.Collectors; /** * @author Jan Molak @@ -17,7 +15,7 @@ public static List asFollows(T... examples) { } public static List asFollows(Supplier... examples) { - return Lists.transform(Arrays.asList(examples), Suppliers.supplierFunction()); + return Arrays.stream(examples).map(Supplier::get).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java index ee7077279..ffdbd409a 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/Sugar.java @@ -1,9 +1,10 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; -import com.google.common.base.Supplier; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.RelativeLocation; +import java.util.function.Supplier; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; From 3c592770408d38e89d8cf853a2985e833690d5d3 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 20:57:18 -0800 Subject: [PATCH 043/152] Remove PowerMock --- build-monitor-acceptance/pom.xml | 73 ++++++++++++++----- build-monitor-plugin/pom.xml | 54 +++++--------- .../plugin/assetbundler/PathToAssetTest.java | 2 +- .../BuildMonitorDescriptorTest.java | 2 +- .../BuildMonitorInstallationTest.java | 7 +- .../BreadthFirstNodeTraversalTest.java | 2 +- .../pipeline/PipelineHelperTest.java | 56 +++++++------- .../buildmonitor/viewmodel/BuildViewTest.java | 41 +++++------ .../buildmonitor/viewmodel/JobViewTest.java | 29 +++++--- .../viewmodel/features/CanBeClaimedTest.java | 25 ++++--- .../CanBeDiagnosedForProblemsTest.java | 25 ++++--- .../features/HasBadgesBadgePluginTest.java | 27 +++---- ...HasHeadlineShowingAbortedBuildDetails.java | 36 +++++---- ...HeadlineShowingFailedBuildDetailsTest.java | 25 ++++--- ...sHeadlineShowingFixedBuildDetailsTest.java | 25 ++++--- ...eadlineShowingRunningBuildDetailsTest.java | 25 ++++--- .../HasHeadlineWhichShowsNothingTest.java | 2 +- .../KnowsCurrentBuildsDetailsTest.java | 25 ++++--- .../KnowsLastCompletedBuildDetailsTest.java | 25 ++++--- .../viewmodel/readability/ListerTest.java | 2 +- .../BadgeBadgePluginRecipe.java | 5 +- .../syntacticsugar/BuildStateRecipe.java | 34 ++++----- .../syntacticsugar/JobStateRecipe.java | 36 ++++----- pom.xml | 38 ---------- 24 files changed, 311 insertions(+), 310 deletions(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index f3963455a..d86504763 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -1,3 +1,4 @@ + 4.0.0 @@ -20,11 +21,10 @@ UTF-8 2.4.51 1.0.0.v20140518 + 1.11.19 chrome - true - true @@ -69,6 +69,57 @@ + + + + + com.google.guava + guava + 31.0.1-jre + + + com.google.inject + guice + 5.0.1 + + + com.thoughtworks.xstream + xstream + 1.4.17 + + + commons-net + commons-net + 3.8.0 + + + joda-time + joda-time + 2.10.5 + + + net.bytebuddy + byte-buddy-agent + ${bytebuddy.version} + + + net.bytebuddy + byte-buddy + ${bytebuddy.version} + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + org.jenkins-ci.main @@ -116,11 +167,6 @@ maven-aether-provider 3.2.5 - - org.apache.httpcomponents - httpclient - 4.5.5 - @@ -146,15 +192,10 @@ - - - com.google.guava - guava - 31.0.1-jre - org.jdeferred jdeferred-core + 1.2.6 @@ -165,16 +206,12 @@ org.slf4j slf4j-simple + 1.7.19 junit junit - - org.hamcrest - hamcrest-all - test - diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 2cedbdef8..3f1c2188f 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -1,3 +1,4 @@ + 4.0.0 @@ -81,11 +82,28 @@ + + + + io.jenkins.tools.bom + bom-2.289.x + 1013.vf8058992a042 + import + pom + + + org.json + json + 20210307 + + + + org.codehaus.jackson jackson-mapper-asl - 1.9.12 + 1.9.13 @@ -215,21 +233,9 @@ junit test - - org.hamcrest - hamcrest-all - test - org.mockito - mockito-all - 1.10.19 - test - - - commons-lang - commons-lang - 2.6 + mockito-inline test @@ -245,26 +251,6 @@ - - - - org.powermock - powermock-module-junit4 - 1.6.5 - test - - - org.powermock - powermock-api-mockito - 1.6.5 - test - - - org.objenesis - objenesis - - - diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java index 8f8745986..92b58d6a3 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java @@ -8,8 +8,8 @@ import java.net.MalformedURLException; import java.net.URL; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; public class PathToAssetTest { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java index 4d1028b16..8660a1e18 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java @@ -11,8 +11,8 @@ import static hudson.util.FormValidation.Kind.ERROR; import static hudson.util.FormValidation.Kind.OK; import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; public class BuildMonitorDescriptorTest { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java index 216e9a503..6f041b69b 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java @@ -3,10 +3,13 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; import org.junit.Test; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; public class BuildMonitorInstallationTest { public static final String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlEPjwjG6Q3ILlr91qlSxvvys046hUrhFmc8ibz9WvWEJKVs5dS/mCnRV4QFg4w3qoCH2lzuoSNHB7tWBYQXj1ZtbDiwjnFNYw1TyZBL43m2bRYQGjpcvHAUB6u07C7mmoehpaYoFkpJbLEYEGXsKV/0bY22n00cZHwoTGl5biGVX8gvNKq604pK97jdVuBNZeXiOMXS00Yrwv8tgWeRDIUhUCO8T4rj0bBULh1Pyg/aJBsts7z5RydB+Nb5OZfAfaklVTpFld+ZHMjt0Q7VYhkMkbBD+ZFRkHvRNqg2q7wdQFScGGx7G2RstUtcIPv5Ga36fj1okDU6c2vyPHErTuwIDAQAB"; diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversalTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversalTest.java index 8afc095d9..8c1075f72 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversalTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversalTest.java @@ -7,9 +7,9 @@ import java.util.Collections; import java.util.List; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.junit.Assert.assertThat; public class BreadthFirstNodeTraversalTest { @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java index e35506e99..d799dcda3 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java @@ -5,46 +5,42 @@ import hudson.model.AbstractBuild; import jenkins.model.Jenkins; import org.jenkinsci.plugins.workflow.job.WorkflowRun; -import org.junit.Assert; -import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class, WorkflowRun.class}) -public class PipelineHelperTest { - - @Mock - private Jenkins jenkins; - - @Mock - private Plugin mockedPipeline; - - private WorkflowRun workflowRun; +import org.mockito.MockedStatic; - @Mock - private AbstractBuild abstractBuild; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; - @Before - public void setup() { - PowerMockito.mockStatic(Jenkins.class); - workflowRun = PowerMockito.mock(WorkflowRun.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); - PowerMockito.when(jenkins.getPlugin("workflow-aggregator")).thenReturn(mockedPipeline); - } +public class PipelineHelperTest { @Test public void isWorkflowRun() { - Assert.assertTrue(PipelineHelper.isWorkflowRun(workflowRun, new StaticJenkinsAPIs())); + try (MockedStatic mockedJenkins = mockStatic(Jenkins.class)) { + Jenkins jenkins = createMockJenkins(mockedJenkins); + Plugin mockedPipeline = mock(Plugin.class); + WorkflowRun workflowRun = mock(WorkflowRun.class); + when(jenkins.getPlugin("workflow-aggregator")).thenReturn(mockedPipeline); + + assertTrue(PipelineHelper.isWorkflowRun(workflowRun, new StaticJenkinsAPIs())); + } } @Test public void isNotWorkflowRun() { - Assert.assertFalse(PipelineHelper.isWorkflowRun(abstractBuild, new StaticJenkinsAPIs())); + try (MockedStatic mockedJenkins = mockStatic(Jenkins.class)) { + createMockJenkins(mockedJenkins); + AbstractBuild abstractBuild = mock(AbstractBuild.class); + + assertFalse(PipelineHelper.isWorkflowRun(abstractBuild, new StaticJenkinsAPIs())); + } } + private Jenkins createMockJenkins(MockedStatic mockedJenkins) { + Jenkins jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + return jenkins; + } } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java index 67ded7c53..e5d01ace7 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java @@ -1,42 +1,35 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; import jenkins.model.Jenkins; -import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.a; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.build; -import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.withDefaultConfig; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class BuildViewTest { private static final String theName = "1.5+build.3"; - @Mock - private Jenkins jenkins; - - @Before - public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); - } - - private BuildViewModel view; - @Test public void should_know_the_name_of_the_job_its_based_on() { - view = BuildView.of(a(build().hasName(theName))); + try (MockedStatic mockedJenkins = mockStatic(Jenkins.class)) { + createMockJenkins(mockedJenkins); + + BuildViewModel view = BuildView.of(a(build().hasName(theName))); + + assertThat(view.name(), is(theName)); + assertThat(view.toString(), is(theName)); + } + } - assertThat(view.name(), is(theName)); - assertThat(view.toString(), is(theName)); + private Jenkins createMockJenkins(MockedStatic mockedJenkins) { + Jenkins jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + return jenkins; } } \ No newline at end of file diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java index edabe1645..5cf9b8645 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java @@ -2,13 +2,10 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.RelativeLocation; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import java.util.List; @@ -16,17 +13,19 @@ import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.TimeMachine.currentTime; import static hudson.model.Result.*; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; /** * @author Jan Molak */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class JobViewTest { private static final String theName = "some-TLAs-followed-by-a-project-name"; @@ -35,13 +34,19 @@ public class JobViewTest { private RelativeLocation relativeLocation = mock(RelativeLocation.class); // TODO recipe builder private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } /* diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java index cbd6c981a..e5e98e207 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java @@ -2,37 +2,40 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static hudson.model.Result.FAILURE; import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class CanBeClaimedTest { private JobView job; @Rule public ExpectedException thrown = ExpectedException.none(); - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java index 3204d6a32..30149a4ab 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java @@ -3,31 +3,34 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config.BuildFailureAnalyzerDisplayedField; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static hudson.model.Result.FAILURE; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasItem; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class CanBeDiagnosedForProblemsTest { private JobView job; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java index 091c73183..3915c053d 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java @@ -2,39 +2,40 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -import java.net.URL; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class, URL.class}) public class HasBadgesBadgePluginTest { private JobView job; @Rule public ExpectedException thrown = ExpectedException.none(); - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java index 9bf7fc96a..9fcade26f 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java @@ -4,46 +4,50 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig; import hudson.model.User; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class, User.class}) public class HasHeadlineShowingAbortedBuildDetails { private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test public void should_tell_who_aborted_the_build() throws Exception { + try (MockedStatic mockedUser = mockStatic(User.class)) { + view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( + a(job().whereTheLast(build().wasAbortedBy("Abe", mockedUser))))); - view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( - a(job().whereTheLast(build().wasAbortedBy("Abe"))))); - - assertThat(headlineOf(view), is("Execution aborted by Abe")); + assertThat(headlineOf(view), is("Execution aborted by Abe")); + } } @Test public void should_tell_if_a_build_was_aborted() throws Exception { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( - a(job().whereTheLast(build().wasAbortedBy("Abe"))))); + a(job().whereTheLast(build().wasAbortedBy("Abe", null))))); assertThat(headlineOf(view), is("Execution aborted")); } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java index 5838d28c5..16b43cf67 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java @@ -3,31 +3,34 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class HasHeadlineShowingFailedBuildDetailsTest { private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java index b3b5c4e0b..363383bf0 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java @@ -3,32 +3,35 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.isEmptyString; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class HasHeadlineShowingFixedBuildDetailsTest { private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java index 27bb0d2ea..569f3af14 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java @@ -3,32 +3,35 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.isEmptyString; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class HasHeadlineShowingRunningBuildDetailsTest { private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java index ca1876511..cc46f9a5d 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java @@ -5,8 +5,8 @@ import org.junit.Test; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.isEmptyString; -import static org.junit.Assert.assertThat; public class HasHeadlineWhichShowsNothingTest { private JobView view; diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java index 2a22e233f..1e95ec757 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java @@ -4,35 +4,38 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.KnowsCurrentBuildsDetails.CurrentBuild; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.TimeMachine.assumeThat; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.TimeMachine.currentTime; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; import java.util.Date; import java.util.List; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class KnowsCurrentBuildsDetailsTest { private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java index 231d57697..237bc4b81 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java @@ -2,32 +2,35 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import jenkins.model.Jenkins; +import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.TimeMachine.currentTime; import static hudson.model.Result.SUCCESS; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; -@RunWith(PowerMockRunner.class) -@PrepareForTest({Jenkins.class}) public class KnowsLastCompletedBuildDetailsTest { private JobView view; - @Mock + private MockedStatic mockedJenkins; private Jenkins jenkins; @Before public void setup() { - PowerMockito.mockStatic(Jenkins.class); - PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); + mockedJenkins = mockStatic(Jenkins.class); + jenkins = mock(Jenkins.class); + mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + } + + @After + public void tearDown() { + mockedJenkins.close(); } @Test diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java index c57d747b6..336eba538 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java @@ -6,8 +6,8 @@ import java.util.Arrays; import java.util.List; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; public class ListerTest { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java index aad7e38b2..42f20e607 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java @@ -4,6 +4,7 @@ import java.util.function.Supplier; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -19,13 +20,13 @@ public BadgeBadgePluginRecipe() { public BadgeBadgePluginRecipe withText(String text) throws Exception { when(badge.getIconPath()).thenReturn(null); - when(badge.getText()).thenReturn(text); + lenient().when(badge.getText()).thenReturn(text); return this; } public BadgeBadgePluginRecipe withIcon(String icon, String text) throws Exception { when(badge.getIconPath()).thenReturn(icon); - when(badge.getText()).thenReturn(text); + lenient().when(badge.getText()).thenReturn(text); return this; } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index b01a568ee..d4251263f 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -12,8 +12,8 @@ import jenkins.model.InterruptedBuildAction; import com.jenkinsci.plugins.badge.action.BadgeAction; +import org.mockito.MockedStatic; import org.mockito.Mockito; -import org.powermock.api.mockito.PowerMockito; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -22,10 +22,9 @@ import java.util.List; import java.util.function.Supplier; -import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static org.powermock.api.mockito.PowerMockito.mockStatic; /** * @author Jan Molak @@ -35,10 +34,10 @@ public class BuildStateRecipe implements Supplier> { private AbstractBuild build; public BuildStateRecipe() { - build = PowerMockito.mock(AbstractBuild.class); + build = Mockito.mock(AbstractBuild.class); AbstractProject parent = mock(AbstractProject.class); - doReturn(parent).when(build).getParent(); + lenient().doReturn(parent).when(build).getParent(); } public BuildStateRecipe hasNumber(int number) { @@ -59,7 +58,7 @@ public BuildStateRecipe whichNumberIs(int number) { } public BuildStateRecipe finishedWith(Result result) { - when(build.getResult()).thenReturn(result); + lenient().when(build.getResult()).thenReturn(result); return this; } @@ -86,17 +85,17 @@ private BuildStateRecipe withChangesFromForJenkins2_46(String... authors) { return this; } - //PowerMockito reflective call to handle methods not available in Jenkins 2.46 which is used as dependency + //Mockito reflective call to handle methods not available in Jenkins 2.46 which is used as dependency private BuildStateRecipe withChangesFromForJenkins2_107AndNewer(String... authors) throws Exception { ChangeLogSet changeSet = changeSetBasedOn(entriesBy(authors)); when(build.getChangeSet()).thenReturn(changeSet); - PowerMockito.doReturn(true).when(build, "shouldCalculateCulprits"); + lenient().when(build.shouldCalculateCulprits()).thenReturn(true); // any methods that use getChangeSet as their source of data should be called normally // (build is a partial mock in this case) - when(build.getChangeSets()).thenCallRealMethod(); - when(build.getCulprits()).thenCallRealMethod(); - PowerMockito.doCallRealMethod().when(build, "calculateCulprits"); + lenient().when(build.getChangeSets()).thenCallRealMethod(); + lenient().when(build.getCulprits()).thenCallRealMethod(); + lenient().when(build.calculateCulprits()).thenCallRealMethod(); return this; } @@ -122,7 +121,7 @@ public BuildStateRecipe hasntStartedYet() { } public BuildStateRecipe isStillBuilding() { - when(build.isBuilding()).thenReturn(true); + lenient().when(build.isBuilding()).thenReturn(true); return this; } @@ -169,19 +168,20 @@ public BuildStateRecipe wasClaimedBy(String aPotentialHero, String reason) { private ClaimBuildAction claimBuildAction(String author, String reason) { ClaimBuildAction action = mock(ClaimBuildAction.class); - when(action.isClaimed()).thenReturn(true); + lenient().when(action.isClaimed()).thenReturn(true); when(action.getClaimedByName()).thenReturn(author); when(action.getReason()).thenReturn(reason); return action; } - public BuildStateRecipe wasAbortedBy(String username) { + public BuildStateRecipe wasAbortedBy(String username, MockedStatic mockedUser) { User user = userCalled(username); - mockStatic(User.class); - PowerMockito.when(User.get(user.getId())).thenReturn(user); //For older Jenins versions - PowerMockito.when(User.get(Mockito.eq(user.getId()), Mockito.eq(false), Mockito.anyMap())).thenReturn(user); //For newer Jenkins versions + if (mockedUser != null) { + mockedUser.when(() -> User.get(user.getId())).thenReturn(user); //For older Jenkins versions + mockedUser.when(() -> User.get(Mockito.eq(user.getId()), Mockito.eq(false), Mockito.anyMap())).thenReturn(user); // For newer Jenkins versions + } final InterruptedBuildAction action = interruptedBuildAction(user); when(build.getAction(InterruptedBuildAction.class)).thenReturn(action); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java index f4fa88b3e..cdbc68d6f 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java @@ -1,22 +1,20 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; import hudson.model.AbstractBuild; -import hudson.model.ItemGroup; import hudson.model.Job; import hudson.model.ViewJob; import hudson.util.RunList; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.Stack; import java.util.function.Predicate; import java.util.function.Supplier; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** * @author Jan Molak @@ -31,11 +29,11 @@ public JobStateRecipe() { job = mock(Job.class); runList = mock(RunList.class); - when(job.isBuildable()).thenReturn(Boolean.TRUE); + lenient().when(job.isBuildable()).thenReturn(Boolean.TRUE); } public JobStateRecipe withName(String name) { - when(job.getName()).thenReturn(name); + lenient().when(job.getName()).thenReturn(name); // The name of the job also defines its URL, that's why the stub for getUrl() is defined here as well. // You could argue, that 'withUrl' could be a separate method on the builder, @@ -45,20 +43,14 @@ public JobStateRecipe withName(String name) { } private JobStateRecipe withShortUrl(String url) { - when(job.getShortUrl()).thenReturn(url); - - // This might not necessarily belong here, - // but I don't need to introduce the concept of a parent anywhere else yet. - ItemGroup parent = mock(ItemGroup.class); - when(parent.getUrl()).thenReturn("job/"); - when(job.getParent()).thenReturn(parent); + lenient().when(job.getShortUrl()).thenReturn(url); return this; } public JobStateRecipe withDisplayName(String name) { - when(job.getDisplayNameOrNull()).thenReturn(name); - when(job.getDisplayName()).thenReturn(name); + lenient().when(job.getDisplayNameOrNull()).thenReturn(name); + lenient().when(job.getDisplayName()).thenReturn(name); return this; } @@ -101,19 +93,19 @@ public JobStateRecipe andThePrevious(BuildStateRecipe recipe) { earliestBuild = buildHistory.pop(); earlierBuild = buildHistory.peek(); - when(earlierBuild.getPreviousBuild()).thenReturn(earliestBuild); + lenient().when(earlierBuild.getPreviousBuild()).thenReturn(earliestBuild); } // pick the first build from the build history and make it the "last build" if (buildHistory.size() == 1) { - doReturn(buildHistory.pop()).when(job).getLastBuild(); + lenient().doReturn(buildHistory.pop()).when(job).getLastBuild(); } // mock the necessary methods to get the currentBuilds // it will return the full list so make sure it contains only building builds - doReturn(runList).when(job).getNewBuilds(); - doReturn(runList).when(runList).filter(any(Predicate.class)); - doReturn(allBuilds.iterator()).when(runList).iterator(); + lenient().doReturn(runList).when(job).getNewBuilds(); + lenient().doReturn(runList).when(runList).filter(any(Predicate.class)); + lenient().doReturn(allBuilds.iterator()).when(runList).iterator(); return job; } diff --git a/pom.xml b/pom.xml index 1d6842e1a..df5b2acab 100644 --- a/pom.xml +++ b/pom.xml @@ -57,28 +57,6 @@ - - io.jenkins.tools.bom - bom-2.289.x - 987.v4ade2e49fe70 - import - pom - - - antlr - antlr - 2.7.7 - - - org.jdeferred - jdeferred-core - 1.2.4 - - - org.slf4j - slf4j-simple - 1.7.19 - org.eclipse.jetty jetty-io @@ -124,22 +102,6 @@ websocket-server ${jetty.version} - - org.hamcrest - hamcrest-all - 1.3 - test - - - org.hamcrest - hamcrest-core - 2.2 - - - org.json - json - 20210307 - From aaa2ec96821d7f2428ed4c772bc584709b2fd231 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 21:03:15 -0800 Subject: [PATCH 044/152] Add Dependabot configuration --- .github/dependabot.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..fdc58d1e9 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" From 9c6e2ec6a2fb4a457b3cd3e7ca08be468110fdc4 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 22:28:53 -0800 Subject: [PATCH 045/152] Increase open pull requests limit --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index fdc58d1e9..cec436b3e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,6 +3,7 @@ version: 2 updates: - package-ecosystem: "maven" + open-pull-requests-limit: 10 directory: "/" schedule: interval: "weekly" From eefbbe58d15d2467af316a5f67f291dd0bedd391 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 22:30:44 -0800 Subject: [PATCH 046/152] Ignore Jetty for now --- .github/dependabot.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index cec436b3e..86d9bda8b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,6 +7,9 @@ updates: directory: "/" schedule: interval: "weekly" + ignore: + # TODO Starting with 9.4.20.v20190813, JellyTestSuiteBuilder$JellyTestSuite starts failing with com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 500 Server Error + - dependency-name: "org.eclipse.jetty:*" - package-ecosystem: "github-actions" directory: "/" schedule: From 216aa3b91e95b34dfaf162a4e0182e63e265c27b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 05:27:52 +0000 Subject: [PATCH 047/152] Bump joda-time from 2.10.5 to 2.10.13 Bumps [joda-time](https://github.com/JodaOrg/joda-time) from 2.10.5 to 2.10.13. - [Release notes](https://github.com/JodaOrg/joda-time/releases) - [Changelog](https://github.com/JodaOrg/joda-time/blob/master/RELEASE-NOTES.txt) - [Commits](https://github.com/JodaOrg/joda-time/compare/v2.10.5...v2.10.13) --- updated-dependencies: - dependency-name: joda-time:joda-time dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build-monitor-acceptance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index d86504763..0e3426af1 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -95,7 +95,7 @@ joda-time joda-time - 2.10.5 + 2.10.13 net.bytebuddy From bd57ffadb6b2516d9e7dce543f8369473938e5bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 05:27:44 +0000 Subject: [PATCH 048/152] Bump bytebuddy.version from 1.11.19 to 1.12.1 Bumps `bytebuddy.version` from 1.11.19 to 1.12.1. Updates `byte-buddy-agent` from 1.11.19 to 1.12.1 - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.11.19...byte-buddy-1.12.1) Updates `byte-buddy` from 1.11.19 to 1.12.1 - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.11.19...byte-buddy-1.12.1) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build-monitor-acceptance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 0e3426af1..da881c1d5 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -21,7 +21,7 @@ UTF-8 2.4.51 1.0.0.v20140518 - 1.11.19 + 1.12.1 chrome From 2ad6503b8732549b827c0e742efffb12b066242b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 05:25:11 +0000 Subject: [PATCH 049/152] Bump jacoco-maven-plugin from 0.6.4.201312101107 to 0.8.7 Bumps [jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.6.4.201312101107 to 0.8.7. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/commits/v0.8.7) --- updated-dependencies: - dependency-name: org.jacoco:jacoco-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build-monitor-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 3f1c2188f..d93819919 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -341,7 +341,7 @@ org.jacoco jacoco-maven-plugin - 0.6.4.201312101107 + 0.8.7 ${project.build.directory}/coverage/jacoco-unit.exec ${project.build.directory}/coverage/jacoco-unit.exec From 37c98f6cda6dfc617c6408234b64f2717bb5a5ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 05:25:05 +0000 Subject: [PATCH 050/152] Bump xstream from 1.4.17 to 1.4.18 in /build-monitor-acceptance Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.17 to 1.4.18. - [Release notes](https://github.com/x-stream/xstream/releases) - [Commits](https://github.com/x-stream/xstream/commits) --- updated-dependencies: - dependency-name: com.thoughtworks.xstream:xstream dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- build-monitor-acceptance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index da881c1d5..ad2d2be8a 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -85,7 +85,7 @@ com.thoughtworks.xstream xstream - 1.4.17 + 1.4.18 commons-net From 4daefa14f9cb812785f3181c50ec13aadf3ab776 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 22:42:59 -0800 Subject: [PATCH 051/152] Bump buildgraph-view from 1.0 to 1.3 Bumps [buildgraph-view](https://github.com/jenkinsci/buildgraph-view-plugin) from 1.0 to 1.3. - [Release notes](https://github.com/jenkinsci/buildgraph-view-plugin/releases) - [Commits](https://github.com/jenkinsci/buildgraph-view-plugin/compare/buildgraph-view-1.0...buildgraph-view-1.3) --- updated-dependencies: - dependency-name: org.jenkins-ci.plugins:buildgraph-view dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build-monitor-plugin/pom.xml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index d93819919..cd1bb78d4 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -84,6 +84,11 @@ + + com.google.code.gson + gson + 2.8.9 + io.jenkins.tools.bom bom-2.289.x @@ -91,6 +96,16 @@ import pom + + org.codehaus.plexus + plexus-classworlds + 2.6.0 + + + org.codehaus.plexus + plexus-utils + 3.4.1 + org.json json @@ -159,7 +174,7 @@ org.jenkins-ci.plugins buildgraph-view - 1.0 + 1.3 true From 3d17040e3d7e4b92381d7c787a82b2605ce2f01d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 05:26:32 +0000 Subject: [PATCH 052/152] Bump claim from 2.8 to 2.18.2 in /build-monitor-plugin Bumps [claim](https://github.com/jenkinsci/claim-plugin) from 2.8 to 2.18.2. - [Release notes](https://github.com/jenkinsci/claim-plugin/releases) - [Changelog](https://github.com/jenkinsci/claim-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/jenkinsci/claim-plugin/compare/claim-2.8...claim-2.18.2) --- updated-dependencies: - dependency-name: org.jenkins-ci.plugins:claim dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- build-monitor-plugin/pom.xml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index cd1bb78d4..d292afcb9 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -89,6 +89,11 @@ gson 2.8.9 + + commons-net + commons-net + 3.8.0 + io.jenkins.tools.bom bom-2.289.x @@ -96,6 +101,11 @@ import pom + + org.apache.commons + commons-lang3 + 3.12.0 + org.codehaus.plexus plexus-classworlds @@ -146,7 +156,7 @@ com.sonyericsson.jenkins.plugins.bfa build-failure-analyzer - 1.19.2 + 1.27.1 true @@ -180,7 +190,7 @@ org.jenkins-ci.plugins claim - 2.8 + 2.18.2 true From 5751eb1b5218f09dbba3974997ff0a90f5a86cf6 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 19 Nov 2021 23:05:49 -0800 Subject: [PATCH 053/152] Upgrade Jackson to latest --- .../integration/jenkins/JenkinsInstance.java | 12 +++++++++--- .../src/test/java/environment/JenkinsSandbox.java | 5 ++++- build-monitor-plugin/pom.xml | 5 ++--- .../jenkinsci/plugins/buildmonitor/api/Respond.java | 2 +- .../jenkinsci/plugins/buildmonitor/api/Success.java | 2 +- .../plugins/buildmonitor/viewmodel/JobView.java | 3 +-- .../buildmonitor/viewmodel/JobViewSerialiser.java | 6 +++--- .../viewmodel/features/CanBeClaimed.java | 2 +- .../features/CanBeDiagnosedForProblems.java | 2 +- .../viewmodel/features/HasBadgesBadgePlugin.java | 4 ++-- .../features/KnowsCurrentBuildsDetails.java | 5 ++--- .../features/KnowsLastCompletedBuildDetails.java | 2 +- .../viewmodel/features/headline/Headline.java | 2 +- 13 files changed, 29 insertions(+), 23 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java index d8c07b6ca..220f88748 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/JenkinsInstance.java @@ -38,19 +38,25 @@ public class JenkinsInstance implements TestRule { /** * @param pluginUnderTest * Path to the plugin under test, either a .hpi or a .jpi file + * @param jackson2ApiPlugin + * Path to the Jackson 2 API plugin, either a .hpi or a .jpi file + * @param snakeyamlApiPlugin + * Path to the SnakeYAML API plugin, either a .hpi or a .jpi file */ - public JenkinsInstance(Path pluginUnderTest) { - this(PluginDescription.of(pluginUnderTest)); + public JenkinsInstance(Path pluginUnderTest, Path jackson2ApiPlugin, Path snakeyamlApiPlugin) { + this(PluginDescription.of(pluginUnderTest), PluginDescription.of(jackson2ApiPlugin), PluginDescription.of(snakeyamlApiPlugin)); } /** * @param description * Plugin meta-data derived from the manifest file packaged with the plugin */ - public JenkinsInstance(PluginDescription description) { + public JenkinsInstance(PluginDescription description, PluginDescription jackson2ApiPlugin, PluginDescription snakeyamlApiPlugin) { this.pluginUnderTest = description; defaultRules = asList( + InstallPlugins.fromDisk(snakeyamlApiPlugin.path()), + InstallPlugins.fromDisk(jackson2ApiPlugin.path()), InstallPlugins.fromDisk(pluginUnderTest.path()), new ManageJenkinsServer() ); diff --git a/build-monitor-acceptance/src/test/java/environment/JenkinsSandbox.java b/build-monitor-acceptance/src/test/java/environment/JenkinsSandbox.java index 20e9927f7..307cf9f90 100644 --- a/build-monitor-acceptance/src/test/java/environment/JenkinsSandbox.java +++ b/build-monitor-acceptance/src/test/java/environment/JenkinsSandbox.java @@ -15,8 +15,11 @@ public static TestEnvironment configure() { CWD cwd = CWD.or(getProperty("project.root")); PluginDescription pluginUnderTest = PluginDescription.of(cwd.resolve("build-monitor-plugin/target/build-monitor-plugin.hpi")); + PluginDescription jackson2ApiPlugin = PluginDescription.of(cwd.resolve("build-monitor-plugin/target/test-classes/test-dependencies/jackson2-api.hpi")); + PluginDescription snakeyamlApiPlugin = PluginDescription.of(cwd.resolve("build-monitor-plugin/target/test-classes/test-dependencies/snakeyaml-api.hpi")); - return new TestEnvironment(new JenkinsInstance(pluginUnderTest)) + + return new TestEnvironment(new JenkinsInstance(pluginUnderTest, jackson2ApiPlugin, snakeyamlApiPlugin)) .beforeStart( FindFreePort.useFreePortFromDynamicRange(), SandboxJenkinsHome.useATemporaryDirectoryUnder(cwd.resolve("build-monitor-acceptance/target/jenkins")), diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index d292afcb9..002413e57 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -126,9 +126,8 @@ - org.codehaus.jackson - jackson-mapper-asl - 1.9.13 + org.jenkins-ci.plugins + jackson2-api diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Respond.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Respond.java index fe4bd1d96..586bc9e0e 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Respond.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Respond.java @@ -1,7 +1,7 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.api; +import com.fasterxml.jackson.databind.ObjectMapper; import net.sf.json.JSONObject; -import org.codehaus.jackson.map.ObjectMapper; import java.io.IOException; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java index ee1eea916..4997c15de 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java @@ -1,6 +1,6 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.api; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Collections; import java.util.Map; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java index 7824c4823..3da4778f1 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java @@ -1,5 +1,6 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.RelativeLocation; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.Feature; @@ -9,8 +10,6 @@ import hudson.model.Run; import hudson.util.RunList; -import org.codehaus.jackson.map.annotate.JsonSerialize; - import java.util.ArrayList; import java.util.Collections; import java.util.Date; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java index cdd44f47f..912afda4b 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java @@ -1,9 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.Feature; -import org.codehaus.jackson.JsonGenerator; -import org.codehaus.jackson.map.JsonSerializer; -import org.codehaus.jackson.map.SerializerProvider; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java index 6d436140c..767a3bf12 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java @@ -1,8 +1,8 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; +import com.fasterxml.jackson.annotation.JsonProperty; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import hudson.plugins.claim.ClaimBuildAction; -import org.codehaus.jackson.annotate.JsonProperty; import java.util.Optional; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java index 42a6dc0c4..eded0f37b 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java @@ -1,10 +1,10 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; +import com.fasterxml.jackson.annotation.JsonValue; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config.BuildFailureAnalyzerDisplayedField; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction; import com.sonyericsson.jenkins.plugins.bfa.model.FoundFailureCause; -import org.codehaus.jackson.annotate.JsonValue; import java.util.ArrayList; import java.util.Collections; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java index 588709f5d..c746bc325 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java @@ -8,8 +8,8 @@ import java.util.List; import java.util.function.Predicate; -import org.codehaus.jackson.annotate.JsonProperty; -import org.codehaus.jackson.annotate.JsonValue; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; import com.jenkinsci.plugins.badge.action.BadgeAction; /** diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java index f7f85547e..726a88ef4 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java @@ -1,5 +1,7 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; @@ -9,9 +11,6 @@ import java.util.Iterator; import java.util.List; -import org.codehaus.jackson.annotate.JsonProperty; -import org.codehaus.jackson.annotate.JsonValue; - /** * @author Jan Molak */ diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetails.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetails.java index a768592ff..014562602 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetails.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetails.java @@ -1,9 +1,9 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; +import com.fasterxml.jackson.annotation.JsonProperty; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; -import org.codehaus.jackson.annotate.JsonProperty; /** * @author Jan Molak diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/Headline.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/Headline.java index a59990784..37dcbf9bc 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/Headline.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/headline/Headline.java @@ -1,6 +1,6 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline; -import org.codehaus.jackson.annotate.JsonValue; +import com.fasterxml.jackson.annotation.JsonValue; /** * @author Jan Molak From 1c28569ef17dc759e46f1b010e847e0cd750f140 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sat, 20 Nov 2021 00:23:32 -0800 Subject: [PATCH 054/152] Ignore CLI --- .github/dependabot.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 86d9bda8b..e836eaa36 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,6 +10,8 @@ updates: ignore: # TODO Starting with 9.4.20.v20190813, JellyTestSuiteBuilder$JellyTestSuite starts failing with com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 500 Server Error - dependency-name: "org.eclipse.jetty:*" + # This is the minimum Jenkins version + - dependency-name: "org.jenkins-ci.main:cli" - package-ecosystem: "github-actions" directory: "/" schedule: From a640e4ba99b5c8d55bc9d75d32add94a7edba028 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 08:12:58 +0000 Subject: [PATCH 055/152] Bump slf4j-simple from 1.7.19 to 1.7.32 Bumps [slf4j-simple](https://github.com/qos-ch/slf4j) from 1.7.19 to 1.7.32. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_1.7.19...v_1.7.32) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-simple dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build-monitor-acceptance/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index ad2d2be8a..4c81b22b3 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -22,6 +22,7 @@ 2.4.51 1.0.0.v20140518 1.12.1 + 1.7.32 chrome @@ -117,6 +118,11 @@ httpclient 4.5.13 + + org.slf4j + slf4j-api + ${slf4j.version} + @@ -206,7 +212,7 @@ org.slf4j slf4j-simple - 1.7.19 + ${slf4j.version} junit From 7efc8352db2298dd8a45e1d0bdd4ee47eecd34a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 08:11:59 +0000 Subject: [PATCH 056/152] Bump less4j from 1.8.0 to 1.17.2 Bumps [less4j](https://github.com/SomMeri/less4j) from 1.8.0 to 1.17.2. - [Release notes](https://github.com/SomMeri/less4j/releases) - [Commits](https://github.com/SomMeri/less4j/compare/less4j-1.8.0...less4j-1.17.2) --- updated-dependencies: - dependency-name: com.github.sommeri:less4j dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build-monitor-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 002413e57..c343037be 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -133,7 +133,7 @@ com.github.sommeri less4j - 1.8.0 + 1.17.2 org.jenkins-ci.modules From 99b8d998ccb806b0b8b6f2a047255099e9067af4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 08:12:13 +0000 Subject: [PATCH 057/152] Bump view-job-filters from 1.26 to 2.3 Bumps view-job-filters from 1.26 to 2.3. --- updated-dependencies: - dependency-name: org.jenkins-ci.plugins:view-job-filters dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build-monitor-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index c343037be..922b00701 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -195,7 +195,7 @@ org.jenkins-ci.plugins view-job-filters - 1.26 + 2.3 true From 59f435304816d1b94a6df63602f936f341c90be4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 08:13:01 +0000 Subject: [PATCH 058/152] Bump release-candidate-maven-plugin Bumps [release-candidate-maven-plugin](https://github.com/smartcodeltd/release-candidate-maven-plugin) from 1.0-201603091838.01dbbbf to 1.0-201605132325.9e7d5be. - [Release notes](https://github.com/smartcodeltd/release-candidate-maven-plugin/releases) - [Commits](https://github.com/smartcodeltd/release-candidate-maven-plugin/commits) --- updated-dependencies: - dependency-name: com.smartcodeltd:release-candidate-maven-plugin dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index df5b2acab..e81561a92 100644 --- a/pom.xml +++ b/pom.xml @@ -111,7 +111,7 @@ com.smartcodeltd release-candidate-maven-plugin - 1.0-201603091838.01dbbbf + 1.0-201605132325.9e7d5be maven-enforcer-plugin From bdccf29203aed3a979d28232a8b39b927103d4f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 08:13:25 +0000 Subject: [PATCH 059/152] Bump badge from 1.2 to 1.9 Bumps [badge](https://github.com/jenkinsci/badge-plugin) from 1.2 to 1.9. - [Release notes](https://github.com/jenkinsci/badge-plugin/releases) - [Changelog](https://github.com/jenkinsci/badge-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/jenkinsci/badge-plugin/compare/badge-1.2...badge-1.9) --- updated-dependencies: - dependency-name: org.jenkins-ci.plugins:badge dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build-monitor-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 922b00701..f3da395e7 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -201,7 +201,7 @@ org.jenkins-ci.plugins badge - 1.2 + 1.9 true From 2bb467b344ddbc3af8290b19ef3a54e97ac9810b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 09:24:31 -0800 Subject: [PATCH 060/152] Bump maven-aether-provider from 3.2.5 to 3.3.9 (#511) * Bump maven-aether-provider from 3.2.5 to 3.3.9 Bumps maven-aether-provider from 3.2.5 to 3.3.9. --- updated-dependencies: - dependency-name: org.apache.maven:maven-aether-provider dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Basil Crow --- build-monitor-acceptance/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 4c81b22b3..57acfe888 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -20,7 +20,7 @@ UTF-8 2.4.51 - 1.0.0.v20140518 + 1.0.2.v20150114 1.12.1 1.7.32 @@ -171,7 +171,7 @@ org.apache.maven maven-aether-provider - 3.2.5 + 3.3.9 From c05fcbf0c0fcbf21639ca4a26f2948403f274a2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Nov 2021 17:33:23 +0000 Subject: [PATCH 061/152] Bump http-proxy from 1.17.0 to 1.18.1 in /build-monitor-plugin Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.17.0 to 1.18.1. - [Release notes](https://github.com/http-party/node-http-proxy/releases) - [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md) - [Commits](https://github.com/http-party/node-http-proxy/compare/1.17.0...1.18.1) Signed-off-by: dependabot[bot] --- build-monitor-plugin/package-lock.json | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/build-monitor-plugin/package-lock.json b/build-monitor-plugin/package-lock.json index bf144a4ae..3a2daee61 100644 --- a/build-monitor-plugin/package-lock.json +++ b/build-monitor-plugin/package-lock.json @@ -777,12 +777,6 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, "expand-braces": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", @@ -1791,14 +1785,22 @@ } }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + } } }, "http-signature": { From 3f5e20732a1628908d22511c58d0e716dc8a29cf Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Sun, 21 Nov 2021 14:49:54 -0500 Subject: [PATCH 062/152] transform less to css at compile time instead of runtime --- build-monitor-plugin/pom.xml | 32 ++++--- .../plugin/assetbundler/Dispatcher.java | 39 --------- .../plugin/assetbundler/PathToAsset.java | 53 ----------- .../plugin/assetbundler/filters/LessCSS.java | 87 ------------------- .../buildmonitor/BuildMonitorView/index.jelly | 2 +- .../main/webapp/less/layout/dashboard.less | 4 +- .../src/main/webapp/less/layout/index.less | 4 +- .../src/main/webapp/less/layout/widgets.less | 2 +- .../src/main/webapp/less/module/footer.less | 2 +- .../src/main/webapp/less/module/index.less | 10 +-- .../main/webapp/less/module/widget/basic.less | 4 +- .../plugin/assetbundler/OsSpecific.java | 11 --- .../plugin/assetbundler/PathToAssetTest.java | 76 ---------------- 13 files changed, 34 insertions(+), 292 deletions(-) delete mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/Dispatcher.java delete mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAsset.java delete mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/filters/LessCSS.java delete mode 100644 build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/OsSpecific.java delete mode 100644 build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index f3da395e7..a2140141e 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -130,11 +130,6 @@ jackson2-api - - com.github.sommeri - less4j - 1.17.2 - org.jenkins-ci.modules instance-identity @@ -167,13 +162,6 @@ org.jenkins-ci.plugins git true - - - - com.google.protobuf - protobuf-java - - org.jenkins-ci.plugins @@ -279,6 +267,26 @@ + + biz.gabrys.maven.plugins + lesscss-maven-plugin + 1.2.1 + + ${project.basedir}/src/main/webapp/less + + index.less + + ${project.build.directory}/${project.build.finalName}/styles + + + + compile-less + + compile + + + + com.github.klieber phantomjs-maven-plugin diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/Dispatcher.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/Dispatcher.java deleted file mode 100644 index 2fc4b0f09..000000000 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/Dispatcher.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugin.assetbundler; - -import com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS; -import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import hudson.Extension; -import hudson.Plugin; -import hudson.util.PluginServletFilter; - -import java.io.File; -import java.net.URL; - -/* - * Based on: - * * https://github.com/jenkinsci/uithemes-plugin/blob/master/src/main/java/org/jenkinsci/plugins/uithemes/ - * * https://github.com/kiy0taka/filter_sample/ - * - * and the conversation at - * * https://groups.google.com/forum/#!searchin/jenkinsci-dev/less/jenkinsci-dev/3AU7OcUxRFk/YNpFl2NS47QJ - */ -@Extension -public class Dispatcher extends Plugin { - - @Override - public void postInitialize() throws Exception { - super.postInitialize(); - - PluginServletFilter.addFilter(new LessCSS("/build-monitor-plugin/style.css", pathTo("less/index.less"), new StaticJenkinsAPIs())); - } - - @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "Can never be null as build-monitor-plugin refers to self") - private URL baseResourceURL() { - return getWrapper().parent.getPlugin("build-monitor-plugin").baseResourceURL; - } - - private File pathTo(String asset) { - return new PathToAsset(baseResourceURL(), asset).toFile(); - } -} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAsset.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAsset.java deleted file mode 100644 index a1e17d429..000000000 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAsset.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugin.assetbundler; - -import java.io.File; -import java.net.URI; -import java.net.URL; - -import static java.lang.String.format; - -public class PathToAsset { - private static final String FILE_PROTOCOL = "file"; - private final URI path; - - public PathToAsset(URL root, String asset) { - this.path = validated(uriFrom(root, asset)); - } - - public File toFile() { - /* - * The below workaround is required as the `uri` representing a UNC path on Windows - * has an `authority` component defined (//foo/bar/some/file.ext), - * however the File class constructor requires URIs with no defined authority - * - * https://github.com/jan-molak/jenkins-build-monitor-plugin/issues/183#issuecomment-157712010 - * - * http://blogs.msdn.com/b/ie/archive/2006/12/06/file-uris-in-windows.aspx - * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086147 - * - * fix as per: https://github.com/sbt/sbt/issues/564 - */ - - return (null == path.getAuthority()) - ? new File(path) - : new File(path.getSchemeSpecificPart()); - } - - // -- - - private URI uriFrom(URL root, String asset) { - try { - return new URL(root, asset).toURI(); - } catch (Exception e) { - throw new IllegalArgumentException(format("Sorry, I couldn't construct a path to asset '%s' using root: '%s", asset, root)); - } - } - - private URI validated(URI fileUri) { - if (! FILE_PROTOCOL.equals(fileUri.getScheme())) { - throw new IllegalArgumentException(format("Sorry, can't load the asset from '%s' using the '%s' protocol", fileUri, FILE_PROTOCOL)); - } - - return fileUri; - } -} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/filters/LessCSS.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/filters/LessCSS.java deleted file mode 100644 index 0c2452b04..000000000 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/filters/LessCSS.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugin.assetbundler.filters; - -import com.github.sommeri.less4j.Less4jException; -import com.github.sommeri.less4j.LessCompiler; -import com.github.sommeri.less4j.core.DefaultLessCompiler; -import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; - -import javax.servlet.Filter; - -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; - -import static java.lang.String.format; - -public class LessCSS implements Filter { - private final File lessFile; - private final String pathToCSS; - private final StaticJenkinsAPIs jenkins; - - private String compiledCSS; - - public LessCSS(String pathToCSS, File pathToLess, StaticJenkinsAPIs jenkins) throws URISyntaxException { - this.pathToCSS = pathToCSS; - this.lessFile = pathToLess; - this.jenkins = jenkins; - } - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - - } - - @Override - public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException { - String path = ((HttpServletRequest) request).getPathInfo(); - if (path == null) { - path = ((HttpServletRequest) request).getServletPath(); - } - - if (path != null && path.matches(pathToCSS)) { - sendCSS(response); - } else { - chain.doFilter(request, response); - } - } - - private void sendCSS(ServletResponse response) throws IOException { - HttpServletResponse httpResponse = (HttpServletResponse) response; - - String css = compiledAndCachedIfNeeded(lessFile); - - httpResponse.setStatus(HttpServletResponse.SC_OK); - httpResponse.setContentType("text/css;charset=UTF-8"); - httpResponse.setContentLength(css.length()); - httpResponse.getWriter().write(css); - } - - // todo: extract the caching functionality into a separate class - private String compiledAndCachedIfNeeded(File less) { - if (jenkins.isDevelopmentMode() || compiledCSS == null) { - compiledCSS = cssFrom(less); - } - - return compiledCSS; - } - - private String cssFrom(File less) { - LessCompiler compiler = new DefaultLessCompiler(); - LessCompiler.Configuration config = new LessCompiler.Configuration(); - - config.setCompressing(false); - config.getSourceMapConfiguration().setLinkSourceMap(false); - - try { - return compiler.compile(less, config).getCss(); - } catch (Less4jException e) { - return format("/* Less compilation failed with: %s */", e.getMessage()); - } - } - - @Override - public void destroy() {} -} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/index.jelly b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/index.jelly index 0f5006dd2..dcfe64f5b 100644 --- a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/index.jelly +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/index.jelly @@ -42,7 +42,7 @@ - + diff --git a/build-monitor-plugin/src/main/webapp/less/layout/dashboard.less b/build-monitor-plugin/src/main/webapp/less/layout/dashboard.less index 09aacc77e..8180f5c26 100644 --- a/build-monitor-plugin/src/main/webapp/less/layout/dashboard.less +++ b/build-monitor-plugin/src/main/webapp/less/layout/dashboard.less @@ -1,5 +1,5 @@ -@import "./../flexbox"; -@import './../box-shadow'; +@import "./../flexbox.less"; +@import './../box-shadow.less'; body { margin: 0; } diff --git a/build-monitor-plugin/src/main/webapp/less/layout/index.less b/build-monitor-plugin/src/main/webapp/less/layout/index.less index 501546367..081d200e1 100644 --- a/build-monitor-plugin/src/main/webapp/less/layout/index.less +++ b/build-monitor-plugin/src/main/webapp/less/layout/index.less @@ -1,2 +1,2 @@ -@import "./dashboard"; -@import "./widgets"; \ No newline at end of file +@import "./dashboard.less"; +@import "./widgets.less"; \ No newline at end of file diff --git a/build-monitor-plugin/src/main/webapp/less/layout/widgets.less b/build-monitor-plugin/src/main/webapp/less/layout/widgets.less index a33c809d7..ccec96a4f 100644 --- a/build-monitor-plugin/src/main/webapp/less/layout/widgets.less +++ b/build-monitor-plugin/src/main/webapp/less/layout/widgets.less @@ -1,4 +1,4 @@ -@import "../flexbox"; +@import "../flexbox.less"; .build-monitor.dashboard #widgets { diff --git a/build-monitor-plugin/src/main/webapp/less/module/footer.less b/build-monitor-plugin/src/main/webapp/less/module/footer.less index e34666c44..5ce8ecec4 100644 --- a/build-monitor-plugin/src/main/webapp/less/module/footer.less +++ b/build-monitor-plugin/src/main/webapp/less/module/footer.less @@ -1,4 +1,4 @@ -@import '../flexbox'; +@import '../flexbox.less'; .build-monitor.dashboard>footer { .flex-display(); diff --git a/build-monitor-plugin/src/main/webapp/less/module/index.less b/build-monitor-plugin/src/main/webapp/less/module/index.less index 5a15e5e80..4b51515b3 100644 --- a/build-monitor-plugin/src/main/webapp/less/module/index.less +++ b/build-monitor-plugin/src/main/webapp/less/module/index.less @@ -1,5 +1,5 @@ -@import "./footer"; -@import "./modal"; -@import "./progressbar"; -@import "./widget/basic"; -@import "./slider"; \ No newline at end of file +@import "./footer.less"; +@import "./modal.less"; +@import "./progressbar.less"; +@import "./widget/basic.less"; +@import "./slider.less"; \ No newline at end of file diff --git a/build-monitor-plugin/src/main/webapp/less/module/widget/basic.less b/build-monitor-plugin/src/main/webapp/less/module/widget/basic.less index fd3d93142..331116249 100644 --- a/build-monitor-plugin/src/main/webapp/less/module/widget/basic.less +++ b/build-monitor-plugin/src/main/webapp/less/module/widget/basic.less @@ -1,5 +1,5 @@ -@import '../../flexbox'; -@import '../../box-shadow'; +@import '../../flexbox.less'; +@import '../../box-shadow.less'; .build-monitor { .widget.basic.project { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/OsSpecific.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/OsSpecific.java deleted file mode 100644 index 5330e8e30..000000000 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/OsSpecific.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugin.assetbundler; - -public class OsSpecific { - public static boolean isWindows() { - return System.getProperty("os.name").startsWith("Windows"); - } - - public static boolean isNotWindows() { - return ! isWindows(); - } -} \ No newline at end of file diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java deleted file mode 100644 index 92b58d6a3..000000000 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugin/assetbundler/PathToAssetTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.smartcodeltd.jenkinsci.plugin.assetbundler; - -import org.apache.commons.lang.SystemUtils; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.net.MalformedURLException; -import java.net.URL; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; - -public class PathToAssetTest { - - private static final String WINDOWS_SEPARATOR = "\\\\"; - private static final String UNIX_SEPARATOR = "/"; - - @Test - public void combines_base_resource_url_given_by_jenkins_and_a_path_to_the_asset() throws Exception { - URL base = baseResourceUrlGivenByJenkins("file:///opt/jenkins/plugins/build-monitor-plugin/"); - - PathToAsset path = new PathToAsset(base, "less/index.less"); - - assertThat(normalize(absolute(path)), is("/opt/jenkins/plugins/build-monitor-plugin/less/index.less")); - } - - @Test - public void works_with_unc_paths_on_windows() throws Exception { - URL base = baseResourceUrlGivenByJenkins("file://server/jenkins/plugins/build-monitor-plugin/"); - - PathToAsset path = new PathToAsset(base, "less/index.less"); - - assertThat(normalize(absolute(path)), is("/server/jenkins/plugins/build-monitor-plugin/less/index.less")); - } - - @Rule public ExpectedException thrown = ExpectedException.none(); - - @Test - public void complains_when_given_a_non_file_base_resource_url() throws Exception { - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("Sorry, can't load the asset from 'http://google.com/less/index.less' using the 'file' protocol"); - - new PathToAsset(new URL("http://google.com"), "less/index.less"); - } - - // -- - - private String absolute(PathToAsset path) { - return path.toFile().getAbsolutePath(); - } - - /** - * Normalize the path to get a constant value between windows and *nix - */ - private String normalize(String path) { - String normalized = path; - - if (SystemUtils.IS_OS_WINDOWS) { - normalized = normalized.replaceAll(WINDOWS_SEPARATOR, UNIX_SEPARATOR); - if (normalized.indexOf(":") >= 0) { - normalized = normalized.substring(normalized.indexOf(":") + 1); - } - if (normalized.startsWith("//")) { - normalized = normalized.substring(1); - } - } - - return normalized; - } - - // a pass-through method, only here for readability purposes - private URL baseResourceUrlGivenByJenkins(String url) throws MalformedURLException { - return new URL(url); - } -} \ No newline at end of file From 43b8d453353177ba3bbe60ccb064cef98ae87aa3 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 21 Nov 2021 13:48:44 -0800 Subject: [PATCH 063/152] Remove unnecessary dependencies --- build-monitor-acceptance/pom.xml | 10 ---------- build-monitor-plugin/pom.xml | 30 ------------------------------ pom.xml | 10 ++++++++++ 3 files changed, 10 insertions(+), 40 deletions(-) diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 57acfe888..38ac2a27c 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -88,11 +88,6 @@ xstream 1.4.18 - - commons-net - commons-net - 3.8.0 - joda-time joda-time @@ -108,11 +103,6 @@ byte-buddy ${bytebuddy.version} - - org.apache.commons - commons-lang3 - 3.12.0 - org.apache.httpcomponents httpclient diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index a2140141e..e3e4e00ef 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -84,16 +84,6 @@ - - com.google.code.gson - gson - 2.8.9 - - - commons-net - commons-net - 3.8.0 - io.jenkins.tools.bom bom-2.289.x @@ -101,26 +91,6 @@ import pom - - org.apache.commons - commons-lang3 - 3.12.0 - - - org.codehaus.plexus - plexus-classworlds - 2.6.0 - - - org.codehaus.plexus - plexus-utils - 3.4.1 - - - org.json - json - 20210307 - diff --git a/pom.xml b/pom.xml index e81561a92..53b4d1cdf 100644 --- a/pom.xml +++ b/pom.xml @@ -57,6 +57,16 @@ + + commons-net + commons-net + 3.8.0 + + + org.apache.commons + commons-lang3 + 3.12.0 + org.eclipse.jetty jetty-io From bf7a87c4bedc6a58b07eca394863de375f496391 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 21 Nov 2021 14:41:47 -0800 Subject: [PATCH 064/152] Remove unused phantomjs dependency --- .github/dependabot.yml | 2 - build-monitor-acceptance/pom.xml | 28 ++++++++++++ build-monitor-plugin/pom.xml | 13 ------ pom.xml | 75 +------------------------------- 4 files changed, 29 insertions(+), 89 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e836eaa36..ead131a07 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,8 +8,6 @@ updates: schedule: interval: "weekly" ignore: - # TODO Starting with 9.4.20.v20190813, JellyTestSuiteBuilder$JellyTestSuite starts failing with com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 500 Server Error - - dependency-name: "org.eclipse.jetty:*" # This is the minimum Jenkins version - dependency-name: "org.jenkins-ci.main:cli" - package-ecosystem: "github-actions" diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 38ac2a27c..2dd943320 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -284,6 +284,34 @@ + + maven-enforcer-plugin + + + display-info + + + + + org.eclipse.jetty:jetty-client + org.eclipse.jetty:jetty-http + org.eclipse.jetty:jetty-io + org.eclipse.jetty:jetty-security + org.eclipse.jetty:jetty-server + org.eclipse.jetty:jetty-util + org.eclipse.jetty:jetty-webapp + org.eclipse.jetty:jetty-xml + org.eclipse.jetty.websocket:websocket-api + org.eclipse.jetty.websocket:websocket-client + org.eclipse.jetty.websocket:websocket-common + org.eclipse.jetty.websocket:websocket-server + + + + + + + diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index e3e4e00ef..5190d7761 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -220,19 +220,6 @@ mockito-inline test - - com.github.detro.ghostdriver - phantomjsdriver - 1.1.0 - test - - - - net.sourceforge.htmlunit - htmlunit - - - diff --git a/pom.xml b/pom.xml index 53b4d1cdf..1877a043c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,6 @@ 2.289.1 8 UTF-8 - 9.4.19.v20190610 @@ -67,51 +66,6 @@ commons-lang3 3.12.0 - - org.eclipse.jetty - jetty-io - ${jetty.version} - - - org.eclipse.jetty - jetty-security - ${jetty.version} - - - org.eclipse.jetty - jetty-server - ${jetty.version} - - - org.eclipse.jetty - jetty-servlet - ${jetty.version} - - - org.eclipse.jetty - jetty-util - ${jetty.version} - - - org.eclipse.jetty - jetty-webapp - ${jetty.version} - - - org.eclipse.jetty - jetty-xml - ${jetty.version} - - - org.eclipse.jetty.websocket - websocket-api - ${jetty.version} - - - org.eclipse.jetty.websocket - websocket-server - ${jetty.version} - @@ -123,34 +77,7 @@ release-candidate-maven-plugin 1.0-201605132325.9e7d5be - - maven-enforcer-plugin - - - display-info - - - - - org.eclipse.jetty:jetty-client - org.eclipse.jetty:jetty-http - org.eclipse.jetty:jetty-io - org.eclipse.jetty:jetty-security - org.eclipse.jetty:jetty-server - org.eclipse.jetty:jetty-util - org.eclipse.jetty:jetty-webapp - org.eclipse.jetty:jetty-xml - org.eclipse.jetty.websocket:websocket-api - org.eclipse.jetty.websocket:websocket-client - org.eclipse.jetty.websocket:websocket-common - org.eclipse.jetty.websocket:websocket-server - - - - - - - + From 1ec8a88d2a94e2cc130246fb4607e7a85ab90d11 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 21 Nov 2021 14:42:29 -0800 Subject: [PATCH 065/152] Remove unnecessary optional dependencies --- build-monitor-plugin/pom.xml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 5190d7761..6065d032f 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -123,21 +123,6 @@ 1.27.1 true - - org.jenkins-ci.plugins - matrix-project - true - - - org.jenkins-ci.plugins - git - true - - - org.jenkins-ci.plugins - apache-httpcomponents-client-4-api - true - org.jenkins-ci.plugins buildgraph-view From d8bfee098b8d4a651bd910fbec885786b45403ad Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 21 Nov 2021 15:06:03 -0800 Subject: [PATCH 066/152] Remove optional dependency on buildgraph-view --- build-monitor-plugin/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/build-monitor-plugin/pom.xml b/build-monitor-plugin/pom.xml index 6065d032f..37bab7518 100644 --- a/build-monitor-plugin/pom.xml +++ b/build-monitor-plugin/pom.xml @@ -123,12 +123,6 @@ 1.27.1 true - - org.jenkins-ci.plugins - buildgraph-view - 1.3 - true - org.jenkins-ci.plugins claim From d282354b84ae50f0542ec3248b9b99e9099da61a Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:39:41 -0800 Subject: [PATCH 067/152] Reduce usages of deprecated methods --- .../buildmonitor/facade/RelativeLocation.java | 2 +- .../buildmonitor/facade/StaticJenkinsAPIs.java | 6 +++--- .../jcasc/ConfigurationAsCodeTest.java | 2 +- .../buildmonitor/pipeline/PipelineHelperTest.java | 2 +- .../buildmonitor/viewmodel/BuildViewTest.java | 2 +- .../buildmonitor/viewmodel/JobViewTest.java | 2 +- .../viewmodel/features/CanBeClaimedTest.java | 14 +++++--------- .../features/CanBeDiagnosedForProblemsTest.java | 2 +- .../features/HasBadgesBadgePluginTest.java | 7 +------ .../HasHeadlineShowingAbortedBuildDetails.java | 2 +- .../HasHeadlineShowingFailedBuildDetailsTest.java | 2 +- .../HasHeadlineShowingFixedBuildDetailsTest.java | 10 +++++----- .../HasHeadlineShowingRunningBuildDetailsTest.java | 10 +++++----- .../features/HasHeadlineWhichShowsNothingTest.java | 5 +++-- .../features/KnowsCurrentBuildsDetailsTest.java | 2 +- .../KnowsLastCompletedBuildDetailsTest.java | 2 +- .../viewmodel/syntacticsugar/BuildStateRecipe.java | 3 +-- 17 files changed, 33 insertions(+), 42 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/RelativeLocation.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/RelativeLocation.java index 6566459c5..6c2cf88bb 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/RelativeLocation.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/RelativeLocation.java @@ -22,7 +22,7 @@ public String name() { StaplerRequest request = Stapler.getCurrentRequest(); for( Ancestor a : request.getAncestors() ) { if(a.getObject() instanceof BuildMonitorView) { - ig = ((View) a.getObject()).getOwnerItemGroup(); + ig = ((View) a.getObject()).getOwner().getItemGroup(); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/StaticJenkinsAPIs.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/StaticJenkinsAPIs.java index 169a53ba5..c250d655f 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/StaticJenkinsAPIs.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/facade/StaticJenkinsAPIs.java @@ -15,7 +15,7 @@ public boolean isDevelopmentMode() { @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "PageDecoratorImpl is part of Jenkins core and should never be null") public String encodedPublicKey() { - return Jenkins.getInstance().getExtensionList(PageDecorator.class).get(PageDecoratorImpl.class).getEncodedPublicKey(); + return Jenkins.get().getExtensionList(PageDecorator.class).get(PageDecoratorImpl.class).getEncodedPublicKey(); } public int numberOfUsers() { @@ -24,7 +24,7 @@ public int numberOfUsers() { // see https://github.com/jan-molak/jenkins-build-monitor-plugin/issues/215 public String crumbFieldName() { - Jenkins instance = Jenkins.getInstance(); + Jenkins instance = Jenkins.get(); if (instance.isUseCrumbs()) { CrumbIssuer crumbIssuer = instance.getCrumbIssuer(); @@ -37,6 +37,6 @@ public String crumbFieldName() { } public boolean hasPlugin(String pluginName) { - return Jenkins.getInstance().getPlugin(pluginName) != null; + return Jenkins.get().getPlugin(pluginName) != null; } } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/jcasc/ConfigurationAsCodeTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/jcasc/ConfigurationAsCodeTest.java index 49e932600..0726f80a8 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/jcasc/ConfigurationAsCodeTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/jcasc/ConfigurationAsCodeTest.java @@ -26,7 +26,7 @@ public class ConfigurationAsCodeTest { @Test public void should_support_configuration_as_code() { - Collection views = Jenkins.getInstance().getViews(); + Collection views = Jenkins.get().getViews(); assertThat(views.size(), is(1)); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java index d799dcda3..dada3ca6a 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/PipelineHelperTest.java @@ -40,7 +40,7 @@ public void isNotWorkflowRun() { private Jenkins createMockJenkins(MockedStatic mockedJenkins) { Jenkins jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); return jenkins; } } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java index e5d01ace7..1eb8ced61 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/BuildViewTest.java @@ -29,7 +29,7 @@ public void should_know_the_name_of_the_job_its_based_on() { private Jenkins createMockJenkins(MockedStatic mockedJenkins) { Jenkins jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); return jenkins; } } \ No newline at end of file diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java index 5cf9b8645..d74b483ca 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java @@ -41,7 +41,7 @@ public class JobViewTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java index e5e98e207..d163ca849 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java @@ -4,9 +4,7 @@ import jenkins.model.Jenkins; import org.junit.After; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; @@ -14,15 +12,14 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; public class CanBeClaimedTest { private JobView job; - @Rule - public ExpectedException thrown = ExpectedException.none(); - private MockedStatic mockedJenkins; private Jenkins jenkins; @@ -30,7 +27,7 @@ public class CanBeClaimedTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After @@ -63,9 +60,8 @@ public void should_complain_if_the_build_was_not_claimable() throws Exception { job = a(jobView().of( a(job().withName("my-project").whereTheLast(build().finishedWith(FAILURE))))); - thrown.expectMessage("CanBeClaimed is not a feature of this project: 'my-project'"); - - job.which(CanBeClaimed.class); + RuntimeException thrown = assertThrows(RuntimeException.class, () -> job.which(CanBeClaimed.class)); + assertEquals("CanBeClaimed is not a feature of this project: 'my-project'", thrown.getMessage()); } private CanBeClaimed.Claim serialisedClaimOf(JobView job) { diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java index 30149a4ab..42f2a3f47 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblemsTest.java @@ -25,7 +25,7 @@ public class CanBeDiagnosedForProblemsTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java index 3915c053d..b6d5c89d5 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java @@ -4,9 +4,7 @@ import jenkins.model.Jenkins; import org.junit.After; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.mockito.MockedStatic; import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; @@ -20,9 +18,6 @@ public class HasBadgesBadgePluginTest { private JobView job; - @Rule - public ExpectedException thrown = ExpectedException.none(); - private MockedStatic mockedJenkins; private Jenkins jenkins; @@ -30,7 +25,7 @@ public class HasBadgesBadgePluginTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java index 9fcade26f..8ec009b8e 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java @@ -26,7 +26,7 @@ public class HasHeadlineShowingAbortedBuildDetails { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java index 16b43cf67..2fb690b75 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java @@ -25,7 +25,7 @@ public class HasHeadlineShowingFailedBuildDetailsTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java index 363383bf0..7a4747b13 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java @@ -10,8 +10,8 @@ import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.isEmptyString; -import static org.hamcrest.core.Is.is; +import static org.hamcrest.Matchers.emptyString; +import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; @@ -26,7 +26,7 @@ public class HasHeadlineShowingFixedBuildDetailsTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After @@ -76,7 +76,7 @@ public void should_not_congratulate_if_previous_succeeded() throws Exception { a(job().whereTheLast(build().succeededThanksTo("Adam")). andThePrevious(build().succeededThanksTo("Ben"))))); - assertThat(headlineOf(view), isEmptyString()); + assertThat(headlineOf(view), is(emptyString())); } @Test @@ -84,7 +84,7 @@ public void should_not_congratulate_if_no_failure_before() throws Exception { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().succeededThanksTo("Adam"))))); - assertThat(headlineOf(view), isEmptyString()); + assertThat(headlineOf(view), is(emptyString())); } // -- diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java index 569f3af14..7ae2f6b07 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java @@ -10,8 +10,8 @@ import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.isEmptyString; -import static org.hamcrest.core.Is.is; +import static org.hamcrest.Matchers.emptyString; +import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; @@ -26,7 +26,7 @@ public class HasHeadlineShowingRunningBuildDetailsTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After @@ -39,7 +39,7 @@ public void should_say_nothing_if_no_builds_were_executed_and_one_is_running_now view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().isStillBuilding())))); - assertThat(headlineOf(view), isEmptyString()); + assertThat(headlineOf(view), is(emptyString())); } @Test @@ -63,7 +63,7 @@ public void should_not_tell_whose_changes_are_being_built_if_commiters_are_not_t view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Adam"))))); - assertThat(headlineOf(view), isEmptyString()); + assertThat(headlineOf(view), is(emptyString())); } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java index cc46f9a5d..b306ada5a 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java @@ -6,7 +6,8 @@ import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.isEmptyString; +import static org.hamcrest.Matchers.emptyString; +import static org.hamcrest.Matchers.is; public class HasHeadlineWhichShowsNothingTest { private JobView view; @@ -16,7 +17,7 @@ public void should_say_nothing_if_no_builds_were_executed() throws Exception { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().thatHasNeverRun()))); - assertThat(headlineOf(view), isEmptyString()); + assertThat(headlineOf(view), is(emptyString())); } // -- diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java index 1e95ec757..0b4d53e6a 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetailsTest.java @@ -30,7 +30,7 @@ public class KnowsCurrentBuildsDetailsTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java index 237bc4b81..dd305d8c0 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java @@ -25,7 +25,7 @@ public class KnowsLastCompletedBuildDetailsTest { public void setup() { mockedJenkins = mockStatic(Jenkins.class); jenkins = mock(Jenkins.class); - mockedJenkins.when(Jenkins::getInstance).thenReturn(jenkins); + mockedJenkins.when(Jenkins::get).thenReturn(jenkins); } @After diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index d4251263f..95de4d4ed 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -179,7 +179,6 @@ public BuildStateRecipe wasAbortedBy(String username, MockedStatic mockedU User user = userCalled(username); if (mockedUser != null) { - mockedUser.when(() -> User.get(user.getId())).thenReturn(user); //For older Jenkins versions mockedUser.when(() -> User.get(Mockito.eq(user.getId()), Mockito.eq(false), Mockito.anyMap())).thenReturn(user); // For newer Jenkins versions } @@ -269,7 +268,7 @@ private User userCalled(String name) { } private ChangeLogSet changeSetBasedOn(final List entries) { - return new ChangeLogSet(null) { + return new ChangeLogSet(null, null) { @Override public boolean isEmptySet() { return false; From e3ae42e627b249272e55e6313b3e9379e1a5d120 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:39:57 -0800 Subject: [PATCH 068/152] Replace C-style array declaration with Java-style array declaration --- .../plugins/buildmonitor/viewmodel/JobViewSerialiser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java index 912afda4b..f686fdfd0 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java @@ -34,7 +34,7 @@ public void serialize(JobView job, JsonGenerator jgen, SerializerProvider provid private String nameOf(Object serialised) { // http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/beans/Introspector.java#265 - char chars[] = serialised.getClass().getSimpleName().toString().toCharArray(); + char[] chars = serialised.getClass().getSimpleName().toString().toCharArray(); chars[0] = Character.toLowerCase(chars[0]); return new String(chars); From dfa6a579c721c0ec4e25d1f26d775a27a9cfd153 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:41:18 -0800 Subject: [PATCH 069/152] Replace Optional.isPresent with functional-style expression --- .../plugins/buildmonitor/viewmodel/features/CanBeClaimed.java | 4 +--- .../viewmodel/features/CanBeDiagnosedForProblems.java | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java index 767a3bf12..023f318e9 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimed.java @@ -20,9 +20,7 @@ public CanBeClaimed of(JobView jobView) { public Claim asJson() { Optional details = job.lastCompletedBuild().detailsOf(ClaimBuildAction.class); - return details.isPresent() // would be nice to have .map(Claim(_)).orElse(), but hey... - ? new Claim(details.get()) - : null; // `null` because we don't want to serialise an empty object + return details.map(Claim::new).orElse(null); // `null` because we don't want to serialise an empty object } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java index eded0f37b..cb3542cf4 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeDiagnosedForProblems.java @@ -30,9 +30,7 @@ public CanBeDiagnosedForProblems of(JobView jobView) { public Problems asJson() { Optional details = job.lastCompletedBuild().detailsOf(FailureCauseBuildAction.class); - return details.isPresent() // would be nice to have .map(Claim(_)).orElse(), but hey... - ? new Problems(details.get(), displayedField) - : null; // `null` because we don't want to serialise an empty object + return details.map(failureCauseBuildAction -> new Problems(failureCauseBuildAction, displayedField)).orElse(null); // `null` because we don't want to serialise an empty object } public static class Problems { From e2aafcea818c6a8baccaedfb41f7ec63ad191e81 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:41:49 -0800 Subject: [PATCH 070/152] Use StandardCharsets where possible --- .../integration/jenkins/logging/LoggerOutputStream.java | 4 ++-- .../integration/jenkins/process/JenkinsLogWatcher.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java index 8455670f2..6a9183e7d 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java @@ -2,7 +2,7 @@ import java.io.IOException; import java.io.OutputStream; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; public class LoggerOutputStream extends OutputStream { private Witness witness; @@ -17,7 +17,7 @@ public LoggerOutputStream(Witness witness) { public void write(int b) throws IOException { byte[] bytes = new byte[1]; bytes[0] = (byte) (b & 0xff); - buffer = buffer + new String(bytes, Charset.forName("UTF-8")); + buffer = buffer + new String(bytes, StandardCharsets.UTF_8); if (buffer.endsWith("\n")) { buffer = buffer.substring(0, buffer.length() - 1); diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java index dc4741fdf..d76d3b3d6 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsLogWatcher.java @@ -5,7 +5,7 @@ import org.slf4j.LoggerFactory; import java.io.*; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; @@ -38,7 +38,7 @@ public void close() { @Override public void run() { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(jenkinsOutput, Charset.forName("UTF-8")))) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(jenkinsOutput, StandardCharsets.UTF_8))) { String line; while ((line = reader.readLine()) != null && !stop) { From 7c467297b83ad35766b9458c887dbab5f3474384 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:42:08 -0800 Subject: [PATCH 071/152] Remove redundant "extends Object" --- .../plugins/buildmonitor/viewmodel/features/Feature.java | 2 +- .../viewmodel/features/SerialisableAsJsonObjectCalled.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/Feature.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/Feature.java index 913ebd359..1ec5b2fa9 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/Feature.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/Feature.java @@ -5,6 +5,6 @@ /** * @author Jan Molak */ -public interface Feature extends SerialisableAsJsonObjectCalled { +public interface Feature extends SerialisableAsJsonObjectCalled { F of(JobView jobView); } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/SerialisableAsJsonObjectCalled.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/SerialisableAsJsonObjectCalled.java index 6ceb3c19f..1a3476c9e 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/SerialisableAsJsonObjectCalled.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/SerialisableAsJsonObjectCalled.java @@ -3,6 +3,6 @@ /** * @author Jan Molak */ -public interface SerialisableAsJsonObjectCalled { +public interface SerialisableAsJsonObjectCalled { JSON asJson(); } From 633f5e3a6b6dfe28eb1831a91333cffcdeaf4f33 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:42:30 -0800 Subject: [PATCH 072/152] Remove pointless Javadocs --- .../jenkinsci/plugins/buildmonitor/BuildMonitorView.java | 1 - .../plugins/buildmonitor/order/ByEstimatedDuration.java | 1 - 2 files changed, 2 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java index 328c11150..7e0242f8a 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java @@ -139,7 +139,6 @@ protected void submit(StaplerRequest req) throws ServletException, IOException, * it can only work with net.sf.JSONObject in order to produce correct application/json output * * @return Json representation of JobViews - * @throws Exception */ @JavaScriptMethod public JSONObject fetchJobViews() throws Exception { diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java index 8ef999865..51f1ac959 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java @@ -16,7 +16,6 @@ public int compare(AbstractProject a, AbstractProject b) { /** * Returns a sum of the estimated duration for a project and all upstream projects * - * @param project * @return time */ private long getTotalEstimatedDuration(AbstractProject project) { From d87123af50ab832280e3a5ee2bfc96f8c922f627 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:45:16 -0800 Subject: [PATCH 073/152] Fuse more statements into Stream API --- .../culprits/BuildCulpritsAbstractBuild.java | 14 ++++++-------- .../culprits/BuildCulpritsWorkflowRun.java | 13 +++++-------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java index 709be22a8..8e74ccd02 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsAbstractBuild.java @@ -20,10 +20,9 @@ class BuildCulpritsAbstractBuild extends BuildCulpritsRetriever { @Override public Set getCulprits(Run run) { AbstractBuild abstractBuild = (AbstractBuild) run; - return new TreeSet<>( - abstractBuild.getCulprits().stream() - .map(User::getFullName) - .collect(Collectors.toSet())); + return abstractBuild.getCulprits().stream() + .map(User::getFullName) + .collect(Collectors.toCollection(TreeSet::new)); } @@ -35,9 +34,8 @@ protected Set getCommittersForRun(Run run) { if (cs == null) { return Collections.emptySet(); } - return new TreeSet<>( - StreamSupport.stream(cs.spliterator(), false) - .map(entry -> entry.getAuthor().getFullName()) - .collect(Collectors.toSet())); + return StreamSupport.stream(cs.spliterator(), false) + .map(entry -> entry.getAuthor().getFullName()) + .collect(Collectors.toCollection(TreeSet::new)); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java index 159031abe..6edc64ef0 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java @@ -41,14 +41,11 @@ public Set getCulprits(Run run) { @Override protected Set getCommittersForRun(Run run) { WorkflowRun workflowRun = (WorkflowRun) run; - return new TreeSet<>( - workflowRun.getChangeSets().stream() - .filter(Objects::nonNull) - .flatMap( - changeLogSet -> - StreamSupport.stream(changeLogSet.spliterator(), false)) - .map(entry -> entry != null ? entry.getAuthor().getFullName() : null) - .collect(Collectors.toSet())); + return workflowRun.getChangeSets().stream() + .filter(Objects::nonNull) + .flatMap(changeLogSet -> StreamSupport.stream(changeLogSet.spliterator(), false)) + .map(entry -> entry != null ? entry.getAuthor().getFullName() : null) + .collect(Collectors.toCollection(TreeSet::new)); } private Set getCulpritsForRun(WorkflowRun from, WorkflowRun to) { From f4eb44a42d1f6f6fb43619338bae93fe80153eef Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:47:09 -0800 Subject: [PATCH 074/152] Fix String.format errors --- .../plugins/build_monitor/model/ProjectInformation.java | 2 +- .../com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java index 831c6ab77..6cc592369 100644 --- a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/model/ProjectInformation.java @@ -24,6 +24,6 @@ public List status() { @Override public String toString() { - return "ProjectInformation{name=%s, status={%s}}".format(name, status.stream().map(Object::toString).collect(Collectors.joining(", "))); + return String.format("ProjectInformation{name=%s, status={%s}}", name, status.stream().map(Object::toString).collect(Collectors.joining(", "))); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java index 61d09df61..c11581cec 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java @@ -49,7 +49,7 @@ public void setDisplayCommitters(boolean flag) { @Override public String toString() { - return "Config{order=%s}".format(order.getClass().getSimpleName()); + return String.format("Config{order=%s}", order.getClass().getSimpleName()); } // -- From f3ef085dd1087fef6ce4ff308453f7cbb25d2d79 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:49:35 -0800 Subject: [PATCH 075/152] Remove unnecessary throws --- .../jenkins/logging/LoggerOutputStream.java | 2 +- .../ProjectStatusShouldBeEasyToDetermine.java | 4 ++-- .../java/features/ShouldDescribeEachProject.java | 2 +- .../test/java/features/ShouldDisplayBadges.java | 2 +- .../features/ShouldDisplayConcurrentBuilds.java | 2 +- .../java/features/ShouldDisplayPipelineStage.java | 2 +- .../features/ShouldSupportCloudBeesFolders.java | 2 +- .../features/ShouldSupportExternalProjects.java | 2 +- .../java/features/ShouldTellWhatBrokeTheBuild.java | 2 +- .../ShouldTellWhoIsFixingTheBrokenBuild.java | 2 +- .../buildmonitor/BuildMonitorDescriptor.java | 2 +- .../buildmonitor/BuildMonitorDescriptorTest.java | 6 +++--- .../installation/BuildMonitorInstallationTest.java | 4 ++-- .../buildmonitor/viewmodel/JobViewTest.java | 6 +++--- .../viewmodel/features/CanBeClaimedTest.java | 6 +++--- .../features/HasBadgesBadgePluginTest.java | 8 ++++---- .../HasHeadlineShowingAbortedBuildDetails.java | 4 ++-- .../HasHeadlineShowingFailedBuildDetailsTest.java | 14 +++++++------- .../HasHeadlineShowingFixedBuildDetailsTest.java | 12 ++++++------ .../HasHeadlineShowingRunningBuildDetailsTest.java | 8 ++++---- .../features/HasHeadlineWhichShowsNothingTest.java | 2 +- .../KnowsLastCompletedBuildDetailsTest.java | 2 +- .../viewmodel/readability/ListerTest.java | 14 +++++++------- .../viewmodel/readability/PluraliserTest.java | 6 +++--- .../syntacticsugar/BadgeBadgePluginRecipe.java | 4 ++-- .../viewmodel/syntacticsugar/BuildStateRecipe.java | 12 ++++++------ 26 files changed, 66 insertions(+), 66 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java index 6a9183e7d..6063bbbbe 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java @@ -14,7 +14,7 @@ public LoggerOutputStream(Witness witness) { } @Override - public void write(int b) throws IOException { + public void write(int b) { byte[] bytes = new byte[1]; bytes[0] = (byte) (b & 0xff); buffer = buffer + new String(bytes, StandardCharsets.UTF_8); diff --git a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java index f830a73fc..2b1202110 100644 --- a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java +++ b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java @@ -46,7 +46,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void visualising_a_successful_project() throws Exception { + public void visualising_a_successful_project() { givenThat(anna).wasAbleTo( Navigate.to(jenkins.url()), @@ -61,7 +61,7 @@ public void visualising_a_successful_project() throws Exception { } @Test - public void visualising_a_failing_project() throws Exception { + public void visualising_a_failing_project() { givenThat(anna).wasAbleTo( Navigate.to(jenkins.url()), diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java index e5652ea66..c42b09506 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java @@ -48,7 +48,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void displaying_a_custom_build_description() throws Exception { + public void displaying_a_custom_build_description() { givenThat(dave).wasAbleTo( Navigate.to(jenkins.url()), HaveAProjectCreated.called("Example Github Project").andConfiguredTo( diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index b0d244484..255d6dd41 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -52,7 +52,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void displaying_build_badges() throws Exception { + public void displaying_build_badges() { givenThat(paul).wasAbleTo( Navigate.to(jenkins.url()), HaveAPipelineProjectCreated.called("My App").andConfiguredTo( diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java index 073aff24f..3907ac836 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java @@ -49,7 +49,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void displaying_concurrent_builds() throws Exception { + public void displaying_concurrent_builds() { givenThat(dave).wasAbleTo( Navigate.to(jenkins.url()), HaveAProjectCreated.called(My_App).andConfiguredTo( diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java index d3cf9f868..23fee4a3d 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java @@ -46,7 +46,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void displaying_current_pipeline_stage() throws Exception { + public void displaying_current_pipeline_stage() { givenThat(donald).wasAbleTo( Navigate.to(jenkins.url()), HaveAPipelineProjectCreated.called("My Pipeline").andConfiguredTo( diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java index f3e2c8d52..b17ad7e13 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java @@ -47,7 +47,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void visualising_projects_nested_in_folders() throws Exception { + public void visualising_projects_nested_in_folders() { givenThat(anna).wasAbleTo( Navigate.to(jenkins.url()), diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java index 0d58e0141..1f8c864e7 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java @@ -48,7 +48,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void visualising_an_external_project() throws Exception { + public void visualising_an_external_project() { givenThat(maggie).wasAbleTo( Navigate.to(jenkins.url()), diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java index 17961609b..095de3291 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java @@ -45,7 +45,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void displaying_potential_failure_cause() throws Exception { + public void displaying_potential_failure_cause() { givenThat(dave).wasAbleTo( Navigate.to(jenkins.url()), HaveAShellScriptFailureCauseDefined.called("Rogue AI").describedAs("Pod bay doors didn't open"), diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java index 5ac4b0299..b3c048bba 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java @@ -51,7 +51,7 @@ public void actorCanBrowseTheWeb() { } @Test - public void claiming_a_broken_build() throws Exception { + public void claiming_a_broken_build() { givenThat(ben).wasAbleTo( Navigate.to(jenkins.url()), LogIn.as(ben), diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptor.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptor.java index b58a4931c..3e5cd89c3 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptor.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptor.java @@ -36,7 +36,7 @@ public FormValidation doCheckIncludeRegex(@QueryParameter String value) { } @Override - public boolean configure(StaplerRequest req, JSONObject json) throws FormException { + public boolean configure(StaplerRequest req, JSONObject json) { req.bindJSON(this, json.getJSONObject("build-monitor")); save(); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java index 8660a1e18..cc2cec78d 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorDescriptorTest.java @@ -21,19 +21,19 @@ public class BuildMonitorDescriptorTest { @Rule public final JenkinsRule jenkins = new JenkinsRule(); @Before - public void setUp() throws Exception { + public void setUp() { validator = new BuildMonitorDescriptor(); } @Test - public void form_validator_should_allow_valid_reg_ex_specifying_what_jobs_to_include() throws Exception { + public void form_validator_should_allow_valid_reg_ex_specifying_what_jobs_to_include() { for (String regex : asFollows(null, "", ".*", "myproject-.*")) { assertThat(itShouldAllow(regex), validator.doCheckIncludeRegex(regex).kind, is(OK)); } } @Test - public void form_validator_should_advise_how_a_regex_could_be_improved() throws Exception { + public void form_validator_should_advise_how_a_regex_could_be_improved() { FormValidation result = validator.doCheckIncludeRegex(")"); assertThat(result.kind, is(ERROR)); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java index 6f041b69b..4affb106b 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/installation/BuildMonitorInstallationTest.java @@ -15,7 +15,7 @@ public class BuildMonitorInstallationTest { public static final String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlEPjwjG6Q3ILlr91qlSxvvys046hUrhFmc8ibz9WvWEJKVs5dS/mCnRV4QFg4w3qoCH2lzuoSNHB7tWBYQXj1ZtbDiwjnFNYw1TyZBL43m2bRYQGjpcvHAUB6u07C7mmoehpaYoFkpJbLEYEGXsKV/0bY22n00cZHwoTGl5biGVX8gvNKq604pK97jdVuBNZeXiOMXS00Yrwv8tgWeRDIUhUCO8T4rj0bBULh1Pyg/aJBsts7z5RydB+Nb5OZfAfaklVTpFld+ZHMjt0Q7VYhkMkbBD+ZFRkHvRNqg2q7wdQFScGGx7G2RstUtcIPv5Ga36fj1okDU6c2vyPHErTuwIDAQAB"; @Test - public void helps_to_avoid_duplicated_stats_and_keep_jenkins_instance_anonymous() throws Exception { + public void helps_to_avoid_duplicated_stats_and_keep_jenkins_instance_anonymous() { BuildMonitorInstallation installation = new BuildMonitorInstallation(withPublicKey(PUBLIC_KEY)); assertThat(installation.anonymousCorrelationId(), is(not(PUBLIC_KEY))); @@ -23,7 +23,7 @@ public void helps_to_avoid_duplicated_stats_and_keep_jenkins_instance_anonymous( } @Test - public void only_calculates_the_correlation_hash_once() throws Exception { + public void only_calculates_the_correlation_hash_once() { StaticJenkinsAPIs jenkinsAPIs = withPublicKey(PUBLIC_KEY); BuildMonitorInstallation installation = new BuildMonitorInstallation(jenkinsAPIs); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java index d74b483ca..1b9cb897a 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewTest.java @@ -126,7 +126,7 @@ public void should_calculate_the_progress_of_a_running_job() throws Exception { } @Test - public void should_know_how_long_the_next_build_is_supposed_to_take() throws Exception { + public void should_know_how_long_the_next_build_is_supposed_to_take() { view = a(jobView().of( a(job().whereTheLast(build().finishedWith(SUCCESS).and().usuallyTakes(5))))); @@ -134,7 +134,7 @@ public void should_know_how_long_the_next_build_is_supposed_to_take() throws Exc } @Test - public void should_not_say_anything_if_it_doesnt_know_how_long_the_next_build_is_supposed_to_take() throws Exception { + public void should_not_say_anything_if_it_doesnt_know_how_long_the_next_build_is_supposed_to_take() { view = a(jobView().of(a(job()))); assertThat(view.estimatedDuration(), is("")); @@ -279,7 +279,7 @@ public void should_describe_the_job_as_failing_when_there_are_several_builds_run } @Test - public void public_api_should_return_reasonable_defaults_for_jobs_that_never_run() throws Exception { + public void public_api_should_return_reasonable_defaults_for_jobs_that_never_run() { view = a(jobView().of( a(job().thatHasNeverRun()))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java index d163ca849..a6ab6ac07 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/CanBeClaimedTest.java @@ -36,7 +36,7 @@ public void tearDown() { } @Test - public void should_know_if_a_failing_build_has_been_claimed() throws Exception { + public void should_know_if_a_failing_build_has_been_claimed() { String ourPotentialHero = "Adam", theReason = "I broke it, sorry, fixing now"; @@ -48,7 +48,7 @@ public void should_know_if_a_failing_build_has_been_claimed() throws Exception { } @Test - public void should_know_if_a_failing_build_has_not_been_claimed() throws Exception { + public void should_know_if_a_failing_build_has_not_been_claimed() { job = a(jobView().which(new CanBeClaimed()).of( a(job().whereTheLast(build().finishedWith(FAILURE))))); @@ -56,7 +56,7 @@ public void should_know_if_a_failing_build_has_not_been_claimed() throws Excepti } @Test - public void should_complain_if_the_build_was_not_claimable() throws Exception { + public void should_complain_if_the_build_was_not_claimable() { job = a(jobView().of( a(job().withName("my-project").whereTheLast(build().finishedWith(FAILURE))))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java index b6d5c89d5..6f7b083e0 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePluginTest.java @@ -34,7 +34,7 @@ public void tearDown() { } @Test - public void should_support_job_without_badges() throws Exception { + public void should_support_job_without_badges() { job = a(jobView().which(new HasBadgesBadgePlugin()).of( a(job()))); @@ -42,7 +42,7 @@ public void should_support_job_without_badges() throws Exception { } @Test - public void should_convert_badges_to_json() throws Exception { + public void should_convert_badges_to_json() { job = a(jobView().which(new HasBadgesBadgePlugin()).of( a(job().whereTheLast(build().hasBadgesBadgePlugin(badgePluginBadge().withText("badge1"), badgePluginBadge().withText("badge2")))))); @@ -50,7 +50,7 @@ public void should_convert_badges_to_json() throws Exception { } @Test - public void should_ignore_badges_with_icon() throws Exception { + public void should_ignore_badges_with_icon() { job = a(jobView().which(new HasBadgesBadgePlugin()).of( a(job().whereTheLast(build().hasBadgesBadgePlugin(badgePluginBadge().withIcon("icon.gif", "badge1"), badgePluginBadge().withText("badge2")))))); @@ -58,7 +58,7 @@ public void should_ignore_badges_with_icon() throws Exception { } @Test - public void should_report_badges_from_latest_build() throws Exception { + public void should_report_badges_from_latest_build() { job = a(jobView().which(new HasBadgesBadgePlugin()).of( a(job().whereTheLast(build().isStillBuilding().hasBadgesBadgePlugin(badgePluginBadge().withText("badge1"))) .andThePrevious(build().hasBadgesBadgePlugin(badgePluginBadge().withText("badge1"), badgePluginBadge().withText("badge2")))))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java index 8ec009b8e..aa279bbf4 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingAbortedBuildDetails.java @@ -35,7 +35,7 @@ public void tearDown() { } @Test - public void should_tell_who_aborted_the_build() throws Exception { + public void should_tell_who_aborted_the_build() { try (MockedStatic mockedUser = mockStatic(User.class)) { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().wasAbortedBy("Abe", mockedUser))))); @@ -45,7 +45,7 @@ public void should_tell_who_aborted_the_build() throws Exception { } @Test - public void should_tell_if_a_build_was_aborted() throws Exception { + public void should_tell_if_a_build_was_aborted() { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().wasAbortedBy("Abe", null))))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java index 2fb690b75..50159c8bb 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFailedBuildDetailsTest.java @@ -34,7 +34,7 @@ public void tearDown() { } @Test - public void should_tell_who_broke_the_build() throws Exception { + public void should_tell_who_broke_the_build() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam"))))); @@ -42,7 +42,7 @@ public void should_tell_who_broke_the_build() throws Exception { } @Test - public void should_list_committers_who_broke_the_build_in_alphabetical_order() throws Exception { + public void should_list_committers_who_broke_the_build_in_alphabetical_order() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam", "Ben"))))); @@ -50,7 +50,7 @@ public void should_list_committers_who_broke_the_build_in_alphabetical_order() t } @Test - public void should_tell_the_number_of_broken_builds_since_the_last_broken_build_and_the_author_of_the_first_offending_commit() throws Exception { + public void should_tell_the_number_of_broken_builds_since_the_last_broken_build_and_the_author_of_the_first_offending_commit() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam")). andThePrevious(build().wasBrokenBy("Ben", "Connor")). @@ -61,7 +61,7 @@ public void should_tell_the_number_of_broken_builds_since_the_last_broken_build_ } @Test - public void should_tell_the_number_of_broken_builds_since_the_last_build_broken_by_multiple_committers() throws Exception { + public void should_tell_the_number_of_broken_builds_since_the_last_build_broken_by_multiple_committers() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam")). andThePrevious(build().wasBrokenBy("Daniel", "Ben", "Connor")). @@ -71,7 +71,7 @@ public void should_tell_the_number_of_broken_builds_since_the_last_build_broken_ } @Test - public void should_tell_how_many_builds_have_failed_but_not_who_broke_them_if_configured_as_such() throws Exception { + public void should_tell_how_many_builds_have_failed_but_not_who_broke_them_if_configured_as_such() { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam"))))); @@ -79,7 +79,7 @@ public void should_tell_how_many_builds_have_failed_but_not_who_broke_them_if_co } @Test - public void should_tell_the_number_of_broken_builds_since_the_last_broken_build() throws Exception { + public void should_tell_the_number_of_broken_builds_since_the_last_broken_build() { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam")). andThePrevious(build().wasBrokenBy("Ben", "Connor")). @@ -90,7 +90,7 @@ public void should_tell_the_number_of_broken_builds_since_the_last_broken_build( } @Test - public void should_tell_the_number_of_broken_builds_since_the_last_build_broken_when_multiple_committers_are_involver() throws Exception { + public void should_tell_the_number_of_broken_builds_since_the_last_build_broken_when_multiple_committers_are_involver() { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().wasBrokenBy("Adam")). andThePrevious(build().wasBrokenBy("Daniel", "Ben", "Connor")). diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java index 7a4747b13..1d85aaa12 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingFixedBuildDetailsTest.java @@ -35,7 +35,7 @@ public void tearDown() { } @Test - public void should_tell_who_fixed_the_broken_build() throws Exception { + public void should_tell_who_fixed_the_broken_build() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().succeededThanksTo("Adam")). andThePrevious(build().wasBrokenBy("Daniel", "Ben"))))); @@ -44,7 +44,7 @@ public void should_tell_who_fixed_the_broken_build() throws Exception { } @Test - public void should_list_committers_who_fixed_the_broken_build() throws Exception { + public void should_list_committers_who_fixed_the_broken_build() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().succeededThanksTo("Adam", "Connor")). andThePrevious(build().wasBrokenBy("Daniel", "Ben"))))); @@ -53,7 +53,7 @@ public void should_list_committers_who_fixed_the_broken_build() throws Exception } @Test - public void should_congratulate_anonymously_if_broken_build_was_fixed_without_known_committers() throws Exception { + public void should_congratulate_anonymously_if_broken_build_was_fixed_without_known_committers() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().succeededThanksTo()). andThePrevious(build().wasBrokenBy("Daniel", "Ben"))))); @@ -62,7 +62,7 @@ public void should_congratulate_anonymously_if_broken_build_was_fixed_without_kn } @Test - public void should_congratulate_anonymously_when_the_build_is_fixed_but_the_committers_should_not_be_displayed() throws Exception { + public void should_congratulate_anonymously_when_the_build_is_fixed_but_the_committers_should_not_be_displayed() { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().succeededThanksTo("Adam")). andThePrevious(build().wasBrokenBy("Daniel", "Ben"))))); @@ -71,7 +71,7 @@ public void should_congratulate_anonymously_when_the_build_is_fixed_but_the_comm } @Test - public void should_not_congratulate_if_previous_succeeded() throws Exception { + public void should_not_congratulate_if_previous_succeeded() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().succeededThanksTo("Adam")). andThePrevious(build().succeededThanksTo("Ben"))))); @@ -80,7 +80,7 @@ public void should_not_congratulate_if_previous_succeeded() throws Exception { } @Test - public void should_not_congratulate_if_no_failure_before() throws Exception { + public void should_not_congratulate_if_no_failure_before() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().succeededThanksTo("Adam"))))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java index 7ae2f6b07..2e2a2dddd 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineShowingRunningBuildDetailsTest.java @@ -35,7 +35,7 @@ public void tearDown() { } @Test - public void should_say_nothing_if_no_builds_were_executed_and_one_is_running_now() throws Exception { + public void should_say_nothing_if_no_builds_were_executed_and_one_is_running_now() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().isStillBuilding())))); @@ -43,7 +43,7 @@ public void should_say_nothing_if_no_builds_were_executed_and_one_is_running_now } @Test - public void should_tell_whose_changes_are_being_built() throws Exception { + public void should_tell_whose_changes_are_being_built() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Adam"))))); @@ -51,7 +51,7 @@ public void should_tell_whose_changes_are_being_built() throws Exception { } @Test - public void should_tell_whose_changes_are_being_built_when_there_are_multiple_committers() throws Exception { + public void should_tell_whose_changes_are_being_built_when_there_are_multiple_committers() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Ben", "Adam"))))); @@ -59,7 +59,7 @@ public void should_tell_whose_changes_are_being_built_when_there_are_multiple_co } @Test - public void should_not_tell_whose_changes_are_being_built_if_commiters_are_not_to_be_displayed() throws Exception { + public void should_not_tell_whose_changes_are_being_built_if_commiters_are_not_to_be_displayed() { view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of( a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Adam"))))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java index b306ada5a..efa5e430c 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadlineWhichShowsNothingTest.java @@ -13,7 +13,7 @@ public class HasHeadlineWhichShowsNothingTest { private JobView view; @Test - public void should_say_nothing_if_no_builds_were_executed() throws Exception { + public void should_say_nothing_if_no_builds_were_executed() { view = a(jobView().which(hasHeadlineThatShowsCommitters()).of( a(job().thatHasNeverRun()))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java index dd305d8c0..c15910188 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsLastCompletedBuildDetailsTest.java @@ -63,7 +63,7 @@ public void should_know_the_url_of_the_last_build() { */ @Test - public void should_know_how_long_the_last_build_took_once_its_finished() throws Exception { + public void should_know_how_long_the_last_build_took_once_its_finished() { view = a(jobView().which(new KnowsLastCompletedBuildDetails()).of( a(job().whereTheLast(build().finishedWith(SUCCESS).and().took(3))))); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java index 336eba538..59b7b33c5 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/ListerTest.java @@ -12,37 +12,37 @@ public class ListerTest { @Test - public void should_return_an_empty_string_when_given_an_empty_list() throws Exception { + public void should_return_an_empty_string_when_given_an_empty_list() { assertThat(Lister.asString(listOf()), is("")); } @Test - public void should_return_a_string_representation_of_a_given_object() throws Exception { + public void should_return_a_string_representation_of_a_given_object() { assertThat(Lister.asString(listOf("apple")), is("apple")); } @Test - public void should_use_and_instead_of_a_comma_before_the_last_item() throws Exception { + public void should_use_and_instead_of_a_comma_before_the_last_item() { assertThat(Lister.asString(listOf("apple", "orange")), is("apple and orange")); } @Test - public void should_use_comma_to_delimit_all_the_elements_except_the_last_one() throws Exception { + public void should_use_comma_to_delimit_all_the_elements_except_the_last_one() { assertThat(Lister.asString(listOf("apple", "orange", "banana")), is("apple, orange and banana")); } @Test - public void should_use_an_optional_template_to_describe_a_list_with_multiple_items() throws Exception { + public void should_use_an_optional_template_to_describe_a_list_with_multiple_items() { assertThat(Lister.describe("Fruits: %s", listOf("apple", "orange")), is("Fruits: apple and orange")); } @Test - public void should_say_when_the_list_has_no_items() throws Exception { + public void should_say_when_the_list_has_no_items() { assertThat(Lister.describe("No fruit for you today :-(", "Fruits: %s", listOf()), is("No fruit for you today :-(")); } @Test - public void should_allow_to_use_a_different_template_to_describe_a_list_with_one_item() throws Exception { + public void should_allow_to_use_a_different_template_to_describe_a_list_with_one_item() { assertThat(Lister.describe("Empty", "%s fruit", "Fruits: %s", listOf("apple")), is("apple fruit")); } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/PluraliserTest.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/PluraliserTest.java index 819ab6776..a7cae90df 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/PluraliserTest.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/readability/PluraliserTest.java @@ -8,21 +8,21 @@ public class PluraliserTest { @Test - public void should_use_the_plural_format_if_no_other_is_specified() throws Exception { + public void should_use_the_plural_format_if_no_other_is_specified() { assertThat(Pluraliser.pluralise("%s apples", 0), is("0 apples")); assertThat(Pluraliser.pluralise("%s apples", 1), is("1 apples")); // eek, said the grammar geek! ;-) assertThat(Pluraliser.pluralise("%s apples", 5), is("5 apples")); } @Test - public void should_use_a_singular_format_if_the_count_equals_one() throws Exception { + public void should_use_a_singular_format_if_the_count_equals_one() { assertThat(Pluraliser.pluralise("%s apple", "%s apples", 0), is("0 apples")); assertThat(Pluraliser.pluralise("%s apple", "%s apples", 1), is("1 apple")); assertThat(Pluraliser.pluralise("%s apple", "%s apples", 5), is("5 apples")); } @Test - public void should_use_a_correct_format_depending_on_the_count_provided() throws Exception { + public void should_use_a_correct_format_depending_on_the_count_provided() { assertThat(Pluraliser.pluralise("no apples :-(", "%s apple", "%s apples", 0), is("no apples :-(")); assertThat(Pluraliser.pluralise("no apples :-(", "%s apple", "%s apples", 1), is("1 apple")); assertThat(Pluraliser.pluralise("no apples :-(", "%s apple", "%s apples", 5), is("5 apples")); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java index 42f20e607..dddfbf2da 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BadgeBadgePluginRecipe.java @@ -18,13 +18,13 @@ public BadgeBadgePluginRecipe() { badge = mock(BadgeAction.class); } - public BadgeBadgePluginRecipe withText(String text) throws Exception { + public BadgeBadgePluginRecipe withText(String text) { when(badge.getIconPath()).thenReturn(null); lenient().when(badge.getText()).thenReturn(text); return this; } - public BadgeBadgePluginRecipe withIcon(String icon, String text) throws Exception { + public BadgeBadgePluginRecipe withIcon(String icon, String text) { when(badge.getIconPath()).thenReturn(icon); lenient().when(badge.getText()).thenReturn(text); return this; diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index 95de4d4ed..b16c33b1d 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -63,7 +63,7 @@ public BuildStateRecipe finishedWith(Result result) { return this; } - public BuildStateRecipe withChangesFrom(String... authors) throws Exception { + public BuildStateRecipe withChangesFrom(String... authors) { boolean newJenkins = false; try { build.getClass().getMethod("shouldCalculateCulprits"); @@ -86,7 +86,7 @@ private BuildStateRecipe withChangesFromForJenkins2_46(String... authors) { } //Mockito reflective call to handle methods not available in Jenkins 2.46 which is used as dependency - private BuildStateRecipe withChangesFromForJenkins2_107AndNewer(String... authors) throws Exception { + private BuildStateRecipe withChangesFromForJenkins2_107AndNewer(String... authors) { ChangeLogSet changeSet = changeSetBasedOn(entriesBy(authors)); when(build.getChangeSet()).thenReturn(changeSet); lenient().when(build.shouldCalculateCulprits()).thenReturn(true); @@ -100,14 +100,14 @@ private BuildStateRecipe withChangesFromForJenkins2_107AndNewer(String... author return this; } - public BuildStateRecipe succeededThanksTo(String... authors) throws Exception { + public BuildStateRecipe succeededThanksTo(String... authors) { finishedWith(Result.SUCCESS); withChangesFrom(authors); return this; } - public BuildStateRecipe wasBrokenBy(String... culprits) throws Exception { + public BuildStateRecipe wasBrokenBy(String... culprits) { finishedWith(Result.FAILURE); withChangesFrom(culprits); @@ -143,7 +143,7 @@ public BuildStateRecipe startedAt(String time) throws Exception { return this; } - public BuildStateRecipe took(int minutes) throws Exception{ + public BuildStateRecipe took(int minutes) { long duration = (long) minutes * 60 * 1000; when(build.getDuration()).thenReturn(duration); @@ -151,7 +151,7 @@ public BuildStateRecipe took(int minutes) throws Exception{ return this; } - public BuildStateRecipe usuallyTakes(int minutes) throws Exception{ + public BuildStateRecipe usuallyTakes(int minutes) { long duration = (long) minutes * 60 * 1000; when(build.getEstimatedDuration()).thenReturn(duration); From 818af2ae923d304de6fbd5205c21c85727c70cef Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:52:54 -0800 Subject: [PATCH 076/152] Use enhanced for where possible --- .../plugins/buildmonitor/order/ByEstimatedDuration.java | 4 ++-- .../jenkinsci/plugins/buildmonitor/viewmodel/JobView.java | 4 ++-- .../viewmodel/features/KnowsCurrentBuildsDetails.java | 6 +++--- .../viewmodel/syntacticsugar/BuildStateRecipe.java | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java index 51f1ac959..3b62ab066 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java @@ -23,8 +23,8 @@ private long getTotalEstimatedDuration(AbstractProject project) { if(!project.getUpstreamProjects().isEmpty()) { List upStreamProjects = project.getUpstreamProjects(); - for (int i = 0; i < upStreamProjects.size(); i++) { - time += getTotalEstimatedDuration((AbstractProject)upStreamProjects.get(i)); + for (AbstractProject upStreamProject : upStreamProjects) { + time += getTotalEstimatedDuration((AbstractProject) upStreamProject); } } return time; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java index 3da4778f1..709b46cd9 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java @@ -134,8 +134,8 @@ public List currentBuilds() { RunList> runList = ((RunList>)job.getNewBuilds()).filter(BuildingPredicate.INSTANCE); - for (Iterator> i = runList.iterator(); i.hasNext(); ) { - currentBuilds.add(buildViewOf(i.next())); + for (Run run : runList) { + currentBuilds.add(buildViewOf(run)); } return currentBuilds; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java index 726a88ef4..041825e5f 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java @@ -49,9 +49,9 @@ public static class CurrentBuilds { private final List builds = new ArrayList<>(); public CurrentBuilds(List currentBuilds) { - for (Iterator i = currentBuilds.iterator(); i.hasNext(); ) { - builds.add(new CurrentBuild(i.next())); - } + for (BuildViewModel currentBuild : currentBuilds) { + builds.add(new CurrentBuild(currentBuild)); + } } @JsonValue diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index b16c33b1d..92a693bc0 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -226,8 +226,8 @@ private FoundFailureCause failure(String name) { public BuildStateRecipe hasBadgesBadgePlugin(BadgeBadgePluginRecipe... badges) { List actions = new ArrayList(); - for (int i = 0; i < badges.length; i++) { - actions.add(badges[i].get()); + for (BadgeBadgePluginRecipe badge : badges) { + actions.add(badge.get()); } when(build.getActions(BadgeAction.class)).thenReturn(actions); From 13170d4bd0e4ef4f68ae04cad6904f6c6aa72c7e Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:53:14 -0800 Subject: [PATCH 077/152] Remove unnecessary boxing and unboxing --- .../java/com/smartcodeltd/aether/ConsoleTransferListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java index a5edf4a89..0407b1a94 100644 --- a/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/aether/ConsoleTransferListener.java @@ -55,13 +55,13 @@ public void transferInitiated(TransferEvent event) { @Override public void transferProgressed(TransferEvent event) { TransferResource resource = event.getResource(); - downloads.put(resource, Long.valueOf(event.getTransferredBytes())); + downloads.put(resource, event.getTransferredBytes()); StringBuilder buffer = new StringBuilder(64); for (Map.Entry entry : downloads.entrySet()) { long total = entry.getKey().getContentLength(); - long complete = entry.getValue().longValue(); + long complete = entry.getValue(); buffer.append(getStatus(complete, total)).append(" "); } From 9c4e96dacee258a0b74ef100c3fe81174535308a Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:53:49 -0800 Subject: [PATCH 078/152] Use try-with-resources where possible --- .../integration/jenkins/environment/UpdateCenter.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java index 58f30a297..9cd0647ea 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/UpdateCenter.java @@ -86,17 +86,11 @@ private Path download(URL link) throws IOException { Path destination = Files.createTempFile(tempDir, "", ".tmp"); ReadableByteChannel rbc = Channels.newChannel(link.openStream()); - FileOutputStream fos = null; - try { - fos = new FileOutputStream(destination.toAbsolutePath().toFile()); + try (FileOutputStream fos = new FileOutputStream(destination.toAbsolutePath().toFile())) { fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); return destination; - } finally { - if (fos != null) { - fos.close(); - } } } From 42b99def374a6fbba264a44ad771581a25022562 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:54:05 -0800 Subject: [PATCH 079/152] Use diamond operator where possible --- .../integration/jenkins/client/JenkinsClient.java | 2 +- .../jenkinsci/plugins/buildmonitor/BuildMonitorView.java | 2 +- .../jenkinsci/plugins/buildmonitor/api/Success.java | 2 +- .../buildmonitor/culprits/BuildCulpritsWorkflowRun.java | 4 ++-- .../buildmonitor/pipeline/BreadthFirstNodeTraversal.java | 6 +++--- .../plugins/buildmonitor/viewmodel/NullBuildView.java | 8 ++++---- .../viewmodel/syntacticsugar/BuildStateRecipe.java | 6 +++--- .../viewmodel/syntacticsugar/JobStateRecipe.java | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java index 25cfc4d14..3050d0be7 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java @@ -168,7 +168,7 @@ private int executeCommand(String... args) { //TODO use RealJenkinsRule //return executor.call(args).execute(noManualInput(), info(logger), error(logger)); try { - List cliArgs = new ArrayList(Arrays.asList("-s", jenkinsUrl.toString(), "-http")); + List cliArgs = new ArrayList<>(Arrays.asList("-s", jenkinsUrl.toString(), "-http")); cliArgs.addAll(Arrays.asList(args)); return CLI._main(cliArgs.toArray(new String[cliArgs.size()])); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java index 7e0242f8a..df9de7a06 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java @@ -156,7 +156,7 @@ private List jobViews() { //A little bit of evil to make the type system happy. @SuppressWarnings("unchecked") List> projects = new ArrayList(filter(super.getItems(), Job.class)); - List jobs = new ArrayList(); + List jobs = new ArrayList<>(); Collections.sort(projects, currentConfig().getOrder()); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java index 4997c15de..8fbd4115f 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/api/Success.java @@ -17,7 +17,7 @@ public Success(T data) { } public static Success successful(T data) { - return new Success(data); + return new Success<>(data); } @JsonProperty diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java index 6edc64ef0..024fb2c05 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/culprits/BuildCulpritsWorkflowRun.java @@ -17,7 +17,7 @@ class BuildCulpritsWorkflowRun extends BuildCulpritsRetriever { @Override public Set getCulprits(Run run) { WorkflowRun workflowRun = (WorkflowRun) run; - Set culprits = new TreeSet(); + Set culprits = new TreeSet<>(); //Workaround while waiting for https://issues.jenkins-ci.org/browse/JENKINS-24141 WorkflowRun previous = workflowRun.getPreviousCompletedBuild(); if (workflowRun.isBuilding()) { @@ -49,7 +49,7 @@ protected Set getCommittersForRun(Run run) { } private Set getCulpritsForRun(WorkflowRun from, WorkflowRun to) { - Set culprits = new TreeSet(); + Set culprits = new TreeSet<>(); WorkflowRun next = null; while (true) { next = next == null ? from.getNextBuild() : next.getNextBuild(); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversal.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversal.java index eca8d4ea4..3f3a99e9b 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversal.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/pipeline/BreadthFirstNodeTraversal.java @@ -14,8 +14,8 @@ public abstract class BreadthFirstNodeTraversal { private final Set stages; public BreadthFirstNodeTraversal() { - this.nodesToAccess = new LinkedList(); - this.stages = new LinkedHashSet(); + this.nodesToAccess = new LinkedList<>(); + this.stages = new LinkedHashSet<>(); } public void start(List nodes) { @@ -37,6 +37,6 @@ public void start(List nodes) { protected abstract Collection getParents(N node); public List getStages() { - return new ArrayList(stages); + return new ArrayList<>(stages); } } \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java index d68ed512c..7540c18f4 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java @@ -70,7 +70,7 @@ public boolean isPipeline() { @Override public List pipelineStages() { - return new ArrayList(); + return new ArrayList<>(); } @Override @@ -85,12 +85,12 @@ public BuildViewModel previousBuild() { @Override public Set culprits() { - return new HashSet(); + return new HashSet<>(); } @Override public Set committers() { - return new HashSet(); + return new HashSet<>(); } @Override @@ -100,6 +100,6 @@ public Optional detailsOf(Class jenkinsAction) { @Override public List allDetailsOf(Class jenkinsAction) { - return new ArrayList(); + return new ArrayList<>(); } } diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java index 92a693bc0..e252c058f 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/BuildStateRecipe.java @@ -209,7 +209,7 @@ public BuildStateRecipe knownProblems(String... failures) { private FailureCauseBuildAction failureCauseBuildAction(String... FailureNames) { FailureCauseBuildAction action = mock(FailureCauseBuildAction.class); - List items = new ArrayList(); + List items = new ArrayList<>(); for( String name : FailureNames ) { items.add(failure(name)); } @@ -225,7 +225,7 @@ private FoundFailureCause failure(String name) { } public BuildStateRecipe hasBadgesBadgePlugin(BadgeBadgePluginRecipe... badges) { - List actions = new ArrayList(); + List actions = new ArrayList<>(); for (BadgeBadgePluginRecipe badge : badges) { actions.add(badge.get()); } @@ -245,7 +245,7 @@ public AbstractBuild get() { // todo: replace mock user with userCalled private List entriesBy(String... authors) { - List entries = new ArrayList(); + List entries = new ArrayList<>(); for (String name : authors) { User author = mock(User.class); diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java index cdbc68d6f..f18a829b8 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/JobStateRecipe.java @@ -22,8 +22,8 @@ public class JobStateRecipe implements Supplier> { private Job job; private RunList runList; - private Stack buildHistory = new Stack(); - private List allBuilds = new ArrayList(); + private Stack buildHistory = new Stack<>(); + private List allBuilds = new ArrayList<>(); public JobStateRecipe() { job = mock(Job.class); From cedffadd16b5fd93ccb91aa3333772bbcfcaecf2 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:56:21 -0800 Subject: [PATCH 080/152] Remove unused imports --- .../cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java | 1 - .../jenkinsci/plugins/build_monitor/tasks/ShowBadges.java | 1 - .../integration/jenkins/logging/LoggerOutputStream.java | 1 - .../net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java | 2 -- .../net/serenitybdd/screenplay/jenkins/actions/EnterCode.java | 1 - .../screenplay/jenkins/user_interface/NewViewPage.java | 1 - .../jenkinsci/plugins/buildmonitor/viewmodel/JobView.java | 1 - .../jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java | 1 - .../viewmodel/features/KnowsCurrentBuildsDetails.java | 1 - .../viewmodel/syntacticsugar/ConfigStateRecipe.java | 1 - 10 files changed, 11 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java b/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java index f6b606976..5a9f7e3a4 100644 --- a/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java +++ b/build-monitor-acceptance/src/main/java/com/cloudbees/hudson/plugins/folder/tasks/CreateAFolder.java @@ -5,7 +5,6 @@ import net.serenitybdd.screenplay.actions.Click; import net.serenitybdd.screenplay.actions.Enter; import net.serenitybdd.screenplay.jenkins.actions.Choose; -import net.serenitybdd.screenplay.jenkins.targets.RadioButton; import net.serenitybdd.screenplay.jenkins.user_interface.NewJobPage; import net.serenitybdd.screenplay.jenkins.user_interface.navigation.SidePanel; import net.thucydides.core.annotations.Step; diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java index 80f0698af..d8eb126a4 100644 --- a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/ShowBadges.java @@ -5,7 +5,6 @@ import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.Task; import net.serenitybdd.screenplay.actions.Click; -import net.serenitybdd.screenplay.matchers.WebElementStateMatchers; import net.serenitybdd.screenplay.waits.WaitUntil; import net.thucydides.core.annotations.Step; diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java index 6063bbbbe..687ce4421 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/logging/LoggerOutputStream.java @@ -1,6 +1,5 @@ package net.serenitybdd.integration.jenkins.logging; -import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java index 73e64acba..cd9e21f94 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/HaveAProjectCreated.java @@ -5,12 +5,10 @@ import net.serenitybdd.screenplay.actions.Click; import net.serenitybdd.screenplay.jenkins.tasks.CreateAFreestyleProject; import net.serenitybdd.screenplay.jenkins.tasks.configuration.TodoList; -import net.serenitybdd.screenplay.jenkins.user_interface.navigation.Buttons; import net.serenitybdd.screenplay.jenkins.user_interface.navigation.SidePanel; import net.thucydides.core.annotations.Step; import static net.serenitybdd.screenplay.Tasks.instrumented; -import static net.serenitybdd.screenplay.jenkins.user_interface.navigation.SidePanel.Back_to_Dashboard; public class HaveAProjectCreated implements Task { diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java index 2dedfc059..ac2b0450e 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/actions/EnterCode.java @@ -3,7 +3,6 @@ import net.serenitybdd.screenplay.Action; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.actions.Click; -import net.serenitybdd.screenplayx.actions.Scroll; import net.serenitybdd.screenplay.targets.Target; import net.serenitybdd.screenplayx.actions.Evaluate; import net.thucydides.core.annotations.Step; diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java index 34afdce3a..97e9ed1ca 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/NewViewPage.java @@ -2,7 +2,6 @@ import net.serenitybdd.core.pages.PageObject; import net.serenitybdd.screenplay.jenkins.targets.RadioButton; -import net.serenitybdd.screenplay.jenkins.targets.Setting; import net.serenitybdd.screenplay.targets.Target; import net.thucydides.core.annotations.DefaultUrl; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java index 709b46cd9..a70b672e5 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobView.java @@ -13,7 +13,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; -import java.util.Iterator; import java.util.List; import java.util.Objects; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java index 7540c18f4..ff668f00f 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/NullBuildView.java @@ -2,7 +2,6 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration; import hudson.model.Action; -import hudson.model.BuildBadgeAction; import hudson.model.Result; import java.util.ArrayList; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java index 041825e5f..c402e25ab 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/KnowsCurrentBuildsDetails.java @@ -8,7 +8,6 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.Iterator; import java.util.List; /** diff --git a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java index 7d832ffe7..3b55a751a 100644 --- a/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java +++ b/build-monitor-plugin/src/test/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/syntacticsugar/ConfigStateRecipe.java @@ -1,7 +1,6 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config; -import hudson.model.AbstractProject; import hudson.model.Job; import java.util.Comparator; From e86de8824acc515397529d60eb0dc450fadfbbd2 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:57:15 -0800 Subject: [PATCH 081/152] Replace anonymous type with lambda --- .../buildmonitor/viewmodel/features/HasHeadline.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java index a8fa5ff59..82e4f6c68 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasHeadline.java @@ -6,7 +6,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.function.Predicate; /** * @author Jan Molak @@ -41,11 +40,9 @@ private CandidateHeadline headlineOf(final JobView job) { new HeadlineOfFailing(job, config) ); - return availableHeadlines.stream().filter(new Predicate() { - @Override - public boolean test(CandidateHeadline candidateHeadline) { - return candidateHeadline.isApplicableTo(job); - } - }).findFirst().orElse(new NoHeadline()); + return availableHeadlines.stream() + .filter(candidateHeadline -> candidateHeadline.isApplicableTo(job)) + .findFirst() + .orElse(new NoHeadline()); } } From fc9eeb4d3b02085df886c9e97db2862dcb21573d Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:57:34 -0800 Subject: [PATCH 082/152] Replace Collections.sort with List.sort --- .../jenkinsci/plugins/buildmonitor/BuildMonitorView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java index df9de7a06..c0d565dc0 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java @@ -158,7 +158,7 @@ private List jobViews() { List> projects = new ArrayList(filter(super.getItems(), Job.class)); List jobs = new ArrayList<>(); - Collections.sort(projects, currentConfig().getOrder()); + projects.sort(currentConfig().getOrder()); for (Job project : projects) { jobs.add(views.viewOf(project)); From d811e7156d136d7a0126d7e7d7a061d92085d71d Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:57:44 -0800 Subject: [PATCH 083/152] Simplify Map operations --- .../jenkinsci/plugins/buildmonitor/viewmodel/CssStatus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/CssStatus.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/CssStatus.java index 5088ff1de..d166bdc36 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/CssStatus.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/CssStatus.java @@ -35,6 +35,6 @@ public static String of(final JobView job) { } private static String statusOf(Result result) { - return statuses.containsKey(result) ? statuses.get(result) : "unknown"; + return statuses.getOrDefault(result, "unknown"); } } From eb47da9b074b7036aa1926064ab2a94eee325e04 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:57:54 -0800 Subject: [PATCH 084/152] Use Long.compare where possible --- .../plugins/buildmonitor/order/ByEstimatedDuration.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java index 3b62ab066..34d82d0d2 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/order/ByEstimatedDuration.java @@ -31,13 +31,7 @@ private long getTotalEstimatedDuration(AbstractProject project) { } private int compareEstimatedDuration(AbstractProject a, AbstractProject b) { - if(getTotalEstimatedDuration(a) < getTotalEstimatedDuration(b)) { - return -1; - } else if (getTotalEstimatedDuration(a) > getTotalEstimatedDuration(b)) { - return 1; - } else { - return 0; - } + return Long.compare(getTotalEstimatedDuration(a), getTotalEstimatedDuration(b)); } } From fb2aa0272d5737c1d1105d60a4ff5f055aeaa654 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:58:38 -0800 Subject: [PATCH 085/152] Use Collections.singletonList where possible --- .../integration/jenkins/process/JenkinsProcess.java | 2 +- .../test/java/features/BuildMonitorShouldBeEasyToSetUp.java | 3 ++- .../java/features/ProjectStatusShouldBeEasyToDetermine.java | 3 ++- .../src/test/java/features/ShouldDescribeEachProject.java | 3 ++- .../src/test/java/features/ShouldDisplayBadges.java | 3 ++- .../src/test/java/features/ShouldDisplayConcurrentBuilds.java | 3 ++- .../src/test/java/features/ShouldDisplayPipelineStage.java | 3 ++- .../src/test/java/features/ShouldSupportCloudBeesFolders.java | 3 ++- .../src/test/java/features/ShouldSupportExternalProjects.java | 3 ++- .../src/test/java/features/ShouldTellWhatBrokeTheBuild.java | 3 ++- 10 files changed, 19 insertions(+), 10 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java index 3e6973393..877bf505a 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/process/JenkinsProcess.java @@ -126,7 +126,7 @@ private Process start(ProcessBuilder jenkinsProcessBuilder) throws IOException { private List windowsOrUnix(Path command) { return OS.contains("win") ? asList("cmd.exe", "/C", command.toString()) - : asList(command.toString()); + : Collections.singletonList(command.toString()); } public JenkinsLogWatcher getJenkinsLogWatcher() { diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java index 99d5918cc..4efb91bbb 100644 --- a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java +++ b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class BuildMonitorShouldBeEasyToSetUp extends BuilMonitorAcceptanceTest { @@ -33,7 +34,7 @@ public BuildMonitorShouldBeEasyToSetUp(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(); + return Collections.emptyList(); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java index 2b1202110..3e938ca5a 100644 --- a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java +++ b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ProjectStatusShouldBeEasyToDetermine extends BuilMonitorAcceptanceTest { @@ -32,7 +33,7 @@ public ProjectStatusShouldBeEasyToDetermine(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(); + return Collections.emptyList(); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java index c42b09506..763db26e3 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldDescribeEachProject extends BuilMonitorAcceptanceTest { @@ -34,7 +35,7 @@ public ShouldDescribeEachProject(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("description-setter")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("description-setter")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index 255d6dd41..ab4dbc69e 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldDisplayBadges extends BuilMonitorAcceptanceTest { @@ -38,7 +39,7 @@ public ShouldDisplayBadges(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java index 3907ac836..1d8423314 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldDisplayConcurrentBuilds extends BuilMonitorAcceptanceTest { @@ -35,7 +36,7 @@ public ShouldDisplayConcurrentBuilds(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("description-setter")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("description-setter")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java index 23fee4a3d..4517e0215 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldDisplayPipelineStage extends BuilMonitorAcceptanceTest { @@ -32,7 +33,7 @@ public ShouldDisplayPipelineStage(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("workflow-aggregator")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("workflow-aggregator")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java index b17ad7e13..1280b729a 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldSupportCloudBeesFolders extends BuilMonitorAcceptanceTest { @@ -33,7 +34,7 @@ public ShouldSupportCloudBeesFolders(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("cloudbees-folder")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("cloudbees-folder")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java index 1f8c864e7..51f079ffe 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldSupportExternalProjects extends BuilMonitorAcceptanceTest { @@ -33,7 +34,7 @@ public ShouldSupportExternalProjects(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("external-monitor-job")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("external-monitor-job")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java index 095de3291..4607a91da 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldTellWhatBrokeTheBuild extends BuilMonitorAcceptanceTest { @@ -31,7 +32,7 @@ public ShouldTellWhatBrokeTheBuild(String jenkinsVersion) { } protected List> jenkinsAfterStartRules() { - return Arrays.asList(InstallPlugins.fromUpdateCenter("cloudbees-folder", "build-failure-analyzer")); + return Collections.singletonList(InstallPlugins.fromUpdateCenter("cloudbees-folder", "build-failure-analyzer")); } @TestData From dcf7ebf9e4d8bb76079957f442ae5463c6aa9292 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 10:58:46 -0800 Subject: [PATCH 086/152] Arrays of wisdom of the ancients --- .../serenitybdd/integration/jenkins/client/JenkinsClient.java | 2 +- .../screenplay/jenkins/tasks/configuration/TodoList.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java index 3050d0be7..631035b32 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/client/JenkinsClient.java @@ -171,7 +171,7 @@ private int executeCommand(String... args) { List cliArgs = new ArrayList<>(Arrays.asList("-s", jenkinsUrl.toString(), "-http")); cliArgs.addAll(Arrays.asList(args)); - return CLI._main(cliArgs.toArray(new String[cliArgs.size()])); + return CLI._main(cliArgs.toArray(new String[0])); } catch (Exception e) { throw new RuntimeException(String.format("Couldn't connect to Jenkins at '%s'", jenkinsUrl), e); } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java index e5f832f3f..bacb06fcc 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/TodoList.java @@ -39,7 +39,7 @@ public void performAs(T actor) { } private Performable[] perform(List todos) { - return todos.toArray(new Performable[todos.size()]); + return todos.toArray(new Performable[0]); } private final List todos = new ArrayList<>(); From 4c68818b0056bafd18f13edb681bf6d50492754e Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 11:02:24 -0800 Subject: [PATCH 087/152] Remove more unused imports --- .../src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java | 1 - .../test/java/features/ProjectStatusShouldBeEasyToDetermine.java | 1 - .../src/test/java/features/ShouldDescribeEachProject.java | 1 - .../src/test/java/features/ShouldDisplayBadges.java | 1 - .../src/test/java/features/ShouldDisplayConcurrentBuilds.java | 1 - .../src/test/java/features/ShouldDisplayPipelineStage.java | 1 - .../src/test/java/features/ShouldSupportCloudBeesFolders.java | 1 - .../src/test/java/features/ShouldSupportExternalProjects.java | 1 - .../src/test/java/features/ShouldTellWhatBrokeTheBuild.java | 1 - .../jenkinsci/plugins/buildmonitor/BuildMonitorView.java | 1 - 10 files changed, 10 deletions(-) diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java index 4efb91bbb..b05222546 100644 --- a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java +++ b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java @@ -20,7 +20,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.when; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java index 3e938ca5a..287ad04e7 100644 --- a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java +++ b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java @@ -19,7 +19,6 @@ import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Successful; import static net.serenitybdd.screenplay.GivenWhenThen.*; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java index 763db26e3..33acba26f 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java @@ -21,7 +21,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.is; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index ab4dbc69e..a185a6117 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -25,7 +25,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.when; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java index 1d8423314..d0fb00796 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java @@ -21,7 +21,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.is; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java index 4517e0215..0bb3b9b5d 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java @@ -19,7 +19,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.containsString; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java index 1280b729a..58147aee2 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java @@ -20,7 +20,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isVisible; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java index 51f079ffe..fd79253df 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java @@ -20,7 +20,6 @@ import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Successful; import static net.serenitybdd.screenplay.GivenWhenThen.*; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java index 4607a91da..e9e95870d 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java @@ -18,7 +18,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.Matchers.containsString; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java index c0d565dc0..c6fa6b577 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java @@ -40,7 +40,6 @@ import javax.servlet.ServletException; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; import java.util.List; From c899382a015c87dafbde6bd254f10b2eb44ae320 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Mon, 22 Nov 2021 11:02:58 -0800 Subject: [PATCH 088/152] Remove redundant toString() call --- .../plugins/buildmonitor/viewmodel/JobViewSerialiser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java index f686fdfd0..f41a5049e 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViewSerialiser.java @@ -34,7 +34,7 @@ public void serialize(JobView job, JsonGenerator jgen, SerializerProvider provid private String nameOf(Object serialised) { // http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/beans/Introspector.java#265 - char[] chars = serialised.getClass().getSimpleName().toString().toCharArray(); + char[] chars = serialised.getClass().getSimpleName().toCharArray(); chars[0] = Character.toLowerCase(chars[0]); return new String(chars); From 203c54913de4762f85b5b39c460ddbfcbff4ca35 Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Tue, 23 Nov 2021 19:43:14 -0500 Subject: [PATCH 089/152] Improve acceptance tests speed (#516) skip downloading jenkins plugins in cache when tests are skipped, keep the cache between builds Co-authored-by: Basil Crow --- .github/workflows/main.yaml | 8 +++ .gitignore | 1 + build-monitor-acceptance/pom.xml | 69 +++++++++++++++++++ .../environment/rules/InstallPlugins.java | 4 ++ .../rules/InstallPluginsFromDisk.java | 57 +++++++++++++-- .../build_steps/GroovyScriptThat.java | 2 +- .../features/BuilMonitorAcceptanceTest.java | 20 +++++- .../BuildMonitorShouldBeEasyToSetUp.java | 8 --- .../ProjectStatusShouldBeEasyToDetermine.java | 8 --- .../features/ShouldDescribeEachProject.java | 4 +- .../java/features/ShouldDisplayBadges.java | 4 +- .../ShouldDisplayConcurrentBuilds.java | 4 +- .../features/ShouldDisplayPipelineStage.java | 4 +- .../ShouldSupportCloudBeesFolders.java | 4 +- .../ShouldSupportExternalProjects.java | 4 +- .../features/ShouldTellWhatBrokeTheBuild.java | 4 +- .../ShouldTellWhoIsFixingTheBrokenBuild.java | 8 ++- .../src/test/resources/serenity.conf | 2 +- 18 files changed, 174 insertions(+), 41 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ddb8bd91d..eabb1a693 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -25,6 +25,14 @@ jobs: distribution: 'adopt' cache: 'maven' + - name: Cache jenkins plugins + uses: actions/cache@v2 + with: + path: build-monitor-acceptance/plugin_cache + key: jenkins-plugins-${{ hashFiles('build-monitor-acceptance/pom.xml') }} + restore-keys: | + jenkins-plugins- + - name: Setup git (master only) uses: ./.github/actions/setup-git if: github.ref == 'refs/heads/master' diff --git a/.gitignore b/.gitignore index 1c7574520..0567857f1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ work node node_modules +plugin_cache use-node .DS_Store diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index 2dd943320..d77e71a39 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -26,6 +26,7 @@ chrome + ${project.basedir}/plugin_cache @@ -228,6 +229,73 @@ + + org.codehaus.gmaven + groovy-maven-plugin + 2.1.1 + + + download-jenkins-plugins + pre-integration-test + + execute + + + + + + + description-setter,workflow-aggregator,badge,cloudbees-folder,external-monitor-job,build-failure-analyzer,claim + ${jenkins.version},${jenkins.latest.version} + ${plugins.cache} + ${settings.localRepository} + ${skipTests} + ${skipITs} + + + + + + + org.codehaus.groovy + groovy-all + 2.4.21 + + + io.jenkins.plugin-management + plugin-management-cli + 2.11.1 + + + maven-failsafe-plugin @@ -249,6 +317,7 @@ htmlunit ${jenkins.version},${jenkins.latest.version} ../build-monitor-plugin/target + ${plugins.cache} false 2 diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java index 66b634eba..5b2eb7259 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPlugins.java @@ -7,6 +7,10 @@ public static InstallPluginsFromDisk fromDisk(Path... locations) { return new InstallPluginsFromDisk(locations); } + public static InstallPluginsFromDisk fromCache(Path pluginCache, String... pluginIDs) { + return new InstallPluginsFromDisk(pluginCache, pluginIDs); + } + public static InstallPluginsFromUpdateCenter fromUpdateCenter(String... pluginIDs) { return new InstallPluginsFromUpdateCenter(pluginIDs); } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java index 4bebb0cd8..e0a89a705 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/integration/jenkins/environment/rules/InstallPluginsFromDisk.java @@ -10,6 +10,8 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -18,27 +20,46 @@ public class InstallPluginsFromDisk implements ApplicativeTestRule { private static final Logger Log = LoggerFactory.getLogger(InstallPluginsFromDisk.class); + private final Path pluginsCache; + private final List pluginIDs; private final List pluginsToInstall; public InstallPluginsFromDisk(Path... pluginsToInstall) { + this.pluginsCache = null; + this.pluginIDs = asList(); this.pluginsToInstall = asList(pluginsToInstall); } + public InstallPluginsFromDisk(Path pluginsCache, String... pluginIDs) { + this.pluginsCache = pluginsCache; + this.pluginIDs = asList(pluginIDs); + this.pluginsToInstall = asList(); + } + @Override public TestRule applyTo(final JenkinsInstance jenkins) { return new TestWatcher() { @Override protected void starting(Description description) { Path pluginsDir = jenkins.home().resolve("plugins"); - String plugins = pluginsToInstall.stream().map(Object::toString).collect(Collectors.joining(", ")); + List plugins; + if (pluginsCache == null) { + Log.info("Installing {} into {}", pluginsToInstall.stream().map(Object::toString).collect(Collectors.joining(", ")), pluginsDir); + plugins = pluginsToInstall; + } else { + Log.info("Installing plugins {} into {}", pluginIDs, pluginsDir); + plugins = getPluginsFromCache(); + } - Log.info("Installing {} into {}", plugins, pluginsDir); + copyPlugins(plugins, pluginsDir); + } + protected void copyPlugins(List plugins, Path pluginsDir) { try { - Files.createDirectories(jenkins.home().resolve("plugins")); + Files.createDirectories(pluginsDir); - for (Path plugin : pluginsToInstall) { - Files.copy(existing(plugin), pluginsDir.resolve(plugin.getFileName())); + for (Path plugin : plugins) { + Files.copy(existing(plugin), pluginsDir.resolve(plugin.getFileName()), StandardCopyOption.REPLACE_EXISTING); } } catch (IOException e) { throw new RuntimeException(String.format("Couldn't install '%s' under '%s'", plugins, pluginsDir.toAbsolutePath())); @@ -52,6 +73,32 @@ private Path existing(Path plugin) { return plugin; } + + private List getPluginsFromCache() { + List plugins = new ArrayList<>(); + + Path jenkinsVersionPluginCache = pluginsCache.resolve(System.getProperty("jenkins.version")); + + for (String pluginDir : pluginIDs) { + plugins.addAll(getDirectoryPlugins(jenkinsVersionPluginCache.resolve(pluginDir))); + } + + return plugins; + } + + private List getDirectoryPlugins(Path location) { + List plugins = new ArrayList<>(); + + String[] files = location.toFile().list((dir, name) -> name.endsWith(".jpi") || name.endsWith(".hpi")); + + if (files != null ) { + for (String file : files ) { + plugins.add(location.resolve(file)); + } + } + + return plugins; + } }; } } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java index 930fea8f3..72e46eb17 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/tasks/configuration/build_steps/GroovyScriptThat.java @@ -2,5 +2,5 @@ public class GroovyScriptThat { public static final GroovyScript Adds_A_Badge = GroovyScript.that("Adds a badge") - .definedAs("manager.addShortText('Coverage', 'black', 'repeating-linear-gradient(45deg, yellow, yellow 10px, Orange 10px, Orange 20px)', '0px', 'white')"); + .definedAs("addShortText(text:'Coverage', color:'black', background:'repeating-linear-gradient(45deg, yellow, yellow 10px, Orange 10px, Orange 20px)', border: 0, borderColor:'white')"); } \ No newline at end of file diff --git a/build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java b/build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java index 1da5aee9c..b0027813e 100644 --- a/build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java +++ b/build-monitor-acceptance/src/test/java/features/BuilMonitorAcceptanceTest.java @@ -10,8 +10,11 @@ import org.junit.runner.RunWith; import org.openqa.selenium.WebDriver; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @RunWith(SerenityParameterizedRunner.class) @@ -19,9 +22,18 @@ public abstract class BuilMonitorAcceptanceTest { @Managed public WebDriver browser; - @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart(jenkinsAfterStartRules()).create(); + @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure() + .beforeStart(jenkinsBeforeStartRules()) + .afterStart(jenkinsAfterStartRules()) + .create(); - protected abstract List> jenkinsAfterStartRules(); + protected List> jenkinsBeforeStartRules() { + return Collections.emptyList(); + } + + protected List> jenkinsAfterStartRules() { + return Collections.emptyList(); + } public static Collection testData(){ @@ -38,4 +50,8 @@ public static Collection testData(){ protected BuilMonitorAcceptanceTest(String jenkinsVersion) { System.setProperty("jenkins.version", jenkinsVersion); } + + protected Path getpluginsCache() { + return Paths.get(System.getenv("PLUGINS_CACHE")); + } } diff --git a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java index b05222546..47220186f 100644 --- a/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java +++ b/build-monitor-acceptance/src/test/java/features/BuildMonitorShouldBeEasyToSetUp.java @@ -2,8 +2,6 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import net.serenitybdd.integration.jenkins.JenkinsInstance; -import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAProjectCreated; @@ -21,8 +19,6 @@ import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; import java.util.Collection; -import java.util.Collections; -import java.util.List; public class BuildMonitorShouldBeEasyToSetUp extends BuilMonitorAcceptanceTest { @@ -32,10 +28,6 @@ public BuildMonitorShouldBeEasyToSetUp(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.emptyList(); - } - @TestData public static Collection testData(){ return BuilMonitorAcceptanceTest.testData(); diff --git a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java index 287ad04e7..ecf95a829 100644 --- a/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java +++ b/build-monitor-acceptance/src/test/java/features/ProjectStatusShouldBeEasyToDetermine.java @@ -2,8 +2,6 @@ import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; -import net.serenitybdd.integration.jenkins.JenkinsInstance; -import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAFailingProjectCreated; @@ -20,8 +18,6 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import java.util.Collection; -import java.util.Collections; -import java.util.List; public class ProjectStatusShouldBeEasyToDetermine extends BuilMonitorAcceptanceTest { @@ -31,10 +27,6 @@ public ProjectStatusShouldBeEasyToDetermine(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.emptyList(); - } - @TestData public static Collection testData(){ return BuilMonitorAcceptanceTest.testData(); diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java index 33acba26f..402b5cca3 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDescribeEachProject.java @@ -33,8 +33,8 @@ public ShouldDescribeEachProject(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("description-setter")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "workflow-aggregator", "description-setter")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index a185a6117..a868c24e9 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -37,8 +37,8 @@ public ShouldDisplayBadges(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("workflow-aggregator", "buildtriggerbadge", "badge", "groovy-postbuild")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "workflow-aggregator", "badge")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java index d0fb00796..b8434fede 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayConcurrentBuilds.java @@ -34,8 +34,8 @@ public ShouldDisplayConcurrentBuilds(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("description-setter")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "workflow-aggregator", "description-setter")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java index 0bb3b9b5d..7004a756a 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayPipelineStage.java @@ -31,8 +31,8 @@ public ShouldDisplayPipelineStage(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("workflow-aggregator")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "workflow-aggregator")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java index 58147aee2..cdf0bbee2 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportCloudBeesFolders.java @@ -32,8 +32,8 @@ public ShouldSupportCloudBeesFolders(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("cloudbees-folder")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "cloudbees-folder")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java index fd79253df..1a203a45f 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldSupportExternalProjects.java @@ -32,8 +32,8 @@ public ShouldSupportExternalProjects(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("external-monitor-job")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "external-monitor-job")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java index e9e95870d..24d6c9b14 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhatBrokeTheBuild.java @@ -30,8 +30,8 @@ public ShouldTellWhatBrokeTheBuild(String jenkinsVersion) { super(jenkinsVersion); } - protected List> jenkinsAfterStartRules() { - return Collections.singletonList(InstallPlugins.fromUpdateCenter("cloudbees-folder", "build-failure-analyzer")); + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "workflow-aggregator", "cloudbees-folder", "build-failure-analyzer")); } @TestData diff --git a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java index b3c048bba..8ad3032c2 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldTellWhoIsFixingTheBrokenBuild.java @@ -23,8 +23,8 @@ import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.core.Is.is; -import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class ShouldTellWhoIsFixingTheBrokenBuild extends BuilMonitorAcceptanceTest { @@ -35,9 +35,13 @@ public ShouldTellWhoIsFixingTheBrokenBuild(String jenkinsVersion) { super(jenkinsVersion); } + protected List> jenkinsBeforeStartRules() { + return Collections.singletonList(InstallPlugins.fromCache(getpluginsCache(), "claim")); + } + protected List> jenkinsAfterStartRules() { ben = JenkinsUser.named("Ben"); - return Arrays.asList(InstallPlugins.fromUpdateCenter("claim"), RegisterUserAccount.of(ben)); + return Collections.singletonList(RegisterUserAccount.of(ben)); } @TestData diff --git a/build-monitor-acceptance/src/test/resources/serenity.conf b/build-monitor-acceptance/src/test/resources/serenity.conf index 433213d7f..0a1cb561e 100644 --- a/build-monitor-acceptance/src/test/resources/serenity.conf +++ b/build-monitor-acceptance/src/test/resources/serenity.conf @@ -15,7 +15,7 @@ browserstack { serenity { project.name = "Build Monitor for Jenkins" - take.screenshots = AFTER_EACH_STEP + take.screenshots = FOR_FAILURES test.root = "features" tag.failures = "true" linked.tags = "issue" From 306e76f68e5da5eb8f51cc62c17f4a9248b9bdbe Mon Sep 17 00:00:00 2001 From: Daniel Beland Date: Wed, 24 Nov 2021 22:35:23 -0500 Subject: [PATCH 090/152] Badge settings (#372) --- build-monitor-acceptance/pom.xml | 2 +- .../tasks/configuration/DisplayBadges.java | 39 ++++++++++++ .../configuration/DisplayBadgesFrom.java | 35 +++++++++++ .../configuration/DisplayNestedProjects.java | 2 - .../user_interface/ViewConfigurationPage.java | 6 +- .../screenplayx/actions/ScrollToTarget.java | 46 +++++++++++--- .../java/features/ShouldDisplayBadges.java | 63 +++++++++++++++++-- .../buildmonitor/BuildMonitorView.java | 25 ++++++++ .../plugins/buildmonitor/Config.java | 26 +++++++- .../buildmonitor/build/GetBuildViewModel.java | 9 +++ .../buildmonitor/build/GetLastBuild.java | 13 ++++ .../build/GetLastCompletedBuild.java | 13 ++++ .../buildmonitor/viewmodel/JobViews.java | 8 ++- .../features/HasBadgesBadgePlugin.java | 8 ++- .../viewmodel/features/HasConfig.java | 37 +++++++++++ .../BuildMonitorView/configure-entries.jelly | 15 +++++ .../BuildMonitorView/help-displayBadges.html | 11 ++++ .../help-displayBadgesFrom.html | 10 +++ .../BuildMonitorView/widgets.jelly | 2 +- .../features/HasBadgesBadgePluginTest.java | 29 ++++++--- .../syntacticsugar/BuildStateRecipe.java | 2 +- .../syntacticsugar/ConfigStateRecipe.java | 9 ++- .../viewmodel/syntacticsugar/Sugar.java | 13 ++++ 23 files changed, 389 insertions(+), 34 deletions(-) create mode 100644 build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadges.java create mode 100644 build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadgesFrom.java create mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetBuildViewModel.java create mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastBuild.java create mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastCompletedBuild.java create mode 100644 build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasConfig.java create mode 100644 build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-displayBadges.html create mode 100644 build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-displayBadgesFrom.html diff --git a/build-monitor-acceptance/pom.xml b/build-monitor-acceptance/pom.xml index d77e71a39..687d7dda4 100644 --- a/build-monitor-acceptance/pom.xml +++ b/build-monitor-acceptance/pom.xml @@ -322,7 +322,7 @@ 2 false - ${surefire.rerunFailingTestsCount} + 2 false ${jenkins.version} diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadges.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadges.java new file mode 100644 index 000000000..4056cb66e --- /dev/null +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadges.java @@ -0,0 +1,39 @@ +package com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration; + +import net.serenitybdd.screenplay.Actor; +import net.serenitybdd.screenplay.Task; +import net.serenitybdd.screenplay.actions.SelectFromOptions; +import net.serenitybdd.screenplay.jenkins.user_interface.ViewConfigurationPage; +import net.serenitybdd.screenplayx.actions.Scroll; +import net.thucydides.core.annotations.Step; + +import static net.serenitybdd.screenplay.Tasks.instrumented; + +public class DisplayBadges implements Task { + public static DisplayBadges asAUserSetting() { + return instrumented(DisplayBadges.class, "User Setting"); + } + + public static DisplayBadges always() { + return instrumented(DisplayBadges.class, "Always"); + } + + public static DisplayBadges never() { + return instrumented(DisplayBadges.class, "Never"); + } + + @Step("{0} selects #text as the option to display badges") + @Override + public void performAs(T actor) { + actor.attemptsTo( + Scroll.to(ViewConfigurationPage.Display_Badges), + SelectFromOptions.byVisibleText(text).from(ViewConfigurationPage.Display_Badges) + ); + } + + public DisplayBadges(String text) { + this.text = text; + } + + private final String text; +} diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadgesFrom.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadgesFrom.java new file mode 100644 index 000000000..8d3d35b35 --- /dev/null +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayBadgesFrom.java @@ -0,0 +1,35 @@ +package com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration; + +import net.serenitybdd.screenplay.Actor; +import net.serenitybdd.screenplay.Task; +import net.serenitybdd.screenplay.actions.SelectFromOptions; +import net.serenitybdd.screenplay.jenkins.user_interface.ViewConfigurationPage; +import net.serenitybdd.screenplayx.actions.Scroll; +import net.thucydides.core.annotations.Step; + +import static net.serenitybdd.screenplay.Tasks.instrumented; + +public class DisplayBadgesFrom implements Task { + public static DisplayBadgesFrom theLastBuild() { + return instrumented(DisplayBadgesFrom.class, "Last Build"); + } + + public static DisplayBadgesFrom theLastCompletedBuild() { + return instrumented(DisplayBadgesFrom.class, "Last Completed Build"); + } + + @Step("{0} selects to display badges from #text") + @Override + public void performAs(T actor) { + actor.attemptsTo( + Scroll.to(ViewConfigurationPage.Display_Badges_From), + SelectFromOptions.byVisibleText(text).from(ViewConfigurationPage.Display_Badges_From) + ); + } + + public DisplayBadgesFrom(String text) { + this.text = text; + } + + private final String text; +} diff --git a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java index b45e643d7..74b7283cd 100644 --- a/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java +++ b/build-monitor-acceptance/src/main/java/com/smartcodeltd/jenkinsci/plugins/build_monitor/tasks/configuration/DisplayNestedProjects.java @@ -19,8 +19,6 @@ public static Task fromSubfolders() { public void performAs(T actor) { actor.attemptsTo( Scroll.to(ViewConfigurationPage.Recurse_In_Subfolders), - // In case we scroll up and field is under the breadcrumb overlay - Scroll.to(ViewConfigurationPage.Status_Filter), Choose.the(ViewConfigurationPage.Recurse_In_Subfolders) ); } diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java index d34f5ea1f..4a0e8d1af 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplay/jenkins/user_interface/ViewConfigurationPage.java @@ -6,8 +6,10 @@ import net.serenitybdd.screenplay.targets.Target; public class ViewConfigurationPage { - public static final Target Status_Filter = Setting.defining("Status Filter"); - public static final Target Recurse_In_Subfolders = Target.the("the 'Recurse in subfolders' option").locatedBy("#recurse"); + public static final Target Status_Filter = Setting.defining("Status Filter"); + public static final Target Recurse_In_Subfolders = Target.the("the 'Recurse in subfolders' option").locatedBy("#recurse"); public static final Target Use_Regular_Expression = Checkbox.withLabel("Use a regular expression to include jobs into the view"); public static final Target Regular_Expression = Target.the("the 'Regular expression' field").located(By.name("includeRegex")); + public static final Target Display_Badges = Target.the("the 'Display badges' field").located(By.name("displayBadges")); + public static final Target Display_Badges_From = Target.the("the 'Display badges from' field").located(By.name("displayBadgesFrom")); } \ No newline at end of file diff --git a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java index 9795be67d..9c819fc3e 100644 --- a/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java +++ b/build-monitor-acceptance/src/main/java/net/serenitybdd/screenplayx/actions/ScrollToTarget.java @@ -3,35 +3,67 @@ import net.serenitybdd.screenplay.Action; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.targets.Target; + +import java.util.HashMap; +import java.util.Map; + import org.openqa.selenium.WebElement; public class ScrollToTarget implements Action { + + private static final Map centerAlignOptions; + + static { + centerAlignOptions = new HashMap<>(); + centerAlignOptions.put("behavior", "auto"); + centerAlignOptions.put("block", "center"); + centerAlignOptions.put("inline", "center"); + } + private final Target target; - private boolean alignToTop = true; + private String alignTo = "middle"; public ScrollToTarget(Target target) { this.target = target; } public ScrollToTarget andAlignToTop() { - this.alignToTop = true; + this.alignTo = "top"; return this; } public ScrollToTarget andAlignToBottom() { - this.alignToTop = false; + this.alignTo = "bottom"; + + return this; + } + + public ScrollToTarget andAlignInMiddle() { + this.alignTo = "middle"; return this; } public void performAs(T actor) { - actor.attemptsTo( - scrollTo(target.resolveFor(actor), alignToTop) + actor.attemptsTo(scrollTo(target.resolveFor(actor), alignTo) ); } - private Evaluate scrollTo(WebElement element, boolean alignToTop) { - return Evaluate.javascript("arguments[0].scrollIntoView(arguments[1]);", element, alignToTop); + private Evaluate scrollTo(WebElement element, String alignTo) { + Object args; + switch (alignTo) { + case "top": + args = Boolean.TRUE; + break; + case "bottom": + args = Boolean.FALSE; + break; + default: + args = centerAlignOptions; + break; + } + + return Evaluate.javascript("arguments[0].scrollIntoView(arguments[1]);", element, args); } } diff --git a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java index a868c24e9..1b43d3168 100644 --- a/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java +++ b/build-monitor-acceptance/src/test/java/features/ShouldDisplayBadges.java @@ -1,9 +1,12 @@ package features; import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; -import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; +import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.CreateABuildMonitorView; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.ModifyControlPanelOptions; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.ShowBadges; +import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration.DisplayAllProjects; +import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration.DisplayBadges; +import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.configuration.DisplayBadgesFrom; import net.serenitybdd.integration.jenkins.JenkinsInstance; import net.serenitybdd.integration.jenkins.environment.rules.ApplicativeTestRule; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; @@ -11,7 +14,6 @@ import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.HaveAPipelineProjectCreated; import net.serenitybdd.screenplay.jenkins.tasks.ScheduleABuild; -import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.GroovyScriptThat; import net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.SetPipelineDefinition; import net.serenitybdd.screenplayx.actions.Navigate; import net.thucydides.junit.annotations.TestData; @@ -23,7 +25,9 @@ import static net.serenitybdd.screenplay.GivenWhenThen.seeThat; import static net.serenitybdd.screenplay.GivenWhenThen.then; import static net.serenitybdd.screenplay.GivenWhenThen.when; +import static net.serenitybdd.screenplay.jenkins.tasks.configuration.build_steps.GroovyScriptThat.Adds_A_Badge; import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isCurrentlyVisible; +import static net.serenitybdd.screenplay.matchers.WebElementStateMatchers.isNotCurrentlyVisible; import java.util.Collection; import java.util.Collections; @@ -52,21 +56,68 @@ public void actorCanBrowseTheWeb() { } @Test - public void displaying_build_badges() { + public void user_displaying_build_badges() { givenThat(paul).wasAbleTo( Navigate.to(jenkins.url()), HaveAPipelineProjectCreated.called("My App").andConfiguredTo( - SetPipelineDefinition.asFollows(GroovyScriptThat.Adds_A_Badge.code()) + SetPipelineDefinition.asFollows(Adds_A_Badge.code()) ), ScheduleABuild.of("My App"), - HaveABuildMonitorViewCreated.showingAllTheProjects() + CreateABuildMonitorView.called("Build Monitor").andConfigureItTo( + DisplayAllProjects.usingARegularExpression(), + DisplayBadges.asAUserSetting(), + DisplayBadgesFrom.theLastBuild() + ) ); when(paul).attemptsTo(ModifyControlPanelOptions.to(ShowBadges.onTheDashboard())); then(paul).should(seeThat(ProjectWidget.of("My App").badges(), - isCurrentlyVisible() + isCurrentlyVisible() + )); + } + + @Test + public void always_displaying_build_badges() { + givenThat(paul).wasAbleTo( + Navigate.to(jenkins.url()), + HaveAPipelineProjectCreated.called("My App").andConfiguredTo( + SetPipelineDefinition.asFollows(Adds_A_Badge.code()) + ), + ScheduleABuild.of("My App") + ); + + when(paul).attemptsTo(CreateABuildMonitorView.called("Build Monitor").andConfigureItTo( + DisplayAllProjects.usingARegularExpression(), + DisplayBadges.always(), + DisplayBadgesFrom.theLastBuild() + )); + + then(paul).should(seeThat(ProjectWidget.of("My App").badges(), + isCurrentlyVisible() + )); + } + + @Test + public void never_displaying_build_badges() { + givenThat(paul).wasAbleTo( + Navigate.to(jenkins.url()), + HaveAPipelineProjectCreated.called("My App").andConfiguredTo( + SetPipelineDefinition.asFollows(Adds_A_Badge.code()) + ), + ScheduleABuild.of("My App"), + CreateABuildMonitorView.called("Build Monitor").andConfigureItTo( + DisplayAllProjects.usingARegularExpression(), + DisplayBadges.never(), + DisplayBadgesFrom.theLastBuild() + ) + ); + + when(paul).attemptsTo(ModifyControlPanelOptions.to(ShowBadges.onTheDashboard())); + + then(paul).should(seeThat(ProjectWidget.of("My App").badges(), + isNotCurrentlyVisible() )); } } diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java index c6fa6b577..f2acbedae 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java @@ -24,6 +24,7 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.api.Respond; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.build.GetBuildViewModel; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.installation.BuildMonitorInstallation; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; @@ -95,6 +96,16 @@ public boolean isDisplayCommitters() { return currentConfig().shouldDisplayCommitters(); } + @SuppressWarnings("unused") // used in the configure-entries.jelly form + public String currentDisplayBadges() { + return currentConfig().getDisplayBadges().name(); + } + + @SuppressWarnings("unused") // used in the configure-entries.jelly form + public String currentDisplayBadgesFrom() { + return currentConfig().getDisplayBadgesFrom().getClass().getSimpleName(); + } + private static final BuildMonitorInstallation installation = new BuildMonitorInstallation(); @SuppressWarnings("unused") // used in index.jelly @@ -120,8 +131,10 @@ protected void submit(StaplerRequest req) throws ServletException, IOException, synchronized (this) { String requestedOrdering = req.getParameter("order"); + String displayBadgesFrom = req.getParameter("displayBadgesFrom"); title = req.getParameter("title"); + currentConfig().setDisplayBadges(req.getParameter("displayBadges")); currentConfig().setDisplayCommitters(json.optBoolean("displayCommitters", true)); currentConfig().setBuildFailureAnalyzerDisplayedField(req.getParameter("buildFailureAnalyzerDisplayedField")); @@ -130,6 +143,12 @@ protected void submit(StaplerRequest req) throws ServletException, IOException, } catch (Exception e) { throw new FormException("Can't order projects by " + requestedOrdering, "order"); } + + try { + currentConfig().setDisplayBadgesFrom(getBuildViewModelIn(displayBadgesFrom)); + } catch (Exception e) { + throw new FormException("Can't display badges from " + displayBadgesFrom, "displayBadgesFrom"); + } } } @@ -212,6 +231,12 @@ private void migrateFromOldToNewConfigFormat() { return (Comparator>) Class.forName(packageName + requestedOrdering).newInstance(); } + private GetBuildViewModel getBuildViewModelIn(String requestedBuild) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + String packageName = this.getClass().getPackage().getName() + ".build."; + + return (GetBuildViewModel) Class.forName(packageName + requestedBuild).newInstance(); + } + private Config config; @Deprecated // use Config instead diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java index c11581cec..1240f9b05 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java @@ -1,6 +1,8 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.order.ByName; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.build.GetBuildViewModel; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.build.GetLastBuild; import hudson.model.Job; import java.util.Comparator; @@ -9,6 +11,8 @@ public class Config { private boolean displayCommitters; + private DisplayOptions displayBadges; + private GetBuildViewModel displayBadgesFrom; private BuildFailureAnalyzerDisplayedField buildFailureAnalyzerDisplayedField; public static Config defaultConfig() { @@ -47,6 +51,22 @@ public void setDisplayCommitters(boolean flag) { this.displayCommitters = flag; } + public DisplayOptions getDisplayBadges() { + return Optional.ofNullable(displayBadges).orElse(DisplayOptions.UserSetting); + } + + public void setDisplayBadges(String option) { + this.displayBadges = DisplayOptions.valueOf(option); + } + + public GetBuildViewModel getDisplayBadgesFrom() { + return Optional.ofNullable(displayBadgesFrom).orElse(new GetLastBuild()); + } + + public void setDisplayBadgesFrom(GetBuildViewModel displayBadgesFrom) { + this.displayBadgesFrom = displayBadgesFrom; + } + @Override public String toString() { return String.format("Config{order=%s}", order.getClass().getSimpleName()); @@ -70,5 +90,9 @@ public enum BuildFailureAnalyzerDisplayedField { public String toString() { return value; } } + public enum DisplayOptions { + Always, Never, UserSetting; + } + private Comparator> order; -} \ No newline at end of file +} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetBuildViewModel.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetBuildViewModel.java new file mode 100644 index 000000000..576d35079 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetBuildViewModel.java @@ -0,0 +1,9 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.build; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; + +public interface GetBuildViewModel { + + BuildViewModel from(JobView job); +} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastBuild.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastBuild.java new file mode 100644 index 000000000..4a4e92523 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastBuild.java @@ -0,0 +1,13 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.build; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; + +public class GetLastBuild implements GetBuildViewModel { + + @Override + public BuildViewModel from(JobView job) { + return job.lastBuild(); + } + +} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastCompletedBuild.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastCompletedBuild.java new file mode 100644 index 000000000..8ad3eaadd --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/build/GetLastCompletedBuild.java @@ -0,0 +1,13 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.build; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; + +public class GetLastCompletedBuild implements GetBuildViewModel { + + @Override + public BuildViewModel from(JobView job) { + return job.lastCompletedBuild(); + } + +} diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java index 5b1afd379..f2ba05fa2 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java @@ -1,5 +1,6 @@ package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config.DisplayOptions; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.*; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig; @@ -30,6 +31,7 @@ public JobView viewOf(Job job) { List viewFeatures = new ArrayList<>(); // todo: a more elegant way of assembling the features would be nice + viewFeatures.add(new HasConfig(config)); viewFeatures.add(new HasHeadline(new HeadlineConfig(config.shouldDisplayCommitters()))); viewFeatures.add(new KnowsLastCompletedBuildDetails()); viewFeatures.add(new KnowsCurrentBuildsDetails()); @@ -42,8 +44,10 @@ public JobView viewOf(Job job) { viewFeatures.add(new CanBeDiagnosedForProblems(config.getBuildFailureAnalyzerDisplayedField())); } - if (jenkins.hasPlugin(Badge_Plugin)) { - viewFeatures.add(new HasBadgesBadgePlugin()); + if (config.getDisplayBadges() != DisplayOptions.Never) { + if (jenkins.hasPlugin(Badge_Plugin)) { + viewFeatures.add(new HasBadgesBadgePlugin(config)); + } } boolean isPipelineJob = jenkins.hasPlugin(Pipeline) && job instanceof WorkflowJob; diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java index c746bc325..2ac173171 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasBadgesBadgePlugin.java @@ -16,9 +16,15 @@ * @author Daniel Beland */ public class HasBadgesBadgePlugin implements Feature { + + private final com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config; private ActionFilter filter = new ActionFilter(); private JobView job; + public HasBadgesBadgePlugin(com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config) { + this.config = config; + } + @Override public HasBadgesBadgePlugin of(JobView jobView) { this.job = jobView; @@ -28,7 +34,7 @@ public HasBadgesBadgePlugin of(JobView jobView) { @Override public Badges asJson() { - Iterator badges = job.lastBuild().allDetailsOf(BadgeAction.class).stream().filter(filter).iterator(); + Iterator badges = config.getDisplayBadgesFrom().from(job).allDetailsOf(BadgeAction.class).stream().filter(filter).iterator(); return badges.hasNext() ? new Badges(badges) diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasConfig.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasConfig.java new file mode 100644 index 000000000..13fc204b2 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasConfig.java @@ -0,0 +1,37 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class HasConfig implements Feature { + private final com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config; + + public HasConfig(com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config) { + this.config = config; + } + + @Override + public HasConfig of(JobView jobView) { + return this; + } + + @Override + public Config asJson() { + return new Config(config); + } + + public static class Config { + private final com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config; + + public Config(com.smartcodeltd.jenkinsci.plugins.buildmonitor.Config config) { + this.config = config; + } + + @JsonProperty + public final String displayBadges() { + return config.getDisplayBadges().name(); + } + } + +} diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly index 3ba026a6d..1d03568dc 100644 --- a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly @@ -84,6 +84,21 @@ + + + + + + + +