1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.project;
20
21 import org.apache.maven.model.building.ModelProblem;
22 import org.hamcrest.BaseMatcher;
23 import org.hamcrest.Description;
24 import org.hamcrest.Matcher;
25
26 import static java.util.stream.Collectors.joining;
27
28
29
30
31 class ProjectBuildingResultWithProblemMessageMatcher extends BaseMatcher<ProjectBuildingResult> {
32 private final String problemMessage;
33
34 ProjectBuildingResultWithProblemMessageMatcher(String problemMessage) {
35 this.problemMessage = problemMessage;
36 }
37
38 @Override
39 public boolean matches(Object o) {
40 if (!(o instanceof ProjectBuildingResult)) {
41 return false;
42 }
43
44 final ProjectBuildingResult r = (ProjectBuildingResult) o;
45
46 return r.getProblems().stream().anyMatch(p -> p.getMessage().contains(problemMessage));
47 }
48
49 @Override
50 public void describeTo(Description description) {
51 description.appendText("a ProjectBuildingResult with message ").appendValue(problemMessage);
52 }
53
54 @Override
55 public void describeMismatch(final Object o, final Description description) {
56 if (!(o instanceof ProjectBuildingResult)) {
57 super.describeMismatch(o, description);
58 } else {
59 final ProjectBuildingResult r = (ProjectBuildingResult) o;
60 description.appendText("was a ProjectBuildingResult with messages ");
61 String messages = r.getProblems().stream()
62 .map(ModelProblem::getMessage)
63 .map(m -> "\"" + m + "\"" + System.lineSeparator())
64 .collect(joining(", "));
65 description.appendText(messages);
66 }
67 }
68
69 static Matcher<ProjectBuildingResult> projectBuildingResultWithProblemMessage(String message) {
70 return new ProjectBuildingResultWithProblemMessageMatcher(message);
71 }
72 }