Skip to content

Commit 330cdbe

Browse files
committed
Add a test when url isn't valid (repository name is null)
1 parent 1dfca4d commit 330cdbe

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

src/main/java/org/jenkinsci/plugins/github/status/sources/ManuallyEnteredRepositorySource.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jenkinsci.plugins.github.status.sources;
22

33
import com.cloudbees.jenkins.GitHubRepositoryName;
4+
import com.google.common.annotations.VisibleForTesting;
45
import hudson.Extension;
56
import hudson.model.Descriptor;
67
import hudson.model.Run;
@@ -28,13 +29,18 @@ public String getUrl() {
2829
return url;
2930
}
3031

32+
@VisibleForTesting
33+
GitHubRepositoryName createName(String url) {
34+
return GitHubRepositoryName.create(url);
35+
}
36+
3137
@Override
3238
public List<GHRepository> repos(@Nonnull Run<?, ?> run, @Nonnull final TaskListener listener) {
3339
List<String> urls = Collections.singletonList(url);
3440
return from(urls).transformAndConcat(new NullSafeFunction<String, Iterable<GHRepository>>() {
3541
@Override
3642
protected Iterable<GHRepository> applyNullSafe(@Nonnull String url) {
37-
GitHubRepositoryName name = GitHubRepositoryName.create(url);
43+
GitHubRepositoryName name = createName(url);
3844
if (name != null) {
3945
return name.resolve();
4046
} else {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.jenkinsci.plugins.github.status.sources;
2+
3+
import hudson.model.Run;
4+
import hudson.model.TaskListener;
5+
import org.junit.Test;
6+
import org.junit.runner.RunWith;
7+
import org.kohsuke.github.GHRepository;
8+
import org.mockito.Answers;
9+
import org.mockito.Matchers;
10+
import org.mockito.Mock;
11+
import org.mockito.Mockito;
12+
import org.mockito.runners.MockitoJUnitRunner;
13+
14+
import java.io.PrintStream;
15+
import java.util.List;
16+
17+
import static com.jayway.restassured.RestAssured.when;
18+
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
19+
import static org.junit.Assert.assertThat;
20+
import static org.mockito.Matchers.eq;
21+
import static org.mockito.Mockito.doReturn;
22+
import static org.mockito.Mockito.verify;
23+
24+
@RunWith(MockitoJUnitRunner.class)
25+
public class ManuallyEnteredRepositorySourceTest {
26+
@Mock(answer = Answers.RETURNS_MOCKS)
27+
private Run run;
28+
29+
@Mock(answer = Answers.RETURNS_MOCKS)
30+
private TaskListener listener;
31+
32+
@Mock(answer = Answers.RETURNS_MOCKS)
33+
private PrintStream logger;
34+
35+
@Test
36+
public void nullName() {
37+
ManuallyEnteredRepositorySource instance = Mockito.spy(new ManuallyEnteredRepositorySource("https://github.com/jenkinsci/jenkins"));
38+
doReturn(null).when(instance).createName(Matchers.anyString());
39+
doReturn(logger).when(listener).getLogger();
40+
List<GHRepository> repos = instance.repos(run, listener);
41+
assertThat("size", repos, hasSize(0));
42+
verify(listener).getLogger();
43+
verify(logger).printf(eq("Unable to match %s with a GitHub repository.%n"), eq("https://github.com/jenkinsci/jenkins"));
44+
}
45+
}

0 commit comments

Comments
 (0)