From 2527e66dd8f9dd23a2571f8bd8f2918edf6fc0cd Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Wed, 25 Jan 2017 13:23:21 -0500 Subject: [PATCH 1/3] [SECURITY-382] Be more compatible with maven-plugin. --- core/src/main/java/hudson/console/ConsoleNote.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/hudson/console/ConsoleNote.java b/core/src/main/java/hudson/console/ConsoleNote.java index f44b7b6db6..d80713762f 100644 --- a/core/src/main/java/hudson/console/ConsoleNote.java +++ b/core/src/main/java/hudson/console/ConsoleNote.java @@ -191,9 +191,11 @@ public abstract class ConsoleNote implements Serializable, Describable Date: Wed, 25 Jan 2017 14:43:33 -0500 Subject: [PATCH 2/3] Rearranged tests now that ConsoleNote.encodeToBytes pays attention to Jenkins.instance. --- .../main/java/jenkins/security/ConfidentialStore.java | 6 ++---- core/src/test/java/hudson/model/TaskActionTest.java | 10 ++-------- .../java/jenkins/security/ConfidentialStoreRule.java | 7 +++++-- .../java/hudson/console/AnnotatedLargeTextTest.java | 10 +++++----- 4 files changed, 14 insertions(+), 19 deletions(-) rename {core => test}/src/test/java/hudson/console/AnnotatedLargeTextTest.java (96%) diff --git a/core/src/main/java/jenkins/security/ConfidentialStore.java b/core/src/main/java/jenkins/security/ConfidentialStore.java index 3e8e3b4b4d..9b3efdbec6 100644 --- a/core/src/main/java/jenkins/security/ConfidentialStore.java +++ b/core/src/main/java/jenkins/security/ConfidentialStore.java @@ -61,9 +61,7 @@ public abstract class ConfidentialStore { * Retrieves the currently active singleton instance of {@link ConfidentialStore}. */ public static @Nonnull ConfidentialStore get() { - if (TEST != null) { - return TEST; - } + if (TEST!=null) return TEST.get(); Jenkins j = Jenkins.getInstance(); if (j == null) { @@ -97,7 +95,7 @@ public abstract class ConfidentialStore { /** * Testing only. Used for testing {@link ConfidentialKey} without {@link Jenkins} */ - /*package*/ static ConfidentialStore TEST = null; + /*package*/ static ThreadLocal TEST = null; private static final Logger LOGGER = Logger.getLogger(ConfidentialStore.class.getName()); } diff --git a/core/src/test/java/hudson/model/TaskActionTest.java b/core/src/test/java/hudson/model/TaskActionTest.java index 8b86e0ca93..ec31498e07 100644 --- a/core/src/test/java/hudson/model/TaskActionTest.java +++ b/core/src/test/java/hudson/model/TaskActionTest.java @@ -1,16 +1,13 @@ package hudson.model; -import static org.junit.Assert.*; +import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; import hudson.console.AnnotatedLargeText; import hudson.security.ACL; import hudson.security.Permission; -import jenkins.security.ConfidentialStoreRule; import org.acegisecurity.Authentication; -import static org.hamcrest.CoreMatchers.startsWith; -import org.junit.Rule; import org.junit.Test; /** @@ -18,9 +15,6 @@ import org.junit.Test; */ public class TaskActionTest { - @Rule - public ConfidentialStoreRule confidentialStoreRule = new ConfidentialStoreRule(); - private static class MyTaskThread extends TaskThread { MyTaskThread(TaskAction taskAction) { super(taskAction, ListenerAndText.forMemory(taskAction)); @@ -69,6 +63,6 @@ public class TaskActionTest { } ByteArrayOutputStream os = new ByteArrayOutputStream(); annotatedText.writeLogTo(0, os); - assertThat(os.toString("UTF-8"), startsWith("a linkCompleted")); + assertTrue(os.toString("UTF-8").startsWith("a linkCompleted")); } } diff --git a/core/src/test/java/jenkins/security/ConfidentialStoreRule.java b/core/src/test/java/jenkins/security/ConfidentialStoreRule.java index c42c8e6b7b..db46255ba6 100644 --- a/core/src/test/java/jenkins/security/ConfidentialStoreRule.java +++ b/core/src/test/java/jenkins/security/ConfidentialStoreRule.java @@ -14,13 +14,16 @@ public class ConfidentialStoreRule extends ExternalResource { @Override protected void before() throws Throwable { tmp.create(); - ConfidentialStore.TEST = new DefaultConfidentialStore(tmp.getRoot()); + ConfidentialStore.TEST.set(new DefaultConfidentialStore(tmp.getRoot())); } @Override protected void after() { - ConfidentialStore.TEST = null; + ConfidentialStore.TEST.set(null); tmp.delete(); } + static { + ConfidentialStore.TEST = new ThreadLocal(); + } } diff --git a/core/src/test/java/hudson/console/AnnotatedLargeTextTest.java b/test/src/test/java/hudson/console/AnnotatedLargeTextTest.java similarity index 96% rename from core/src/test/java/hudson/console/AnnotatedLargeTextTest.java rename to test/src/test/java/hudson/console/AnnotatedLargeTextTest.java index 9456b1f398..0035a9c789 100644 --- a/core/src/test/java/hudson/console/AnnotatedLargeTextTest.java +++ b/test/src/test/java/hudson/console/AnnotatedLargeTextTest.java @@ -29,23 +29,23 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; import java.io.StringWriter; -import jenkins.security.ConfidentialStoreRule; import org.apache.commons.io.Charsets; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; +import org.junit.ClassRule; import org.junit.Test; -import org.junit.Rule; import org.jvnet.hudson.test.For; import org.jvnet.hudson.test.Issue; +import org.jvnet.hudson.test.JenkinsRule; import org.kohsuke.stapler.framework.io.ByteBuffer; @For({AnnotatedLargeText.class, ConsoleNote.class, ConsoleAnnotationOutputStream.class, PlainTextConsoleOutputStream.class}) public class AnnotatedLargeTextTest { - @Rule - public ConfidentialStoreRule confidentialStoreRule = new ConfidentialStoreRule(); + @ClassRule + public static JenkinsRule r = new JenkinsRule(); - /* TODO in trunk: + /* TODO in master: @Rule public LoggerRule logging = new LoggerRule().record(ConsoleAnnotationOutputStream.class, Level.FINE).capture(100); */ From 431140e62b6d62693a06dfb1e4f84268f06b30d1 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Wed, 25 Jan 2017 15:40:31 -0500 Subject: [PATCH 3/3] Using Jenkins.getInstanceOrNull. --- core/src/main/java/hudson/console/ConsoleNote.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/hudson/console/ConsoleNote.java b/core/src/main/java/hudson/console/ConsoleNote.java index 7adf858296..1bc7dae465 100644 --- a/core/src/main/java/hudson/console/ConsoleNote.java +++ b/core/src/main/java/hudson/console/ConsoleNote.java @@ -192,7 +192,7 @@ public abstract class ConsoleNote implements Serializable, Describable