blob: 0d012b129dd5fb86718e0ed8a8a46f15cb7bfc07 [file] [log] [blame]
package org.eclipse.team.tests.ccvs.core.compatible;
/*
* (c) Copyright IBM Corp. 2000, 2002.
* All Rights Reserved.
*/
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.team.tests.ccvs.core.JUnitTestCase;
public class ConflictTest extends JUnitTestCase {
SameResultEnv env1;
SameResultEnv env2;
public ConflictTest() {
this(null);
}
public ConflictTest(String arg) {
super(arg);
env1 = new SameResultEnv(arg + "checkout1");
env2 = new SameResultEnv(arg + "checkout2");
}
public void setUp() throws Exception {
env1.setUp();
env2.setUp();
// Set the project to the content we need ...
env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt"});
env2.deleteFile("proj2");
}
public void tearDown() throws Exception {
env1.tearDown();
env2.tearDown();
}
public static Test suite() {
TestSuite suite = new TestSuite(ConflictTest.class);
//return new CompatibleTestSetup(new ConflictTest("testSimpleConflict"));
return new CompatibleTestSetup(suite);
}
public void testSimpleConflict() throws Exception {
// Download content in two locations
env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
// change the file in both directories in a different way
env1.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt This" });
env2.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt That" });
// commit changes of the first
env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
// load the changes into the changed file
// and submit the merge
env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},"");
// commit must fail because we have a merged conflict which has not been
// edited.
env2.setIgnoreExceptions(true);
env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
env2.setIgnoreExceptions(false);
// Make a change to the file in order to let the cvs-client know
// that we solved the confilict
env2.appendToFile("proj2/f1/c.txt", new String[] { "That's allright" });
env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
}
public void testMergedUpdate() throws Exception {
// Download content in two locations
env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},"");
// change the file in both directories in a different way so that
// can be merged without conflicts
env1.prefixToFile("proj2/f1/c.txt", new String[] { "AppendIt at top" });
env2.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt at bottom" });
// commit changes of the first
env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
// changes should be merged
env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},"");
env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},"");
}
}