Mercurial > hg4j
annotate test/org/tmatesoft/hg/test/TestManifest.java @ 653:629a7370554c
Tests for recent changes in HgParentChildMap and RepositoryComparator (outgoing to respect drafts and Issue 47)
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 03 Jul 2013 14:38:30 +0200 |
| parents | 59b7c817bc4d |
| children |
| rev | line source |
|---|---|
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
1 /* |
|
457
d78cb5ca3053
Get rid of ambiguity in method name
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
427
diff
changeset
|
2 * Copyright (c) 2011-2012 TMate Software Ltd |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
3 * |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
4 * This program is free software; you can redistribute it and/or modify |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
6 * the Free Software Foundation; version 2 of the License. |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
7 * |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
8 * This program is distributed in the hope that it will be useful, |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
11 * GNU General Public License for more details. |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
12 * |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
13 * For information on how to redistribute this software under |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
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 |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
16 */ |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
17 package org.tmatesoft.hg.test; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
18 |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
19 import static org.hamcrest.CoreMatchers.equalTo; |
|
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
20 import static org.hamcrest.CoreMatchers.notNullValue; |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
21 import static org.junit.Assert.*; |
|
74
6f1b88693d48
Complete refactoring to org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
67
diff
changeset
|
22 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
23 |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
24 import java.util.Collections; |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
25 import java.util.LinkedHashMap; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
26 import java.util.LinkedList; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
27 import java.util.Map; |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
28 import java.util.regex.Pattern; |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
29 |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
30 import org.junit.Rule; |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
31 import org.junit.Test; |
|
427
31a89587eb04
FIXMEs: consistent names, throws for commands and their handlers. Use of checked exceptions in hi-level api
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
32 import org.tmatesoft.hg.core.HgManifestHandler; |
|
249
4c3b9f679412
Deprecated HgLogCommand.FileRevision gone, top-level HgFileRevision is bright and shiny replacement
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
199
diff
changeset
|
33 import org.tmatesoft.hg.core.HgFileRevision; |
|
143
b9700740553a
Command line tools parse and respect most of command-line arguments
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
133
diff
changeset
|
34 import org.tmatesoft.hg.core.HgManifestCommand; |
|
74
6f1b88693d48
Complete refactoring to org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
67
diff
changeset
|
35 import org.tmatesoft.hg.core.Nodeid; |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
36 import org.tmatesoft.hg.internal.IntMap; |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
37 import org.tmatesoft.hg.repo.HgLookup; |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
38 import org.tmatesoft.hg.repo.HgManifest; |
|
74
6f1b88693d48
Complete refactoring to org.tmatesoft
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
67
diff
changeset
|
39 import org.tmatesoft.hg.repo.HgRepository; |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
40 import org.tmatesoft.hg.repo.HgManifest.Flags; |
|
133
4a948ec83980
core.Path to util.Path as it's not Hg repo dependant
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
131
diff
changeset
|
41 import org.tmatesoft.hg.util.Path; |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
42 |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
43 |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
44 /** |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
45 * |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
46 * @author Artem Tikhomirov |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
47 * @author TMate Software Ltd. |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
48 */ |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
49 public class TestManifest { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
50 |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
51 @Rule |
|
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
52 public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); |
|
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
53 |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
54 private final HgRepository repo; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
55 private ManifestOutputParser manifestParser; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
56 private ExecHelper eh; |
|
249
4c3b9f679412
Deprecated HgLogCommand.FileRevision gone, top-level HgFileRevision is bright and shiny replacement
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
199
diff
changeset
|
57 final LinkedList<HgFileRevision> revisions = new LinkedList<HgFileRevision>(); |
|
427
31a89587eb04
FIXMEs: consistent names, throws for commands and their handlers. Use of checked exceptions in hi-level api
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
282
diff
changeset
|
58 private HgManifestHandler handler = new HgManifestHandler() { |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
59 |
|
249
4c3b9f679412
Deprecated HgLogCommand.FileRevision gone, top-level HgFileRevision is bright and shiny replacement
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
199
diff
changeset
|
60 public void file(HgFileRevision fileRevision) { |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
61 revisions.add(fileRevision); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
62 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
63 |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
64 public void end(Nodeid manifestRevision) {} |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
65 public void dir(Path p) {} |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
66 public void begin(Nodeid manifestRevision) {} |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
67 }; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
68 |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
69 public static void main(String[] args) throws Throwable { |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
70 TestManifest tm = new TestManifest(); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
71 tm.testTip(); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
72 tm.testFirstRevision(); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
73 tm.testRevisionInTheMiddle(); |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
74 tm.testWalkFileRevisions(); |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
75 tm.errorCollector.verify(); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
76 } |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
77 |
|
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
78 public TestManifest() throws Exception { |
|
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
79 this(new HgLookup().detectFromWorkingDir()); |
|
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
80 } |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
81 |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
82 private TestManifest(HgRepository hgRepo) { |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
83 repo = hgRepo; |
|
106
5c43e937e15b
Assume doesn't actually report tests as ignored, rather as green (pass), which is misleading
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
103
diff
changeset
|
84 assertTrue(!repo.isInvalid()); |
|
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:
249
diff
changeset
|
85 eh = new ExecHelper(manifestParser = new ManifestOutputParser(), repo.getWorkingDir()); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
86 } |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
87 |
|
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
88 @Test |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
89 public void testTip() throws Exception { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
90 testRevision(TIP); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
91 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
92 |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
93 @Test |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
94 public void testFirstRevision() throws Exception { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
95 testRevision(0); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
96 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
97 |
|
101
777ab7034c1b
Switch to JUnit for tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
95
diff
changeset
|
98 @Test |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
99 public void testRevisionInTheMiddle() throws Exception { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
100 int rev = repo.getManifest().getRevisionCount() / 2; |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
101 if (rev == 0) { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
102 throw new IllegalStateException("Need manifest with few revisions"); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
103 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
104 testRevision(rev); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
105 } |
|
479
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
106 |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
107 @Test |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
108 public void testWalkFileRevisions() throws Exception { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
109 // hg --debug manifest --rev 150 | grep cmdline/org/tmatesoft/hg/console/Main.java |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
110 String fname = "cmdline/org/tmatesoft/hg/console/Main.java"; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
111 Pattern ptrn = Pattern.compile("(\\w+)\\s+\\d{3}\\s+\\Q" + fname + "\\E$", Pattern.MULTILINE); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
112 OutputParser.Stub output = new OutputParser.Stub(); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
113 ExecHelper eh = new ExecHelper(output, repo.getWorkingDir()); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
114 int[] revisions = new int[] { 100, 150, 200, 210, 300 }; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
115 final IntMap<Nodeid> expected = new IntMap<Nodeid>(10); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
116 for (int r : revisions) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
117 eh.run("hg", "--debug", "manifest", "--rev", Integer.toString(r)); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
118 for (String l : output.lines(ptrn, 1)) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
119 assertFalse(expected.containsKey(r)); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
120 expected.put(r, Nodeid.fromAscii(l)); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
121 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
122 if (!expected.containsKey(r)) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
123 expected.put(r, Nodeid.NULL); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
124 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
125 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
126 assertEquals(revisions.length, expected.size()); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
127 final Path path = Path.create(fname); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
128 repo.getManifest().walkFileRevisions(path, new HgManifest.Inspector() { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
129 |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
130 private Nodeid expectedNodeid; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
131 private int clogRev; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
132 |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
133 public boolean begin(int mainfestRevision, Nodeid nid, int changelogRevision) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
134 clogRev = changelogRevision; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
135 assertTrue(expected.containsKey(changelogRevision)); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
136 expectedNodeid = expected.get(changelogRevision); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
137 // we walk revisions of specific file, hence can't get into manifest without |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
138 // that file, expectedNodeid should have been reported by `hg manifest`: |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
139 assertTrue(!expectedNodeid.isNull()); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
140 return true; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
141 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
142 |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
143 public boolean next(Nodeid nid, Path fname, Flags flags) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
144 assertEquals(path, fname); // only selected path shall pass |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
145 assertEquals(expectedNodeid, nid); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
146 expected.remove(clogRev); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
147 return true; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
148 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
149 |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
150 public boolean end(int manifestRevision) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
151 return true; |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
152 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
153 |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
154 }, revisions); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
155 for (int r : revisions) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
156 if (expected.containsKey(r)) { |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
157 // Each manifest entry reported by `hg manifest` shall be |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
158 // reported (and removed) by walkFileRevisions(), too. Only null nodeids |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
159 // (revisions where the file was missing) are left |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
160 assertTrue(expected.get(r).isNull()); |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
161 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
162 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
163 } |
|
59b7c817bc4d
Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
457
diff
changeset
|
164 |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
165 |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
166 private void testRevision(int rev) throws Exception { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
167 manifestParser.reset(); |
|
199
f4fa4456fa50
Tip constant has changed, reflected in tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
143
diff
changeset
|
168 eh.run("hg", "manifest", "--debug", "--rev", String.valueOf(rev == TIP ? -1 : rev)); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
169 revisions.clear(); |
|
457
d78cb5ca3053
Get rid of ambiguity in method name
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
427
diff
changeset
|
170 new HgManifestCommand(repo).changeset(rev).execute(handler); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
171 report("manifest " + (rev == TIP ? "TIP:" : "--rev " + rev)); |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
172 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
173 |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
174 private void report(String what) throws Exception { |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
175 final Map<Path, Nodeid> cmdLineResult = new LinkedHashMap<Path, Nodeid>(manifestParser.getResult()); |
|
249
4c3b9f679412
Deprecated HgLogCommand.FileRevision gone, top-level HgFileRevision is bright and shiny replacement
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
199
diff
changeset
|
176 for (HgFileRevision fr : revisions) { |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
177 Nodeid nid = cmdLineResult.remove(fr.getPath()); |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
178 errorCollector.checkThat("Extra " + fr.getPath() + " in Java result", nid, notNullValue()); |
|
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
179 if (nid != null) { |
|
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
180 errorCollector.checkThat("Non-matching nodeid:" + nid, nid, equalTo(fr.getRevision())); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
181 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
182 } |
|
103
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
102
diff
changeset
|
183 errorCollector.checkThat("Non-matched entries from command line:", cmdLineResult, equalTo(Collections.<Path,Nodeid>emptyMap())); |
|
67
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
184 } |
|
64bddc2dcc0e
Tests for manifest cmd
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
185 } |
