From 5b9781f10796a8f3bb842540f3a0cf61a1209242 Mon Sep 17 00:00:00 2001 From: jwbrandon Date: Wed, 7 Dec 2022 16:17:54 -0500 Subject: [PATCH 1/2] fix: expand env vars & token macros in manually entered repo urls for commit status --- .../sources/ManuallyEnteredRepositorySource.java | 11 ++++++++++- .../ManuallyEnteredRepositorySourceTest.java | 13 +++++++++++++ .../status/sources/ManuallyEnteredSourcesTest.java | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java b/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java index 3493321b2..e5dcb3632 100644 --- a/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java +++ b/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java @@ -6,6 +6,7 @@ import hudson.model.Descriptor; import hudson.model.Run; import hudson.model.TaskListener; +import org.jenkinsci.plugins.github.common.ExpandableMessage; import org.jenkinsci.plugins.github.extension.status.GitHubReposSource; import org.jenkinsci.plugins.github.util.misc.NullSafeFunction; import org.kohsuke.github.GHRepository; @@ -36,7 +37,15 @@ GitHubRepositoryName createName(String url) { @Override public List repos(@NonNull Run run, @NonNull final TaskListener listener) { - List urls = Collections.singletonList(url); + String expandedUrl = url; + + try { + expandedUrl = new ExpandableMessage(context).expandAll(run, listener); + } catch (Exception e) { + LOG.debug("Can't expand context, using as is", e); + } + + List urls = Collections.singletonList(expandedUrl); return from(urls).transformAndConcat(new NullSafeFunction>() { @Override protected Iterable applyNullSafe(@NonNull String url) { diff --git a/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java b/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java index 954f9ff48..a6a03afd8 100644 --- a/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java +++ b/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java @@ -21,6 +21,8 @@ @RunWith(MockitoJUnitRunner.class) public class ManuallyEnteredRepositorySourceTest { + + public static final String EXPANDED = "expanded"; @Mock(answer = Answers.RETURNS_MOCKS) private Run run; @@ -39,4 +41,15 @@ public void nullName() { verify(listener).getLogger(); verify(logger).printf(eq("Unable to match %s with a GitHub repository.%n"), eq("a")); } + + @Test + public void shouldExpandRepositorySource() { + when(run.getEnvironment(listener)).thenReturn(env); + when(env.expand(ArgumentMatchers.anyString())).thenReturn(EXPANDED); + + List repos = new ManuallyEnteredRepositorySource("").repos(run, listener); + assertThat("size", repos.size(), 1); + assertThat("size", repos[0], EXPANDED); + } + } diff --git a/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredSourcesTest.java b/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredSourcesTest.java index 791da1f22..1ee75a717 100644 --- a/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredSourcesTest.java +++ b/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredSourcesTest.java @@ -57,4 +57,4 @@ public void shouldExpandBackref() throws Exception { String context = new ManuallyEnteredBackrefSource("").get(run, listener); assertThat(context, equalTo(EXPANDED)); } -} \ No newline at end of file +} From 830ded9c4f00a792e098eb6291bf3d728da5ab05 Mon Sep 17 00:00:00 2001 From: jwbrandon Date: Wed, 7 Dec 2022 17:06:52 -0500 Subject: [PATCH 2/2] revert un-needed change, fix compilation --- .../status/sources/ManuallyEnteredRepositorySource.java | 5 ++++- .../status/sources/ManuallyEnteredRepositorySourceTest.java | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java b/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java index e5dcb3632..0e3c1fbbd 100644 --- a/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java +++ b/src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java @@ -11,6 +11,8 @@ import org.jenkinsci.plugins.github.util.misc.NullSafeFunction; import org.kohsuke.github.GHRepository; import org.kohsuke.stapler.DataBoundConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import edu.umd.cs.findbugs.annotations.NonNull; import java.util.Collections; @@ -19,6 +21,7 @@ import static org.jenkinsci.plugins.github.util.FluentIterableWrapper.from; public class ManuallyEnteredRepositorySource extends GitHubReposSource { + private static final Logger LOG = LoggerFactory.getLogger(ManuallyEnteredRepositorySource.class); private String url; @DataBoundConstructor @@ -40,7 +43,7 @@ public List repos(@NonNull Run run, @NonNull final TaskListe String expandedUrl = url; try { - expandedUrl = new ExpandableMessage(context).expandAll(run, listener); + expandedUrl = new ExpandableMessage(url).expandAll(run, listener); } catch (Exception e) { LOG.debug("Can't expand context, using as is", e); } diff --git a/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java b/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java index a6a03afd8..6c8b210e0 100644 --- a/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java +++ b/src/test/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySourceTest.java @@ -1,5 +1,6 @@ package org.jenkinsci.plugins.github.status.sources; +import hudson.EnvVars; import hudson.model.Run; import hudson.model.TaskListener; import org.junit.Test; @@ -12,6 +13,7 @@ import java.io.PrintStream; import java.util.List; +import org.mockito.ArgumentMatchers; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; import static org.mockito.Mockito.doReturn; @@ -32,6 +34,9 @@ public class ManuallyEnteredRepositorySourceTest { @Mock(answer = Answers.RETURNS_MOCKS) private PrintStream logger; + @Mock(answer = Answers.RETURNS_MOCKS) + private EnvVars env; + @Test public void nullName() { ManuallyEnteredRepositorySource instance = spy(new ManuallyEnteredRepositorySource("a"));