annotate test/org/tmatesoft/hg/test/TestCatCommand.java @ 677:1c49c0cee540

Report line number at the first appearance, like 'hg annotate -l' does
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 18 Jul 2013 18:47:45 +0200
parents 59b7c817bc4d
children b286222158be
rev   line source
479
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
1 /*
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
2 * Copyright (c) 2012 TMate Software Ltd
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
3 *
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
6 * the Free Software Foundation; version 2 of the License.
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
7 *
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
8 * This program is distributed in the hope that it will be useful,
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
11 * GNU General Public License for more details.
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
12 *
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
13 * For information on how to redistribute this software under
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
14 * the terms of a license other than GNU General Public License
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
15 * contact TMate Software at support@hg4j.com
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
16 */
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
17 package org.tmatesoft.hg.test;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
18
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
19 import static org.junit.Assert.*;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
20
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
21 import org.junit.Test;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
22 import org.tmatesoft.hg.core.HgCatCommand;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
23 import org.tmatesoft.hg.core.HgChangesetFileSneaker;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
24 import org.tmatesoft.hg.core.Nodeid;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
25 import org.tmatesoft.hg.internal.ByteArrayChannel;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
26 import org.tmatesoft.hg.repo.HgLookup;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
27 import org.tmatesoft.hg.repo.HgRepository;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
28 import org.tmatesoft.hg.util.Path;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
29
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
30 /**
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
31 *
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
32 * @author Artem Tikhomirov
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
33 * @author TMate Software Ltd.
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
34 */
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
35 public class TestCatCommand {
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
36
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
37 private final HgRepository repo;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
38
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
39 public TestCatCommand() throws Exception {
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
40 repo = new HgLookup().detectFromWorkingDir();
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
41 }
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
42
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
43 @Test
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
44 public void testCatAtCsetRevision() throws Exception {
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
45 HgCatCommand cmd = new HgCatCommand(repo);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
46 final Path file = Path.create("src/org/tmatesoft/hg/internal/RevlogStream.java");
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
47 cmd.file(file);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
48 final Nodeid cset = Nodeid.fromAscii("08db726a0fb7914ac9d27ba26dc8bbf6385a0554");
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
49 cmd.changeset(cset);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
50 final ByteArrayChannel sink = new ByteArrayChannel();
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
51 cmd.execute(sink);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
52 final int result1 = sink.toArray().length;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
53 HgChangesetFileSneaker i = new HgChangesetFileSneaker(repo);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
54 boolean result = i.changeset(cset).checkExists(file);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
55 assertFalse(result);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
56 assertFalse(i.exists());
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
57 result = i.followRenames(true).checkExists(file);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
58 assertTrue(result);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
59 assertTrue(i.exists());
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
60 HgCatCommand cmd2 = new HgCatCommand(repo).revision(i.getFileRevision());
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
61 final ByteArrayChannel sink2 = new ByteArrayChannel();
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
62 cmd2.execute(sink2);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
63 final int result2 = sink2.toArray().length;
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
64 assertEquals(result1, result2);
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
65 }
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
66
59b7c817bc4d Methods from Main graduated as tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
67 }