tikhomirov@203: /* tikhomirov@203: * Copyright (c) 2011 TMate Software Ltd tikhomirov@203: * tikhomirov@203: * This program is free software; you can redistribute it and/or modify tikhomirov@203: * it under the terms of the GNU General Public License as published by tikhomirov@203: * the Free Software Foundation; version 2 of the License. tikhomirov@203: * tikhomirov@203: * This program is distributed in the hope that it will be useful, tikhomirov@203: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@203: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@203: * GNU General Public License for more details. tikhomirov@203: * tikhomirov@203: * For information on how to redistribute this software under tikhomirov@203: * the terms of a license other than GNU General Public License tikhomirov@203: * contact TMate Software at support@hg4j.com tikhomirov@203: */ tikhomirov@203: package org.tmatesoft.hg.test; tikhomirov@203: tikhomirov@203: import java.io.File; tikhomirov@203: import java.io.FileWriter; tikhomirov@203: import java.io.IOException; tikhomirov@203: import java.util.List; tikhomirov@203: tikhomirov@203: import org.junit.Assert; tikhomirov@203: import org.junit.Rule; tikhomirov@203: import org.junit.Test; tikhomirov@203: import org.tmatesoft.hg.core.HgLogCommand; tikhomirov@203: import org.tmatesoft.hg.core.HgOutgoingCommand; tikhomirov@203: import org.tmatesoft.hg.core.Nodeid; tikhomirov@203: import org.tmatesoft.hg.repo.HgLookup; tikhomirov@203: import org.tmatesoft.hg.repo.HgRemoteRepository; tikhomirov@203: tikhomirov@203: /** tikhomirov@203: * tikhomirov@203: * @author Artem Tikhomirov tikhomirov@203: * @author TMate Software Ltd. tikhomirov@203: */ tikhomirov@203: public class TestOutgoing { tikhomirov@203: tikhomirov@203: @Rule tikhomirov@203: public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); tikhomirov@203: tikhomirov@203: public static void main(String[] args) throws Throwable { tikhomirov@203: Configuration.get().remoteServers("http://localhost:8000/"); tikhomirov@203: TestOutgoing t = new TestOutgoing(); tikhomirov@203: t.testSimple(); tikhomirov@203: t.errorCollector.verify(); tikhomirov@203: } tikhomirov@203: tikhomirov@203: public TestOutgoing() { tikhomirov@203: } tikhomirov@203: tikhomirov@203: @Test tikhomirov@203: public void testSimple() throws Exception { tikhomirov@203: int x = 0; tikhomirov@203: HgLookup lookup = new HgLookup(); tikhomirov@203: for (HgRemoteRepository hgRemote : Configuration.get().allRemote()) { tikhomirov@203: File dest = TestIncoming.createEmptyDir("test-outgoing-" + x++); tikhomirov@203: ExecHelper eh0 = new ExecHelper(new OutputParser.Stub(false), null); tikhomirov@203: eh0.run("hg", "clone", hgRemote.getLocation(), dest.toString()); tikhomirov@203: eh0.cwd(dest); tikhomirov@203: Assert.assertEquals("initial clone failed", 0, eh0.getExitValue()); tikhomirov@203: HgOutgoingCommand cmd = new HgOutgoingCommand(lookup.detect(dest)).against(hgRemote); tikhomirov@203: LogOutputParser outParser = new LogOutputParser(true); tikhomirov@203: ExecHelper eh = new ExecHelper(outParser, dest); tikhomirov@203: HgLogCommand.CollectHandler collector = new HgLogCommand.CollectHandler(); tikhomirov@203: // tikhomirov@203: cmd.executeFull(collector); tikhomirov@215: List liteResult = cmd.executeLite(); tikhomirov@203: eh.run("hg", "outgoing", "--debug", hgRemote.getLocation()); tikhomirov@203: TestIncoming.report(collector, outParser, liteResult, errorCollector); tikhomirov@203: // tikhomirov@203: File f = new File(dest, "Test.txt"); tikhomirov@203: append(f, "1"); tikhomirov@203: eh0.run("hg", "add"); tikhomirov@203: eh0.run("hg", "commit", "-m", "1"); tikhomirov@203: append(f, "2"); tikhomirov@203: eh0.run("hg", "commit", "-m", "2"); tikhomirov@203: // tikhomirov@203: cmd = new HgOutgoingCommand(lookup.detect(dest)).against(hgRemote); tikhomirov@203: cmd.executeFull(collector = new HgLogCommand.CollectHandler()); tikhomirov@215: liteResult = cmd.executeLite(); tikhomirov@203: outParser.reset(); tikhomirov@203: eh.run("hg", "outgoing", "--debug", hgRemote.getLocation()); tikhomirov@203: TestIncoming.report(collector, outParser, liteResult, errorCollector); tikhomirov@203: } tikhomirov@203: } tikhomirov@203: tikhomirov@203: static void append(File f, String s) throws IOException { tikhomirov@203: FileWriter fw = new FileWriter(f); tikhomirov@203: fw.append(s); tikhomirov@203: fw.close(); tikhomirov@203: } tikhomirov@203: }