annotate test/org/tmatesoft/hg/test/TestClone.java @ 709:497e697636fc

Report merged lines as changed block if possible, not as a sequence of added/deleted blocks. To facilitate access to merge parent lines AddBlock got mergeLineAt() method that reports index of the line in the second parent (if any), while insertedAt() has been changed to report index in the first parent always
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 21 Aug 2013 16:23:27 +0200
parents 4a0bab2c6da1
children
rev   line source
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
1 /*
637
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
2 * Copyright (c) 2011-2013 TMate Software Ltd
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
3 *
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
6 * the Free Software Foundation; version 2 of the License.
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
7 *
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
8 * This program is distributed in the hope that it will be useful,
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
11 * GNU General Public License for more details.
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
12 *
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
13 * For information on how to redistribute this software under
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
14 * the terms of a license other than GNU General Public License
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
15 * contact TMate Software at support@hg4j.com
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
16 */
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
17 package org.tmatesoft.hg.test;
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
18
637
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
19 import static org.tmatesoft.hg.internal.RequiresFile.*;
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
20
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
21 import java.io.File;
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
22
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
23 import org.hamcrest.CoreMatchers;
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
24 import org.junit.Rule;
204
883f1efbcf27 Add clone,incoming and outging tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 202
diff changeset
25 import org.junit.Test;
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
26 import org.tmatesoft.hg.core.HgCloneCommand;
637
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
27 import org.tmatesoft.hg.core.HgInitCommand;
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
28 import org.tmatesoft.hg.internal.RepoInitializer;
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
29 import org.tmatesoft.hg.repo.HgRemoteRepository;
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
30
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
31 /**
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
32 *
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
33 * @author Artem Tikhomirov
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
34 * @author TMate Software Ltd.
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
35 */
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
36 public class TestClone {
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
37
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
38 @Rule
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
39 public ErrorCollectorExt errorCollector = new ErrorCollectorExt();
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
40
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
41 public static void main(String[] args) throws Throwable {
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
42 TestClone t = new TestClone();
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
43 t.testSimpleClone();
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
44 t.errorCollector.verify();
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
45 }
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
46
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
47 public TestClone() {
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
48 }
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
49
204
883f1efbcf27 Add clone,incoming and outging tests
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 202
diff changeset
50 @Test
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
51 public void testSimpleClone() throws Exception {
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
52 int x = 0;
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
53 final File tempDir = Configuration.get().getTempDir();
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
54 for (HgRemoteRepository hgRemote : Configuration.get().allRemote()) {
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
55 HgCloneCommand cmd = new HgCloneCommand();
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
56 cmd.source(hgRemote);
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
57 File dest = new File(tempDir, "test-clone-" + x++);
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
58 if (dest.exists()) {
637
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
59 RepoUtils.rmdir(dest);
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
60 }
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
61 cmd.destination(dest);
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
62 cmd.execute();
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
63 verify(hgRemote, dest);
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
64 }
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
65 }
637
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
66
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
67 @Test
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
68 public void testInitEmpty() throws Exception {
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
69 File repoLoc = RepoUtils.createEmptyDir("test-init");
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
70 new HgInitCommand().location(repoLoc).revlogV1().dotencode(false).fncache(false).execute();
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
71
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
72 int requires = new RepoInitializer().initRequiresFromFile(new File(repoLoc, ".hg")).getRequires();
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
73 errorCollector.assertTrue(0 != (requires & REVLOGV1));
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
74 errorCollector.assertTrue(0 != (requires & STORE));
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
75 errorCollector.assertTrue(0 == (requires & DOTENCODE));
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
76 errorCollector.assertTrue(0 == (requires & FNCACHE));
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
77 errorCollector.assertTrue(0 == (requires & REVLOGV0));
4a0bab2c6da1 HgInitCommand: expose repo init functionality
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 204
diff changeset
78 }
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
79
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
80 private void verify(HgRemoteRepository hgRemote, File dest) throws Exception {
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
81 ExecHelper eh = new ExecHelper(new OutputParser.Stub(), dest);
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
82 eh.run("hg", "verify");
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
83 errorCollector.checkThat("Verify", eh.getExitValue(), CoreMatchers.equalTo(0));
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
84 eh.run("hg", "out", hgRemote.getLocation());
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
85 errorCollector.checkThat("Outgoing", eh.getExitValue(), CoreMatchers.equalTo(1));
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
86 eh.run("hg", "in", hgRemote.getLocation());
202
706bcc7cfee4 Basic test for HgIncomingCommand. Fix RepositoryComparator for cases when whole repository is unknown. Respect freshly initialized (empty) repositories in general.
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents: 201
diff changeset
87 errorCollector.checkThat("Incoming", eh.getExitValue(), CoreMatchers.equalTo(1));
201
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
88 }
a736f42ed75b Primitive test for clone command
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff changeset
89 }