Mercurial > hg4j
annotate test/org/tmatesoft/hg/test/TestStatus.java @ 360:150500515714
Report non-critical errors during status operation to handler/inspector
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 08 Dec 2011 22:19:27 +0100 |
parents | 7a8e1a305a78 |
children | 155c1893bda4 |
rev | line source |
---|---|
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
1 /* |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
2 * Copyright (c) 2011 TMate Software Ltd |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
3 * |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
4 * This program is free software; you can redistribute it and/or modify |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
6 * the Free Software Foundation; version 2 of the License. |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
7 * |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
8 * This program is distributed in the hope that it will be useful, |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
11 * GNU General Public License for more details. |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
12 * |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
13 * For information on how to redistribute this software under |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
14 * the terms of a license other than GNU General Public License |
102
a3a2e5deb320
Updated contact address to support@hg4j.com
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
101
diff
changeset
|
15 * contact TMate Software at support@hg4j.com |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
16 */ |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
17 package org.tmatesoft.hg.test; |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
18 |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
19 import static org.hamcrest.CoreMatchers.equalTo; |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
20 import static org.junit.Assert.assertEquals; |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
21 import static org.junit.Assert.assertTrue; |
127
2e395db595e2
Moved HgStatus to toplevel
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
109
diff
changeset
|
22 import static org.tmatesoft.hg.core.HgStatus.Kind.*; |
74
6f1b88693d48
Complete refactoring to org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
68
diff
changeset
|
23 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
24 |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
25 import java.util.ArrayList; |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
26 import java.util.Collection; |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
27 import java.util.Collections; |
75
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
28 import java.util.HashMap; |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
29 import java.util.LinkedHashMap; |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
30 import java.util.LinkedList; |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
31 import java.util.List; |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
32 import java.util.Map; |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
33 import java.util.TreeMap; |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
34 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
35 import org.junit.Assume; |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
36 import org.junit.Ignore; |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
37 import org.junit.Rule; |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
38 import org.junit.Test; |
127
2e395db595e2
Moved HgStatus to toplevel
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
109
diff
changeset
|
39 import org.tmatesoft.hg.core.HgStatus; |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
40 import org.tmatesoft.hg.core.HgStatus.Kind; |
131
aa1629f36482
Renamed .core classes to start with Hg prefix
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
127
diff
changeset
|
41 import org.tmatesoft.hg.core.HgStatusCommand; |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
42 import org.tmatesoft.hg.core.HgStatusHandler; |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
43 import org.tmatesoft.hg.internal.PathGlobMatcher; |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
44 import org.tmatesoft.hg.repo.HgLookup; |
74
6f1b88693d48
Complete refactoring to org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
68
diff
changeset
|
45 import org.tmatesoft.hg.repo.HgRepository; |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
46 import org.tmatesoft.hg.repo.HgStatusCollector; |
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
47 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; |
133
4a948ec83980
core.Path to util.Path as it's not Hg repo dependant
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
131
diff
changeset
|
48 import org.tmatesoft.hg.util.Path; |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
49 import org.tmatesoft.hg.util.Status; |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
50 |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
51 |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
52 /** |
76
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
75
diff
changeset
|
53 * |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
54 * @author Artem Tikhomirov |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
55 * @author TMate Software Ltd. |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
56 */ |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
57 public class TestStatus { |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
58 |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
59 @Rule |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
60 public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
61 |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
62 private HgRepository repo; |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
63 private StatusOutputParser statusParser; |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
64 private ExecHelper eh; |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
65 |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
66 public static void main(String[] args) throws Throwable { |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
67 TestStatus test = new TestStatus(); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
68 test.testLowLevel(); |
99
4d7bb95d553b
StatusCommand().add should list copies
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
69 test.testStatusCommand(); |
100
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
70 test.testPerformance(); |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
71 test.errorCollector.verify(); |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
72 // |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
73 TestStatus t2 = new TestStatus(new HgLookup().detect("/temp/hg/hg4j-merging/hg4j")); |
283
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
74 t2.testDirstateParentOtherThanTipWithUpdate(); |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
75 t2.errorCollector.verify(); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
76 TestStatus t3 = new TestStatus(new HgLookup().detect("/temp/hg/cpython")); |
283
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
77 t3.testDirstateParentOtherThanTipNoUpdate(); |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
78 t3.errorCollector.verify(); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
79 } |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
80 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
81 public TestStatus() throws Exception { |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
82 this(new HgLookup().detectFromWorkingDir()); |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
83 } |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
84 |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
85 private TestStatus(HgRepository hgRepo) { |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
86 repo = hgRepo; |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
87 Assume.assumeTrue(!repo.isInvalid()); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
88 statusParser = new StatusOutputParser(); |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
89 eh = new ExecHelper(statusParser, hgRepo.getWorkingDir()); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
90 } |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
91 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
92 @Test |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
93 public void testLowLevel() throws Exception { |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
94 final HgWorkingCopyStatusCollector wcc = new HgWorkingCopyStatusCollector(repo); |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
95 statusParser.reset(); |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
96 eh.run("hg", "status", "-A"); |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
97 HgStatusCollector.Record r = wcc.status(HgRepository.TIP); |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
98 report("hg status -A", r, statusParser); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
99 // |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
100 statusParser.reset(); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
101 int revision = 3; |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
102 eh.run("hg", "status", "-A", "--rev", String.valueOf(revision)); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
103 r = wcc.status(revision); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
104 report("status -A --rev " + revision, r, statusParser); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
105 // |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
106 statusParser.reset(); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
107 eh.run("hg", "status", "-A", "--change", String.valueOf(revision)); |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
108 r = new HgStatusCollector.Record(); |
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
109 new HgStatusCollector(repo).change(revision, r); |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
110 report("status -A --change " + revision, r, statusParser); |
88
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
111 // |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
112 statusParser.reset(); |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
113 int rev2 = 80; |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
114 final String range = String.valueOf(revision) + ":" + String.valueOf(rev2); |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
115 eh.run("hg", "status", "-A", "--rev", range); |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
116 r = new HgStatusCollector(repo).status(revision, rev2); |
88
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
117 report("Status -A -rev " + range, r, statusParser); |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
118 } |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
119 |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
120 /** |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
121 * hg up --rev <earlier rev>; hg status |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
122 * |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
123 * To check if HgWorkingCopyStatusCollector respects actual working copy parent (takes from dirstate) |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
124 * and if status is calculated correctly |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
125 */ |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
126 @Test |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
127 @Ignore("modifies test repository, needs careful configuration") |
283
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
128 public void testDirstateParentOtherThanTipWithUpdate() throws Exception { |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
129 int revToUpdate = 238; |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
130 try { |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
131 eh.run("hg", "up", "--rev", String.valueOf(revToUpdate)); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
132 testDirstateParentOtherThanTipNoUpdate(); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
133 } finally { |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
134 eh.run("hg", "up"); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
135 } |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
136 } |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
137 |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
138 @Test |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
139 @Ignore("needs configuration as it requires special repository") |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
140 public void testDirstateParentOtherThanTipNoUpdate() throws Exception { |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
141 final HgWorkingCopyStatusCollector wcc = new HgWorkingCopyStatusCollector(repo); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
142 statusParser.reset(); |
283
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
143 // |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
144 eh.run("hg", "status", "-A"); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
145 HgStatusCollector.Record r = wcc.status(HgRepository.TIP); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
146 report("hg status -A", r, statusParser); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
147 // |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
148 statusParser.reset(); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
149 int revision = 3; |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
150 eh.run("hg", "status", "-A", "--rev", String.valueOf(revision)); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
151 r = wcc.status(revision); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
152 report("status -A --rev " + revision, r, statusParser); |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
153 } |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
154 |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
155 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
156 @Test |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
157 public void testStatusCommand() throws Exception { |
131
aa1629f36482
Renamed .core classes to start with Hg prefix
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
127
diff
changeset
|
158 final HgStatusCommand sc = new HgStatusCommand(repo).all(); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
159 StatusCollector r; |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
160 statusParser.reset(); |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
161 eh.run("hg", "status", "-A"); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
162 sc.execute(r = new StatusCollector()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
163 report("hg status -A", r); |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
164 // |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
165 statusParser.reset(); |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
166 int revision = 3; |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
167 eh.run("hg", "status", "-A", "--rev", String.valueOf(revision)); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
168 sc.base(revision).execute(r = new StatusCollector()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
169 report("status -A --rev " + revision, r); |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
170 // |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
171 statusParser.reset(); |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
172 eh.run("hg", "status", "-A", "--change", String.valueOf(revision)); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
173 sc.base(TIP).revision(revision).execute(r = new StatusCollector()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
174 report("status -A --change " + revision, r); |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
175 |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
176 // TODO check not -A, but defaults()/custom set of modifications |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
177 } |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
178 |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
179 private static class StatusCollector implements HgStatusHandler { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
180 private final Map<Kind, List<Path>> kind2names = new TreeMap<Kind, List<Path>>(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
181 private final Map<Path, List<Kind>> name2kinds = new TreeMap<Path, List<Kind>>(); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
182 private final Map<Path, Status> name2error = new LinkedHashMap<Path, Status>(); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
183 |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
184 public void handleStatus(HgStatus s) { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
185 List<Path> l = kind2names.get(s.getKind()); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
186 if (l == null) { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
187 kind2names.put(s.getKind(), l = new LinkedList<Path>()); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
188 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
189 l.add(s.getPath()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
190 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
191 List<Kind> k = name2kinds.get(s.getPath()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
192 if (k == null) { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
193 name2kinds.put(s.getPath(), k = new LinkedList<Kind>()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
194 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
195 k.add(s.getKind()); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
196 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
197 |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
198 public void handleError(Path file, Status s) { |
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
199 name2error.put(file, s); |
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
200 } |
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
201 |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
202 public List<Path> get(Kind k) { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
203 List<Path> rv = kind2names.get(k); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
204 return rv == null ? Collections.<Path>emptyList() : rv; |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
205 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
206 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
207 public List<Kind> get(Path p) { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
208 List<Kind> rv = name2kinds.get(p); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
209 return rv == null ? Collections.<Kind>emptyList() : rv; |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
210 } |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
211 |
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
212 public Map<Path, Status> getErrors() { |
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
213 return name2error; |
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
214 } |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
215 } |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
216 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
217 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
218 * status-1/dir/file5 was added in rev 8, scheduled (hg remove file5) for removal, but not yet committed |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
219 * Erroneously reported extra REMOVED file (the one added and removed in between). Shall not |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
220 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
221 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
222 public void testRemovedAgainstBaseWithoutIt() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
223 // check very end of WCStatusCollector, foreach left knownEntry, collect == null || baseRevFiles.contains() |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
224 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
225 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
226 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
227 cmd.all().base(7).execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
228 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
229 Path file5 = Path.create("dir/file5"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
230 // shall not be listed at all |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
231 assertTrue(sc.get(file5).isEmpty()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
232 } |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
233 |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
234 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
235 * status-1/file2 is tracked, but later .hgignore got entry to ignore it, file2 got modified |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
236 * HG doesn't respect .hgignore for tracked files. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
237 * Now reported as ignored and missing(?!). |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
238 * Shall be reported as modified. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
239 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
240 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
241 public void testTrackedModifiedIgnored() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
242 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
243 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
244 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
245 cmd.all().execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
246 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
247 final Path file2 = Path.create("file2"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
248 assertTrue(sc.get(file2).contains(Modified)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
249 assertTrue(sc.get(file2).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
250 } |
76
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
75
diff
changeset
|
251 |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
252 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
253 * status/dir/file4, added in rev 3, has been scheduled for removal (hg remove -Af file4), but still there in the WC. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
254 * Shall be reported as Removed, when comparing against rev 3 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
255 * (despite both rev 3 and WC's parent has file4, there are different paths in the code for wc against parent and wc against rev) |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
256 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
257 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
258 public void testMarkedRemovedButStillInWC() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
259 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
260 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
261 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
262 cmd.all().execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
263 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
264 Path file4 = Path.create("dir/file4"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
265 assertTrue(sc.get(file4).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
266 assertTrue(sc.get(file4).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
267 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
268 // different code path (collect != null) |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
269 cmd.base(3).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
270 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
271 assertTrue(sc.get(file4).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
272 assertTrue(sc.get(file4).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
273 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
274 // wasn't there in rev 2, shall not be reported at all |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
275 cmd.base(2).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
276 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
277 assertTrue(sc.get(file4).isEmpty()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
278 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
279 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
280 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
281 * status-1/dir/file3 tracked, listed in .hgignore since rev 4, removed (hg remove file3) from repo and WC |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
282 * (but entry in .hgignore left) in revision 5, and new file3 got created in WC. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
283 * Shall be reported as ignored when comparing against WC's parent, |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
284 * and both ignored and removed when comparing against revision 3 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
285 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
286 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
287 public void testRemovedIgnoredInWC() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
288 // check branch !known, ignored |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
289 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
290 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
291 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
292 cmd.all().execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
293 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
294 final Path file3 = Path.create("dir/file3"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
295 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
296 assertTrue(sc.get(file3).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
297 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
298 cmd.base(3).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
299 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
300 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
301 assertTrue(sc.get(file3).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
302 assertTrue(sc.get(file3).size() == 2); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
303 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
304 cmd.base(5).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
305 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
306 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
307 assertTrue(sc.get(file3).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
308 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
309 cmd.base(0).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
310 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
311 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
312 assertTrue(sc.get(file3).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
313 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
314 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
315 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
316 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
317 * status/file1 was removed in cset 2. New file with the same name in the WC. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
318 * Shall report 2 statuses (as cmdline hg does): unknown and removed when comparing against that revision. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
319 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
320 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
321 public void testNewFileWithSameNameAsDeletedOld() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
322 // check branch !known, !ignored (=> unknown) |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
323 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
324 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
325 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
326 cmd.base(1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
327 cmd.all().execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
328 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
329 final Path file1 = Path.create("file1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
330 assertTrue(sc.get(file1).contains(Unknown)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
331 assertTrue(sc.get(file1).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
332 assertTrue(sc.get(file1).size() == 2); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
333 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
334 // no file1 in rev 2, shall be reported as unknown only |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
335 cmd.base(2).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
336 assertTrue(sc.getErrors().isEmpty()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
337 assertTrue(sc.get(file1).contains(Unknown)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
338 assertTrue(sc.get(file1).size() == 1); |
76
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
75
diff
changeset
|
339 } |
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
75
diff
changeset
|
340 |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
341 @Test |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
342 public void testSubTreeStatus() throws Exception { |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
343 repo = Configuration.get().find("status-1"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
344 HgStatusCommand cmd = new HgStatusCommand(repo); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
345 StatusCollector sc = new StatusCollector(); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
346 cmd.match(new PathGlobMatcher("*")); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
347 cmd.all().execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
348 assertTrue(sc.getErrors().isEmpty()); |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
349 /* |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
350 * C .hgignore |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
351 * ? file1 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
352 * M file2 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
353 * C readme |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
354 */ |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
355 final Path file1 = Path.create("file1"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
356 assertTrue(sc.get(file1).contains(Unknown)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
357 assertTrue(sc.get(file1).size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
358 assertTrue(sc.get(Removed).isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
359 assertTrue(sc.get(Clean).size() == 2); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
360 assertTrue(sc.get(Modified).size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
361 // |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
362 cmd.match(new PathGlobMatcher("dir/*")).execute(sc = new StatusCollector()); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
363 assertTrue(sc.getErrors().isEmpty()); |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
364 /* |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
365 * I dir/file3 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
366 * R dir/file4 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
367 * R dir/file5 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
368 */ |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
369 assertTrue(sc.get(Modified).isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
370 assertTrue(sc.get(Added).isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
371 assertTrue(sc.get(Ignored).size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
372 assertTrue(sc.get(Removed).size() == 2); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
373 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
374 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
375 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
376 @Test |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
377 public void testSpecificFileStatus() throws Exception { |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
378 repo = Configuration.get().find("status-1"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
379 // files only |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
380 final Path file2 = Path.create("file2"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
381 final Path file3 = Path.create("dir/file3"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
382 HgWorkingCopyStatusCollector sc = HgWorkingCopyStatusCollector.create(repo, file2, file3); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
383 HgStatusCollector.Record r = new HgStatusCollector.Record(); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
384 sc.walk(TIP, r); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
385 assertTrue(r.getAdded().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
386 assertTrue(r.getRemoved().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
387 assertTrue(r.getUnknown().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
388 assertTrue(r.getClean().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
389 assertTrue(r.getMissing().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
390 assertTrue(r.getCopied().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
391 assertTrue(r.getIgnored().contains(file3)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
392 assertTrue(r.getIgnored().size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
393 assertTrue(r.getModified().contains(file2)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
394 assertTrue(r.getModified().size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
395 // mix files and directories |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
396 final Path readme = Path.create("readme"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
397 final Path dir = Path.create("dir/"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
398 sc = HgWorkingCopyStatusCollector.create(repo, readme, dir); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
399 sc.walk(TIP, r = new HgStatusCollector.Record()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
400 assertTrue(r.getAdded().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
401 assertTrue(r.getRemoved().size() == 2); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
402 for (Path p : r.getRemoved()) { |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
403 assertEquals(p.compareWith(dir), Path.CompareResult.Nested); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
404 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
405 assertTrue(r.getUnknown().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
406 assertTrue(r.getClean().size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
407 assertTrue(r.getClean().contains(readme)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
408 assertTrue(r.getMissing().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
409 assertTrue(r.getCopied().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
410 assertTrue(r.getIgnored().contains(file3)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
411 assertTrue(r.getIgnored().size() == 1); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
412 assertTrue(r.getModified().isEmpty()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
413 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
414 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
415 @Test |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
416 public void testSameResultDirectPathVsMatcher() throws Exception { |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
417 repo = Configuration.get().find("status-1"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
418 final Path file3 = Path.create("dir/file3"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
419 final Path file5 = Path.create("dir/file5"); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
420 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
421 HgWorkingCopyStatusCollector sc = HgWorkingCopyStatusCollector.create(repo, file3, file5); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
422 HgStatusCollector.Record r; |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
423 sc.walk(TIP, r = new HgStatusCollector.Record()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
424 assertTrue(r.getRemoved().contains(file5)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
425 assertTrue(r.getIgnored().contains(file3)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
426 // |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
427 // query for the same file, but with |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
428 sc = HgWorkingCopyStatusCollector.create(repo, new PathGlobMatcher(file3.toString(), file5.toString())); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
429 sc.walk(TIP, r = new HgStatusCollector.Record()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
430 assertTrue(r.getRemoved().contains(file5)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
431 assertTrue(r.getIgnored().contains(file3)); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
432 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
433 |
230
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
434 @Test |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
435 public void testScopeInHistoricalStatus() throws Exception { |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
436 repo = Configuration.get().find("status-1"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
437 HgStatusCommand cmd = new HgStatusCommand(repo); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
438 cmd.base(3).revision(8).all(); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
439 cmd.match(new PathGlobMatcher("dir/*")); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
440 StatusCollector sc = new StatusCollector(); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
441 cmd.execute(sc); |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
442 assertTrue(sc.getErrors().isEmpty()); |
230
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
443 final Path file3 = Path.create("dir/file3"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
444 final Path file4 = Path.create("dir/file4"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
445 final Path file5 = Path.create("dir/file5"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
446 // |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
447 assertTrue(sc.get(file3).contains(Removed)); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
448 assertTrue(sc.get(file3).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
449 assertTrue(sc.get(Removed).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
450 // |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
451 assertTrue(sc.get(file4).contains(Clean)); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
452 assertTrue(sc.get(file4).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
453 assertTrue(sc.get(Clean).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
454 // |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
455 assertTrue(sc.get(file5).contains(Added)); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
456 assertTrue(sc.get(file5).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
457 assertTrue(sc.get(Added).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
458 |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
459 } |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
460 |
100
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
461 /* |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
462 * With warm-up of previous tests, 10 runs, time in milliseconds |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
463 * 'hg status -A': Native client total 953 (95 per run), Java client 94 (9) |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
464 * 'hg status -A --rev 3:80': Native client total 1828 (182 per run), Java client 235 (23) |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
465 * 'hg log --debug', 10 runs: Native client total 1766 (176 per run), Java client 78 (7) |
147
a05145db4d0c
Bring test repos along with us to recreate testbench
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
466 * |
a05145db4d0c
Bring test repos along with us to recreate testbench
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
467 * 18.02.2011 |
a05145db4d0c
Bring test repos along with us to recreate testbench
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
468 * 'hg status -A --rev 3:80', 10 runs: Native client total 2000 (200 per run), Java client 250 (25) |
a05145db4d0c
Bring test repos along with us to recreate testbench
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
469 * 'hg log --debug', 10 runs: Native client total 2297 (229 per run), Java client 125 (12) |
162
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
470 * |
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
471 * 9.3.2011 (DataAccess instead of byte[] in ReflogStream.Inspector |
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
472 * 'hg status -A', 10 runs: Native client total 1516 (151 per run), Java client 219 (21) |
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
473 * 'hg status -A --rev 3:80', 10 runs: Native client total 1875 (187 per run), Java client 3187 (318) (!!! ???) |
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
474 * 'hg log --debug', 10 runs: Native client total 2484 (248 per run), Java client 344 (34) |
100
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
475 */ |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
476 public void testPerformance() throws Exception { |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
477 final int runs = 10; |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
478 final long start1 = System.currentTimeMillis(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
479 for (int i = 0; i < runs; i++) { |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
480 statusParser.reset(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
481 eh.run("hg", "status", "-A", "--rev", "3:80"); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
482 } |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
483 final long start2 = System.currentTimeMillis(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
484 for (int i = 0; i < runs; i++) { |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
485 StatusCollector r = new StatusCollector(); |
131
aa1629f36482
Renamed .core classes to start with Hg prefix
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
127
diff
changeset
|
486 new HgStatusCommand(repo).all().base(3).revision(80).execute(r); |
100
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
487 } |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
488 final long end = System.currentTimeMillis(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
489 System.out.printf("'hg status -A --rev 3:80', %d runs: Native client total %d (%d per run), Java client %d (%d)\n", runs, start2-start1, (start2-start1)/runs, end-start2, (end-start2)/runs); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
490 } |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
491 |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
492 private void report(String what, StatusCollector r) { |
360
150500515714
Report non-critical errors during status operation to handler/inspector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
283
diff
changeset
|
493 assertTrue(r.getErrors().isEmpty()); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
494 reportNotEqual(what + "#MODIFIED", r.get(Modified), statusParser.getModified()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
495 reportNotEqual(what + "#ADDED", r.get(Added), statusParser.getAdded()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
496 reportNotEqual(what + "#REMOVED", r.get(Removed), statusParser.getRemoved()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
497 reportNotEqual(what + "#CLEAN", r.get(Clean), statusParser.getClean()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
498 reportNotEqual(what + "#IGNORED", r.get(Ignored), statusParser.getIgnored()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
499 reportNotEqual(what + "#MISSING", r.get(Missing), statusParser.getMissing()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
500 reportNotEqual(what + "#UNKNOWN", r.get(Unknown), statusParser.getUnknown()); |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
501 // FIXME test copies |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
502 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
503 |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
504 private void report(String what, HgStatusCollector.Record r, StatusOutputParser statusParser) { |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
505 reportNotEqual(what + "#MODIFIED", r.getModified(), statusParser.getModified()); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
506 reportNotEqual(what + "#ADDED", r.getAdded(), statusParser.getAdded()); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
507 reportNotEqual(what + "#REMOVED", r.getRemoved(), statusParser.getRemoved()); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
508 reportNotEqual(what + "#CLEAN", r.getClean(), statusParser.getClean()); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
509 reportNotEqual(what + "#IGNORED", r.getIgnored(), statusParser.getIgnored()); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
510 reportNotEqual(what + "#MISSING", r.getMissing(), statusParser.getMissing()); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
511 reportNotEqual(what + "#UNKNOWN", r.getUnknown(), statusParser.getUnknown()); |
93
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
88
diff
changeset
|
512 List<Path> copiedKeyDiff = difference(r.getCopied().keySet(), statusParser.getCopied().keySet()); |
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
88
diff
changeset
|
513 HashMap<Path, String> copyDiff = new HashMap<Path,String>(); |
75
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
514 if (copiedKeyDiff.isEmpty()) { |
93
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
88
diff
changeset
|
515 for (Path jk : r.getCopied().keySet()) { |
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
88
diff
changeset
|
516 Path jv = r.getCopied().get(jk); |
75
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
517 if (statusParser.getCopied().containsKey(jk)) { |
93
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
88
diff
changeset
|
518 Path cmdv = statusParser.getCopied().get(jk); |
75
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
519 if (!jv.equals(cmdv)) { |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
520 copyDiff.put(jk, jv + " instead of " + cmdv); |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
521 } |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
522 } else { |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
523 copyDiff.put(jk, "ERRONEOUSLY REPORTED IN JAVA"); |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
524 } |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
525 } |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
526 } |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
527 errorCollector.checkThat(what + "#Non-matching 'copied' keys: ", copiedKeyDiff, equalTo(Collections.<Path>emptyList())); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
528 errorCollector.checkThat(what + "#COPIED", copyDiff, equalTo(Collections.<Path,String>emptyMap())); |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
529 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
530 |
282
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
531 private <T extends Comparable<? super T>> void reportNotEqual(String what, Collection<T> l1, Collection<T> l2) { |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
532 // List<T> diff = difference(l1, l2); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
533 // errorCollector.checkThat(what, diff, equalTo(Collections.<T>emptyList())); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
534 ArrayList<T> sl1 = new ArrayList<T>(l1); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
535 Collections.sort(sl1); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
536 ArrayList<T> sl2 = new ArrayList<T>(l2); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
537 Collections.sort(sl2); |
e51dd9a14b6f
Yet another WC status fix, where dirstate parent and base revision are treated right (dirstate parent other than tip and explicit baseRevision are not the same)
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
230
diff
changeset
|
538 errorCollector.checkThat(what, sl1, equalTo(sl2)); |
61
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
539 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
540 |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
541 private static <T> List<T> difference(Collection<T> l1, Collection<T> l2) { |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
542 LinkedList<T> result = new LinkedList<T>(l2); |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
543 for (T t : l1) { |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
544 if (l2.contains(t)) { |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
545 result.remove(t); |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
546 } else { |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
547 result.add(t); |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
548 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
549 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
550 return result; |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
551 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
552 } |