Mercurial > hg > mercurial
annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataMatcher.java @ 609:86e187882960 Gaya-8.0.x
Test for TW-29998
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 28 Jun 2013 12:06:09 +0400 |
parents | ad112e314be5 |
children | 7c017b6aa438 |
rev | line source |
---|---|
564
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
1 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
2 |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
3 import jetbrains.buildServer.vcs.ModificationData; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
4 import org.hamcrest.Description; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
5 import org.hamcrest.TypeSafeMatcher; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
6 import org.jetbrains.annotations.NotNull; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
7 |
543 | 8 import java.util.HashMap; |
9 import java.util.Map; | |
10 | |
564
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
11 public class ModificationDataMatcher extends TypeSafeMatcher<ModificationData> { |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
12 |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
13 private String myVersion; |
543 | 14 private Map<String, String> myVcsRootProperties = new HashMap<String, String>(); |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
15 private Map<String, String> myAttributes = new HashMap<String, String>(); |
564
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
16 |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 @Override |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 public boolean matchesSafely(ModificationData m) { |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 if (myVersion != null && !myVersion.equals(m.getDisplayVersion())) |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
20 return false; |
543 | 21 if (!myVcsRootProperties.isEmpty() && !myVcsRootProperties.equals(m.getVcsRootObject().getProperties())) |
22 return false; | |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
23 if (!myAttributes.isEmpty() && !containsAllAttributes(m.getAttributes())) |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
24 return false; |
564
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 return true; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 } |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
27 |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 public void describeTo(Description description) { |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 description.appendText("modification"); |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 if (myVersion != null) |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 description.appendText(" with version ").appendValue(myVersion); |
543 | 32 if (!myVcsRootProperties.isEmpty()) |
33 description.appendText(" with vcs root properties ").appendValue(myVcsRootProperties); | |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
34 if (!myAttributes.isEmpty()) |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
35 description.appendText(" with attributes ").appendValue(myAttributes); |
564
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 } |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 public static ModificationDataMatcher modificationData() { |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 return new ModificationDataMatcher(); |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 } |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 public ModificationDataMatcher withVersion(@NotNull String version) { |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 myVersion = version; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 return this; |
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 } |
543 | 46 |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
47 public ModificationDataMatcher withVcsRootProperties(@NotNull Map<String, String> properties) { |
543 | 48 myVcsRootProperties.putAll(properties); |
49 return this; | |
50 } | |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
51 |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
52 public ModificationDataMatcher withAttributes(@NotNull Map<String, String> attributes) { |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
53 myAttributes.putAll(attributes); |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
54 return this; |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
55 } |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
56 |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
57 private boolean containsAllAttributes(@NotNull Map<String, String> attributes) { |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
58 for (Map.Entry<String, String> e : myAttributes.entrySet()) { |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
59 String expectedValue = e.getValue(); |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
60 String actualValue = attributes.get(e.getKey()); |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
61 if (expectedValue == null && actualValue != null || |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
62 expectedValue != null && !e.getValue().equals(actualValue)) |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
63 return false; |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
64 } |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
65 return true; |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
66 } |
564
d012388935fb
TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 } |