Mercurial > hg4j
annotate test/org/tmatesoft/hg/test/TestStatus.java @ 341:75c452fdd76a
Merging state not detected when there's no conflicts to resolve (no merge/state file)
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 17 Nov 2011 07:04:58 +0100 |
parents | 7a8e1a305a78 |
children | 150500515714 |
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; |
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
|
29 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
|
30 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
|
31 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
|
32 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
|
33 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
34 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
|
35 import org.junit.Ignore; |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
36 import org.junit.Rule; |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
37 import org.junit.Test; |
127
2e395db595e2
Moved HgStatus to toplevel
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
109
diff
changeset
|
38 import org.tmatesoft.hg.core.HgStatus; |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
39 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
|
40 import org.tmatesoft.hg.core.HgStatusCommand; |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
41 import org.tmatesoft.hg.internal.PathGlobMatcher; |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
42 import org.tmatesoft.hg.repo.HgLookup; |
74
6f1b88693d48
Complete refactoring to org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
68
diff
changeset
|
43 import org.tmatesoft.hg.repo.HgRepository; |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
44 import org.tmatesoft.hg.repo.HgStatusCollector; |
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
45 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
|
46 import org.tmatesoft.hg.util.Path; |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
47 |
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
|
48 |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
49 /** |
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
|
50 * |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
51 * @author Artem Tikhomirov |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
52 * @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
|
53 */ |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
54 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
|
55 |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
56 @Rule |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
57 public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); |
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
58 |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
59 private HgRepository repo; |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
60 private StatusOutputParser statusParser; |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
61 private ExecHelper eh; |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
62 |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
63 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
|
64 TestStatus test = new TestStatus(); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
65 test.testLowLevel(); |
99
4d7bb95d553b
StatusCommand().add should list copies
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
66 test.testStatusCommand(); |
100
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
67 test.testPerformance(); |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
68 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
|
69 // |
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
|
70 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
|
71 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
|
72 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
|
73 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
|
74 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
|
75 t3.errorCollector.verify(); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
76 } |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
77 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
78 public TestStatus() throws Exception { |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
79 this(new HgLookup().detectFromWorkingDir()); |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
80 } |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
81 |
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
82 private TestStatus(HgRepository hgRepo) { |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
83 repo = hgRepo; |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
84 Assume.assumeTrue(!repo.isInvalid()); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
85 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
|
86 eh = new ExecHelper(statusParser, hgRepo.getWorkingDir()); |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
87 } |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
88 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
89 @Test |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
90 public void testLowLevel() throws Exception { |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
91 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
|
92 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
|
93 eh.run("hg", "status", "-A"); |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
94 HgStatusCollector.Record r = wcc.status(HgRepository.TIP); |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
95 report("hg status -A", r, statusParser); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
96 // |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
97 statusParser.reset(); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
98 int revision = 3; |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
99 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
|
100 r = wcc.status(revision); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
101 report("status -A --rev " + revision, r, statusParser); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
102 // |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
103 statusParser.reset(); |
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
104 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
|
105 r = new HgStatusCollector.Record(); |
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
106 new HgStatusCollector(repo).change(revision, r); |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
107 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
|
108 // |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
109 statusParser.reset(); |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
110 int rev2 = 80; |
61eedab3eb3e
Status between two revisions to recognize copy/rename
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
76
diff
changeset
|
111 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
|
112 eh.run("hg", "status", "-A", "--rev", range); |
94
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
93
diff
changeset
|
113 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
|
114 report("Status -A -rev " + range, r, statusParser); |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
115 } |
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
|
116 |
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
|
117 /** |
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
|
118 * 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
|
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 * 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
|
121 * 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
|
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 @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
|
124 @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
|
125 public void testDirstateParentOtherThanTipWithUpdate() throws Exception { |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
126 int revToUpdate = 238; |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
127 try { |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
128 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
|
129 testDirstateParentOtherThanTipNoUpdate(); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
130 } finally { |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
131 eh.run("hg", "up"); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
132 } |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
133 } |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
134 |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
135 @Test |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
136 @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
|
137 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
|
138 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
|
139 statusParser.reset(); |
283
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
140 // |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
141 eh.run("hg", "status", "-A"); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
142 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
|
143 report("hg status -A", r, statusParser); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
144 // |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
145 statusParser.reset(); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
146 int revision = 3; |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
147 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
|
148 r = wcc.status(revision); |
7a8e1a305a78
Ignored tests shall be valid tests nevertheless
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
149 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
|
150 } |
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
|
151 |
62
25819103de17
Few more tests for status
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
61
diff
changeset
|
152 |
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
100
diff
changeset
|
153 @Test |
66
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
154 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
|
155 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
|
156 StatusCollector r; |
68
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
157 statusParser.reset(); |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
158 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
|
159 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
|
160 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
|
161 // |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
162 statusParser.reset(); |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
163 int revision = 3; |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
164 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
|
165 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
|
166 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
|
167 // |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
168 statusParser.reset(); |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
169 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
|
170 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
|
171 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
|
172 |
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
66
diff
changeset
|
173 // 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
|
174 } |
52dc3f4cfc76
Primitive test suite in org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
62
diff
changeset
|
175 |
131
aa1629f36482
Renamed .core classes to start with Hg prefix
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
127
diff
changeset
|
176 private static class StatusCollector implements HgStatusCommand.Handler { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
177 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
|
178 private final Map<Path, List<Kind>> name2kinds = new TreeMap<Path, List<Kind>>(); |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
179 |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
180 public void handleStatus(HgStatus s) { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
181 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
|
182 if (l == null) { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
183 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
|
184 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
185 l.add(s.getPath()); |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
186 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
187 List<Kind> k = name2kinds.get(s.getPath()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
188 if (k == null) { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
189 name2kinds.put(s.getPath(), k = new LinkedList<Kind>()); |
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 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
|
192 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
193 |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
194 public List<Path> get(Kind k) { |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
195 List<Path> rv = kind2names.get(k); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
196 return rv == null ? Collections.<Path>emptyList() : rv; |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
197 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
198 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
199 public List<Kind> get(Path p) { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
200 List<Kind> rv = name2kinds.get(p); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
201 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
|
202 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
203 } |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
204 |
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 * 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
|
207 * 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
|
208 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
209 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
210 public void testRemovedAgainstBaseWithoutIt() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
211 // 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
|
212 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
213 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
214 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
215 cmd.all().base(7).execute(sc); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
216 Path file5 = Path.create("dir/file5"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
217 // shall not be listed at all |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
218 assertTrue(sc.get(file5).isEmpty()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
219 } |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
220 |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
221 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
222 * 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
|
223 * HG doesn't respect .hgignore for tracked files. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
224 * Now reported as ignored and missing(?!). |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
225 * Shall be reported as modified. |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
226 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
227 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
228 public void testTrackedModifiedIgnored() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
229 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
230 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
231 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
232 cmd.all().execute(sc); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
233 final Path file2 = Path.create("file2"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
234 assertTrue(sc.get(file2).contains(Modified)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
235 assertTrue(sc.get(file2).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
236 } |
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
|
237 |
224
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
238 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
239 * 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
|
240 * 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
|
241 * (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
|
242 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
243 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
244 public void testMarkedRemovedButStillInWC() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
245 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
246 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
247 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
248 cmd.all().execute(sc); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
249 Path file4 = Path.create("dir/file4"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
250 assertTrue(sc.get(file4).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
251 assertTrue(sc.get(file4).size() == 1); |
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 // different code path (collect != null) |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
254 cmd.base(3).execute(sc = new StatusCollector()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
255 assertTrue(sc.get(file4).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
256 assertTrue(sc.get(file4).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
257 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
258 // 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
|
259 cmd.base(2).execute(sc = new StatusCollector()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
260 assertTrue(sc.get(file4).isEmpty()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
261 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
262 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
263 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
264 * 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
|
265 * (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
|
266 * 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
|
267 * 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
|
268 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
269 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
270 public void testRemovedIgnoredInWC() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
271 // check branch !known, ignored |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
272 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
273 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
274 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
275 cmd.all().execute(sc); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
276 final Path file3 = Path.create("dir/file3"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
277 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
278 assertTrue(sc.get(file3).size() == 1); |
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 cmd.base(3).execute(sc = new StatusCollector()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
281 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
282 assertTrue(sc.get(file3).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
283 assertTrue(sc.get(file3).size() == 2); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
284 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
285 cmd.base(5).execute(sc = new StatusCollector()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
286 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
287 assertTrue(sc.get(file3).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
288 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
289 cmd.base(0).execute(sc = new StatusCollector()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
290 assertTrue(sc.get(file3).contains(Ignored)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
291 assertTrue(sc.get(file3).size() == 1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
292 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
293 } |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
294 |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
295 /* |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
296 * 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
|
297 * 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
|
298 */ |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
299 @Test |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
300 public void testNewFileWithSameNameAsDeletedOld() throws Exception { |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
301 // check branch !known, !ignored (=> unknown) |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
302 repo = Configuration.get().find("status-1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
303 HgStatusCommand cmd = new HgStatusCommand(repo); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
304 StatusCollector sc = new StatusCollector(); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
305 cmd.base(1); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
306 cmd.all().execute(sc); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
307 final Path file1 = Path.create("file1"); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
308 assertTrue(sc.get(file1).contains(Unknown)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
309 assertTrue(sc.get(file1).contains(Removed)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
310 assertTrue(sc.get(file1).size() == 2); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
311 // |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
312 // 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
|
313 cmd.base(2).execute(sc = new StatusCollector()); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
314 assertTrue(sc.get(file1).contains(Unknown)); |
7fe5982bcac0
Few tests for HgWorkingCopyStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
162
diff
changeset
|
315 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
|
316 } |
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
|
317 |
229
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
318 @Test |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
319 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
|
320 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
|
321 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
|
322 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
|
323 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
|
324 cmd.all().execute(sc); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
325 /* |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
326 * C .hgignore |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
327 * ? file1 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
328 * M file2 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
329 * C readme |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
330 */ |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
331 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
|
332 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
|
333 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
|
334 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
|
335 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
|
336 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
|
337 // |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
338 cmd.match(new PathGlobMatcher("dir/*")).execute(sc = new StatusCollector()); |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
339 /* |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
340 * I dir/file3 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
341 * R dir/file4 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
342 * R dir/file5 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
343 */ |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
344 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
|
345 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
|
346 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
|
347 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
|
348 } |
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 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
351 @Test |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
352 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
|
353 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
|
354 // files only |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
355 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
|
356 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
|
357 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
|
358 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
|
359 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
|
360 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
|
361 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
|
362 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
|
363 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
|
364 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
|
365 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
|
366 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
|
367 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
|
368 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
|
369 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
|
370 // 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
|
371 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
|
372 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
|
373 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
|
374 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
|
375 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
|
376 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
|
377 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
|
378 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
|
379 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
380 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
|
381 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
|
382 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
|
383 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
|
384 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
|
385 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
|
386 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
|
387 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
|
388 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
389 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
390 @Test |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
391 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
|
392 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
|
393 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
|
394 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
|
395 |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
396 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
|
397 HgStatusCollector.Record r; |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
398 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
|
399 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
|
400 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
|
401 // |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
402 // 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
|
403 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
|
404 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
|
405 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
|
406 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
|
407 } |
1ec6b327a6ac
Scope for status reworked: explicit files or a general matcher
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
224
diff
changeset
|
408 |
230
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
409 @Test |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
410 public void testScopeInHistoricalStatus() throws Exception { |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
411 repo = Configuration.get().find("status-1"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
412 HgStatusCommand cmd = new HgStatusCommand(repo); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
413 cmd.base(3).revision(8).all(); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
414 cmd.match(new PathGlobMatcher("dir/*")); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
415 StatusCollector sc = new StatusCollector(); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
416 cmd.execute(sc); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
417 final Path file3 = Path.create("dir/file3"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
418 final Path file4 = Path.create("dir/file4"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
419 final Path file5 = Path.create("dir/file5"); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
420 // |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
421 assertTrue(sc.get(file3).contains(Removed)); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
422 assertTrue(sc.get(file3).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
423 assertTrue(sc.get(Removed).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
424 // |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
425 assertTrue(sc.get(file4).contains(Clean)); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
426 assertTrue(sc.get(file4).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
427 assertTrue(sc.get(Clean).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
428 // |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
429 assertTrue(sc.get(file5).contains(Added)); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
430 assertTrue(sc.get(file5).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
431 assertTrue(sc.get(Added).size() == 1); |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
432 |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
433 } |
0dd9da7489dc
Test for scoped operation of HgStatusCollector
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
229
diff
changeset
|
434 |
100
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
435 /* |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
436 * 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
|
437 * '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
|
438 * '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
|
439 * '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
|
440 * |
a05145db4d0c
Bring test repos along with us to recreate testbench
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
441 * 18.02.2011 |
a05145db4d0c
Bring test repos along with us to recreate testbench
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
442 * '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
|
443 * '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
|
444 * |
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
445 * 9.3.2011 (DataAccess instead of byte[] in ReflogStream.Inspector |
c17a08095e44
New performance data
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
147
diff
changeset
|
446 * '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
|
447 * '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
|
448 * '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
|
449 */ |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
450 public void testPerformance() throws Exception { |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
451 final int runs = 10; |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
452 final long start1 = System.currentTimeMillis(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
453 for (int i = 0; i < runs; i++) { |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
454 statusParser.reset(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
455 eh.run("hg", "status", "-A", "--rev", "3:80"); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
456 } |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
457 final long start2 = System.currentTimeMillis(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
458 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
|
459 StatusCollector r = new StatusCollector(); |
131
aa1629f36482
Renamed .core classes to start with Hg prefix
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
127
diff
changeset
|
460 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
|
461 } |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
462 final long end = System.currentTimeMillis(); |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
463 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
|
464 } |
b71b3f7d24d4
Primitive performance test
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
99
diff
changeset
|
465 |
109
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
466 private void report(String what, StatusCollector r) { |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
467 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
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 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
|
474 // 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
|
475 } |
dd4d2d0e42cd
Handler for StatusCommand to get notifications in the form of HgStatus object
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
476 |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
477 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
|
478 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
|
479 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
|
480 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
|
481 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
|
482 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
|
483 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
|
484 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
|
485 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
|
486 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
|
487 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
|
488 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
|
489 Path jv = r.getCopied().get(jk); |
75
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
490 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
|
491 Path cmdv = statusParser.getCopied().get(jk); |
75
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
492 if (!jv.equals(cmdv)) { |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
493 copyDiff.put(jk, jv + " instead of " + cmdv); |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
494 } |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
495 } else { |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
496 copyDiff.put(jk, "ERRONEOUSLY REPORTED IN JAVA"); |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
497 } |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
498 } |
e62f9638fb27
Modified test to check copied files
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
74
diff
changeset
|
499 } |
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
500 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
|
501 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
|
502 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
503 |
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
|
504 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
|
505 // 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
|
506 // 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
|
507 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
|
508 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
|
509 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
|
510 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
|
511 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
|
512 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
513 |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
514 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
|
515 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
|
516 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
|
517 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
|
518 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
|
519 } 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
|
520 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
|
521 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
522 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
523 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
|
524 } |
fac8e7fcc8b0
Simple test framework - capable of parsing Hg cmdline output to compare with Java result
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
525 } |