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..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 @@ -6,10 +6,13 @@ 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; import org.kohsuke.stapler.DataBoundConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import edu.umd.cs.findbugs.annotations.NonNull; import java.util.Collections; @@ -18,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 @@ -36,7 +40,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(url).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..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; @@ -21,6 +23,8 @@ @RunWith(MockitoJUnitRunner.class) public class ManuallyEnteredRepositorySourceTest { + + public static final String EXPANDED = "expanded"; @Mock(answer = Answers.RETURNS_MOCKS) private Run run; @@ -30,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")); @@ -39,4 +46,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 +}