Mercurial > hg4j
annotate test/org/tmatesoft/hg/test/TestManifest.java @ 596:43cfa08ff3fd
HgBlameFacility refactoring: extract code to build file history that spans renames
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 02 May 2013 19:23:53 +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 } |