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
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
8 import java.util.HashMap;
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
9 import java.util.Map;
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
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
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
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
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
21 if (!myVcsRootProperties.isEmpty() && !myVcsRootProperties.equals(m.getVcsRootObject().getProperties()))
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
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
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
32 if (!myVcsRootProperties.isEmpty())
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
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
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
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
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
48 myVcsRootProperties.putAll(properties);
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
49 return this;
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
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 }