tikhomirov@201: /* tikhomirov@637: * Copyright (c) 2011-2013 TMate Software Ltd tikhomirov@201: * tikhomirov@201: * This program is free software; you can redistribute it and/or modify tikhomirov@201: * it under the terms of the GNU General Public License as published by tikhomirov@201: * the Free Software Foundation; version 2 of the License. tikhomirov@201: * tikhomirov@201: * This program is distributed in the hope that it will be useful, tikhomirov@201: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@201: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@201: * GNU General Public License for more details. tikhomirov@201: * tikhomirov@201: * For information on how to redistribute this software under tikhomirov@201: * the terms of a license other than GNU General Public License tikhomirov@201: * contact TMate Software at support@hg4j.com tikhomirov@201: */ tikhomirov@201: package org.tmatesoft.hg.test; tikhomirov@201: tikhomirov@637: import static org.tmatesoft.hg.internal.RequiresFile.*; tikhomirov@637: tikhomirov@201: import java.io.File; tikhomirov@201: tikhomirov@202: import org.hamcrest.CoreMatchers; tikhomirov@201: import org.junit.Rule; tikhomirov@204: import org.junit.Test; tikhomirov@201: import org.tmatesoft.hg.core.HgCloneCommand; tikhomirov@637: import org.tmatesoft.hg.core.HgInitCommand; tikhomirov@637: import org.tmatesoft.hg.internal.RepoInitializer; tikhomirov@201: import org.tmatesoft.hg.repo.HgRemoteRepository; tikhomirov@201: tikhomirov@201: /** tikhomirov@201: * tikhomirov@201: * @author Artem Tikhomirov tikhomirov@201: * @author TMate Software Ltd. tikhomirov@201: */ tikhomirov@201: public class TestClone { tikhomirov@201: tikhomirov@201: @Rule tikhomirov@201: public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); tikhomirov@201: tikhomirov@202: public static void main(String[] args) throws Throwable { tikhomirov@201: TestClone t = new TestClone(); tikhomirov@201: t.testSimpleClone(); tikhomirov@202: t.errorCollector.verify(); tikhomirov@201: } tikhomirov@201: tikhomirov@201: public TestClone() { tikhomirov@201: } tikhomirov@201: tikhomirov@204: @Test tikhomirov@201: public void testSimpleClone() throws Exception { tikhomirov@201: int x = 0; tikhomirov@202: final File tempDir = Configuration.get().getTempDir(); tikhomirov@201: for (HgRemoteRepository hgRemote : Configuration.get().allRemote()) { tikhomirov@201: HgCloneCommand cmd = new HgCloneCommand(); tikhomirov@201: cmd.source(hgRemote); tikhomirov@201: File dest = new File(tempDir, "test-clone-" + x++); tikhomirov@201: if (dest.exists()) { tikhomirov@637: RepoUtils.rmdir(dest); tikhomirov@201: } tikhomirov@201: cmd.destination(dest); tikhomirov@201: cmd.execute(); tikhomirov@201: verify(hgRemote, dest); tikhomirov@201: } tikhomirov@201: } tikhomirov@637: tikhomirov@637: @Test tikhomirov@637: public void testInitEmpty() throws Exception { tikhomirov@637: File repoLoc = RepoUtils.createEmptyDir("test-init"); tikhomirov@637: new HgInitCommand().location(repoLoc).revlogV1().dotencode(false).fncache(false).execute(); tikhomirov@637: tikhomirov@637: int requires = new RepoInitializer().initRequiresFromFile(new File(repoLoc, ".hg")).getRequires(); tikhomirov@637: errorCollector.assertTrue(0 != (requires & REVLOGV1)); tikhomirov@637: errorCollector.assertTrue(0 != (requires & STORE)); tikhomirov@637: errorCollector.assertTrue(0 == (requires & DOTENCODE)); tikhomirov@637: errorCollector.assertTrue(0 == (requires & FNCACHE)); tikhomirov@637: errorCollector.assertTrue(0 == (requires & REVLOGV0)); tikhomirov@637: } tikhomirov@201: tikhomirov@201: private void verify(HgRemoteRepository hgRemote, File dest) throws Exception { tikhomirov@202: ExecHelper eh = new ExecHelper(new OutputParser.Stub(), dest); tikhomirov@201: eh.run("hg", "verify"); tikhomirov@202: errorCollector.checkThat("Verify", eh.getExitValue(), CoreMatchers.equalTo(0)); tikhomirov@201: eh.run("hg", "out", hgRemote.getLocation()); tikhomirov@202: errorCollector.checkThat("Outgoing", eh.getExitValue(), CoreMatchers.equalTo(1)); tikhomirov@201: eh.run("hg", "in", hgRemote.getLocation()); tikhomirov@202: errorCollector.checkThat("Incoming", eh.getExitValue(), CoreMatchers.equalTo(1)); tikhomirov@201: } tikhomirov@201: }