diff --git a/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeAction.java b/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeAction.java index 5d9ea1c..d95cf63 100644 --- a/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeAction.java +++ b/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeAction.java @@ -61,24 +61,27 @@ public class DeflakeAction implements Action { private static final String PLUS = "+"; private static final Function>, String> - CLASS_METHOD_MAP_TO_MAVEN_TESTS_LIST = new Function>, String>() { + CLASS_METHOD_MAP_TO_MAVEN_TESTS_LIST = new Function<>() { - @Override - @Nonnull - public String apply(@Nonnull Entry> entry) { - return entry.getKey() + SHARP + Joiner.on(PLUS).join(entry.getValue()); - } + @Override + @Nonnull + public String apply(@Nonnull Entry> entry) { + return entry.getKey() + SHARP + Joiner.on(PLUS).join(entry.getValue()); + } }; private final Map> failingClassMethodMap; - public DeflakeAction(Map> failingClassMethodMap) { + private final Run run; + + public DeflakeAction(Run run, Map> failingClassMethodMap) { + this.run = run; this.failingClassMethodMap = failingClassMethodMap; } @Override public String getIconFileName() { - if (Jenkins.get().hasPermission(Item.BUILD)) { + if (Jenkins.get().hasPermission(Item.BUILD) || run.getParent().hasPermission(Item.BUILD)) { return "clock.png"; } return null; @@ -86,7 +89,7 @@ public String getIconFileName() { @Override public String getDisplayName() { - if (Jenkins.get().hasPermission(Item.BUILD)) { + if (Jenkins.get().hasPermission(Item.BUILD) || run.getParent().hasPermission(Item.BUILD)) { return "Deflake this build"; } return null; @@ -94,7 +97,7 @@ public String getDisplayName() { @Override public String getUrlName() { - if (Jenkins.get().hasPermission(Item.BUILD)) { + if (Jenkins.get().hasPermission(Item.BUILD) || run.getParent().hasPermission(Item.BUILD)) { return "deflake"; } return null; diff --git a/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeListener.java b/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeListener.java index 0130ea1..e2765a4 100644 --- a/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeListener.java +++ b/src/main/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeListener.java @@ -65,7 +65,7 @@ public void onCompleted(Run run, TaskListener listener) { if (testResultAction != null && testResultAction.getFailCount() > 0) { // Only add deflake action if there are test failures run.addAction( - new DeflakeAction(getFailingTestClassMethodMap(testResultAction.getFailedTests()))); + new DeflakeAction(run, getFailingTestClassMethodMap(testResultAction.getFailedTests()))); } } diff --git a/src/test/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeActionTest.java b/src/test/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeActionTest.java index 8da8f12..4b0cfaa 100644 --- a/src/test/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeActionTest.java +++ b/src/test/java/com/google/jenkins/flakyTestHandler/plugin/deflake/DeflakeActionTest.java @@ -18,12 +18,14 @@ import com.google.common.collect.Sets; +import hudson.model.FreeStyleBuild; +import hudson.model.FreeStyleProject; +import org.junit.Rule; import org.junit.Test; +import org.jvnet.hudson.test.JenkinsRule; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; +import java.io.IOException; +import java.util.*; public class DeflakeActionTest { @@ -34,8 +36,11 @@ public class DeflakeActionTest { private final static String TEST_METHOD_TWO = "methodTwo"; private final static String TEST_METHOD_THREE = "methodThree"; + @Rule + public JenkinsRule jenkins = new JenkinsRule(); + @Test - public void testGenerateMavenTestParamsForSingleTest() { + public void testGenerateMavenTestParamsForSingleTest() throws IOException { Map> classMethodMap = new LinkedHashMap>(); classMethodMap.put(TEST_CLASS_TWO, Sets.newHashSet(TEST_METHOD_THREE)); testGenerateMavenTestParams(classMethodMap, "classTwo#methodThree", @@ -43,7 +48,7 @@ public void testGenerateMavenTestParamsForSingleTest() { } @Test - public void testGenerateMavenTestParamsForMultipleTests() { + public void testGenerateMavenTestParamsForMultipleTests() throws IOException { Map> classMethodMap = new LinkedHashMap>(); classMethodMap.put(TEST_CLASS_ONE, Sets.newLinkedHashSet(Arrays.asList(TEST_METHOD_ONE, TEST_METHOD_TWO))); @@ -53,8 +58,10 @@ public void testGenerateMavenTestParamsForMultipleTests() { } private void testGenerateMavenTestParams(Map> classMethodMap, - String expectedTestParam, String errorMsg) { - DeflakeAction action = new DeflakeAction(classMethodMap); + String expectedTestParam, String errorMsg) throws IOException { + FreeStyleProject project = jenkins.createFreeStyleProject("project"); + FreeStyleBuild build = new FreeStyleBuild(project); + DeflakeAction action = new DeflakeAction(build, classMethodMap); assertEquals(errorMsg, expectedTestParam, action.generateMavenTestParams()); }