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: 
427diff
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: 
101diff
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: 
102diff
changeset | 19 import static org.hamcrest.CoreMatchers.equalTo; | 
| 
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 20 import static org.hamcrest.CoreMatchers.notNullValue; | 
| 479 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 21 import static org.junit.Assert.*; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
67diff
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: 
102diff
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: 
457diff
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: 
102diff
changeset | 30 import org.junit.Rule; | 
| 101 
777ab7034c1b
Switch to JUnit for tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
95diff
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: 
282diff
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: 
199diff
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: 
133diff
changeset | 34 import org.tmatesoft.hg.core.HgManifestCommand; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
67diff
changeset | 35 import org.tmatesoft.hg.core.Nodeid; | 
| 479 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 36 import org.tmatesoft.hg.internal.IntMap; | 
| 103 
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 37 import org.tmatesoft.hg.repo.HgLookup; | 
| 479 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 38 import org.tmatesoft.hg.repo.HgManifest; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
67diff
changeset | 39 import org.tmatesoft.hg.repo.HgRepository; | 
| 479 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
131diff
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: 
102diff
changeset | 51 @Rule | 
| 
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 52 public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); | 
| 
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
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: 
199diff
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: 
282diff
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: 
199diff
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: 
102diff
changeset | 69 public static void main(String[] args) throws Throwable { | 
| 101 
777ab7034c1b
Switch to JUnit for tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
95diff
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: 
457diff
changeset | 74 tm.testWalkFileRevisions(); | 
| 103 
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
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: 
95diff
changeset | 77 | 
| 
777ab7034c1b
Switch to JUnit for tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
95diff
changeset | 78 public TestManifest() throws Exception { | 
| 
777ab7034c1b
Switch to JUnit for tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
95diff
changeset | 79 this(new HgLookup().detectFromWorkingDir()); | 
| 
777ab7034c1b
Switch to JUnit for tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
95diff
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: 
95diff
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: 
103diff
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: 
249diff
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: 
95diff
changeset | 87 | 
| 
777ab7034c1b
Switch to JUnit for tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
95diff
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: 
95diff
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: 
95diff
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: 
457diff
changeset | 106 | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 107 @Test | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 108 public void testWalkFileRevisions() throws Exception { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
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: 
457diff
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: 
457diff
changeset | 112 OutputParser.Stub output = new OutputParser.Stub(); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 113 ExecHelper eh = new ExecHelper(output, repo.getWorkingDir()); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
changeset | 115 final IntMap<Nodeid> expected = new IntMap<Nodeid>(10); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 116 for (int r : revisions) { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
changeset | 118 for (String l : output.lines(ptrn, 1)) { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 119 assertFalse(expected.containsKey(r)); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 120 expected.put(r, Nodeid.fromAscii(l)); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 121 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 122 if (!expected.containsKey(r)) { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 123 expected.put(r, Nodeid.NULL); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 124 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 125 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 126 assertEquals(revisions.length, expected.size()); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 127 final Path path = Path.create(fname); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 128 repo.getManifest().walkFileRevisions(path, new HgManifest.Inspector() { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 129 | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 130 private Nodeid expectedNodeid; | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 131 private int clogRev; | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 132 | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
changeset | 134 clogRev = changelogRevision; | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 135 assertTrue(expected.containsKey(changelogRevision)); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 136 expectedNodeid = expected.get(changelogRevision); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
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: 
457diff
changeset | 139 assertTrue(!expectedNodeid.isNull()); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 140 return true; | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 141 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 142 | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
changeset | 144 assertEquals(path, fname); // only selected path shall pass | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 145 assertEquals(expectedNodeid, nid); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 146 expected.remove(clogRev); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 147 return true; | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 148 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 149 | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 150 public boolean end(int manifestRevision) { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 151 return true; | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 152 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 153 | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 154 }, revisions); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 155 for (int r : revisions) { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 156 if (expected.containsKey(r)) { | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
457diff
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: 
457diff
changeset | 159 // (revisions where the file was missing) are left | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 160 assertTrue(expected.get(r).isNull()); | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 161 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 162 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
changeset | 163 } | 
| 
59b7c817bc4d
Methods from Main graduated as tests
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
457diff
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: 
143diff
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: 
427diff
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: 
199diff
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: 
102diff
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: 
102diff
changeset | 179 if (nid != null) { | 
| 
0b2dcca7de9f
ErrorCollector in tests to grab multiple errors
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
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: 
102diff
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 } | 
