cvs/testSource/com/intellij/cvsSupport2/UpdateInfoTest.java (440 lines of code) (raw):
package com.intellij.cvsSupport2;
import com.intellij.cvsSupport2.actions.update.UpdateSettings;
import com.intellij.cvsSupport2.config.CvsConfiguration;
import com.intellij.cvsSupport2.config.DateOrRevisionSettings;
import com.intellij.cvsSupport2.cvshandlers.CvsUpdatePolicy;
import com.intellij.cvsSupport2.cvsoperations.cvsRemove.RemoveFilesOperation;
import com.intellij.cvsSupport2.cvsstatuses.CvsStatusProvider;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.openapi.vcs.FileStatusManager;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.update.FileGroup;
import com.intellij.openapi.vcs.update.UpdatedFiles;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import org.netbeans.lib.cvsclient.command.KeywordSubstitution;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
/**
* author: lesya
*/
public class UpdateInfoTest extends CvsTestsWorkingWithImportedProject {
private final TestFile myUpdated = TestFile.createInProject("updated.txt");
private final TestFile myNotChanged = TestFile.createInProject("notChanged.txt");
private final TestFile myCreated = TestFile.createInProject("created.txt");
private final TestFile myRemovedFromServer = TestFile.createInProject("removedFromServer.txt");
private final TestFile myUnknown = TestFile.createInProject("unknown.txt");
private final TestFile myIgnored = TestFile.createInProject("ignored.txt");
private final TestFile myModified = TestFile.createInProject("modified.txt");
private final TestFile myLocallyAdded = TestFile.createInProject("locallyAdded.txt");
private final TestFile myLocallyRemoved = TestFile.createInProject("locallyRemoved.txt");
private final TestFile myMergedWithConflict = TestFile.createInProject("mergedWithConflict.txt");
private final TestFile myMerged = TestFile.createInProject("merged.txt");
private final TestFile myRemovedFromServerConflict = TestFile.createInProject("myRemovedFromServerConflict.txt");
private final TestFile myRemovedLocallyConflict = TestFile.createInProject("myRemovedLocallyConflict.txt");
private final TestFile myRemovedFromFileSystem = TestFile.createInProject("removedFromFileSystem.txt");
private final TestFile myBinaryShouldBeMerged = TestFile.createInProject("binaryShouldBeMerged.txt");
private static final String BRANCH_NAME = "branch";
public void test() throws Exception {
addFiles();
makeChanges(null);
UpdatedFiles updatedFiles = updateProject();
refreshFileSystem();
checkResults(updatedFiles);
checkResultsAfterMakeChanges(updatedFiles);
}
public void testUpdateDoNotMakeChanges() throws Exception {
addFiles();
makeChanges(null);
assertEquals(FileStatus.MODIFIED,
CvsStatusProvider.getStatus(myNotChanged.getVirtualFile()));
myUpdateSettings = UpdateSettings.DONT_MAKE_ANY_CHANGES;
UpdatedFiles updatedFiles = updateProject();
refreshFileSystem();
checkResults(updatedFiles);
checkResultsAfterDontMakeChanges(updatedFiles);
FileStatusManager.getInstance(myProject).fileStatusesChanged();
//assertEquals(FileStatus.NOT_CHANGED,
// CvsStatusProvider.getStatus(myNotChanged.getVirtualFile()));
}
public void testCreatedBySecondParty() throws Exception {
TestFile createdBySecondParty = TestFile.createInProject("file.txt");
addLocally(createdBySecondParty);
checkoutToAnotherLocation();
createOnServer(createdBySecondParty);
UpdatedFiles updatedFiles = updateProject();
refreshFileSystem();
checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.CREATED_BY_SECOND_PARTY_ID), createdBySecondParty, FileStatus.ADDED);
}
public void testMergeUnmodifiedFileWithBranch() throws Exception {
TestFile testFile = TestFile.createInProject("test.txt");
String initialContent = "1111\n2222\n3333\n";
testFile.changeContentTo(initialContent);
refreshFileSystem();
testFile.addToVcs(myVcs);
refreshFileSystem();
commitTransaction("");
refreshFileSystem();
createBranch(BRANCH_NAME);
setWorkingTag(BRANCH_NAME);
checkoutToAnotherLocation();
TestFile file = getInAnotherLocation(testFile);
String mergedContent = "1111\n2222\n4444\n3333\n";
file.changeContentTo(mergedContent);
refreshFileSystem();
checkinFile(file);
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_WITH_BRANCH;
myConfiguration.MERGE_WITH_BRANCH1_NAME = BRANCH_NAME;
setWorkingTag(null);
assertEquals(initialContent, testFile.getContent());
UpdatedFiles updatedFiles = updateProject();
assertEquals(mergedContent, testFile.getContent());
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), testFile, FileStatus.MERGE);
}
public void testMergeModifiedFileWithBranch() throws Exception {
TestFile testFile = TestFile.createInProject("test.txt");
String initialContent = "1111\n2222\n3333\n";
testFile.changeContentTo(initialContent);
refreshFileSystem();
testFile.addToVcs(myVcs);
refreshFileSystem();
commitTransaction("");
refreshFileSystem();
createBranch(BRANCH_NAME);
setWorkingTag(BRANCH_NAME);
checkoutToAnotherLocation();
TestFile file = getInAnotherLocation(testFile);
String mergedContent = "1111\n2222\n4444\n3333\n";
file.changeContentTo(mergedContent);
refreshFileSystem();
checkinFile(file);
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_WITH_BRANCH;
myConfiguration.MERGE_WITH_BRANCH1_NAME = BRANCH_NAME;
setWorkingTag(null);
assertEquals(initialContent, testFile.getContent());
Thread.sleep(1000);
testFile.changeContentTo("0000\n1111\n2222\n3333\n");
UpdatedFiles updatedFiles = updateProject();
assertEquals("0000\n1111\n2222\n4444\n3333\n", testFile.getContent());
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), testFile, FileStatus.MERGE);
}
public void testMergeCommittedFileWithBranch() throws Exception {
TestFile testFile = TestFile.createInProject("test.txt");
String initialContent = "1111\n2222\n3333\n";
testFile.changeContentTo(initialContent);
refreshFileSystem();
testFile.addToVcs(myVcs);
refreshFileSystem();
commitTransaction("");
refreshFileSystem();
createBranch(BRANCH_NAME);
String committedContent = "0000\n1111\n2222\n4444\n3333\n";
testFile.changeContentTo(committedContent);
checkinFile(testFile);
setWorkingTag(BRANCH_NAME);
checkoutToAnotherLocation();
TestFile file = getInAnotherLocation(testFile);
String mergedContent = "1111\n2222\n4444\n3333\n";
file.changeContentTo(mergedContent);
refreshFileSystem();
checkinFile(file);
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_WITH_BRANCH;
myConfiguration.MERGE_WITH_BRANCH1_NAME = BRANCH_NAME;
setWorkingTag(null);
assertEquals(committedContent, testFile.getContent());
UpdatedFiles updatedFiles = updateProject();
assertEquals("0000\n1111\n2222\n4444\n3333\n", testFile.getContent());
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), testFile, FileStatus.MERGE);
}
public void testMergeTwoBranchesIntoThirdOne() throws Exception {
UpdatedFiles updatedFiles = performMergeBranchesTest("branch1", "branch2", "branch3", "branch2");
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), new TestFile[]{myUpdated}, FileStatus.MERGE);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.CREATED_ID), myCreated, FileStatus.ADDED);
}
public void testMergeTwoBranches() throws Exception {
UpdatedFiles updatedFiles = performMergeBranchesTest("branch1", "branch2", null, "branch2");
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), new TestFile[]{myUpdated}, FileStatus.MERGE);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.CREATED_ID), myCreated, FileStatus.ADDED);
}
public void testUpdateIntoAnotherBranch() throws Exception {
UpdatedFiles updatedFiles = performMergeBranchesTest(null, null, "branch3", "branch3");
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.UPDATED_ID), new TestFile[]{myUpdated}, FileStatus.NOT_CHANGED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.CREATED_ID), myCreated, FileStatus.NOT_CHANGED);
}
public void testGetMergeInformationForModifiedFile() throws Exception {
addFile(myMergedWithConflict);
createBranch("branch1");
createBranch("branch2");
createBranch("branch3");
createBranch("branch4");
changeContentInBranch("branch1", myMergedWithConflict);
changeContentInBranch("branch2", myMergedWithConflict);
changeContentInBranch("branch3", myMergedWithConflict);
changeContentInBranch("branch4", myMergedWithConflict);
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.USE_BRANCH = true;
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.BRANCH = "branch3";
updateProject();
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_TWO_BRANCHES;
myConfiguration.MERGE_WITH_BRANCH1_NAME = "branch1";
myConfiguration.MERGE_WITH_BRANCH2_NAME = "branch2";
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.USE_BRANCH = true;
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.BRANCH = "branch4";
Thread.sleep(3000);
myMergedWithConflict.changeContentTo(myMergedWithConflict.getContent() + "(changed content)");
updateProject();
List<String> versions = CvsUtil.getAllRevisionsForFile(myMergedWithConflict.getVirtualFile());
assertEquals(Arrays.asList("1.1.6.1", "1.1.6.1", "1.1.8.1", "1.1.2.1", "1.1.4.1"),
versions);
assertEquals(new String(CvsUtil.getStoredContentForFile(myMergedWithConflict.getVirtualFile()), StandardCharsets.UTF_8),
"content from\n branch3\n(changed content)");
}
public void testGetMergeInformationForNonModifiedFile() throws Exception {
addFile(myMergedWithConflict);
createBranch("branch1");
createBranch("branch2");
createBranch("branch3");
createBranch("branch4");
changeContentInBranch("branch1", myMergedWithConflict);
changeContentInBranch("branch2", myMergedWithConflict);
changeContentInBranch("branch3", myMergedWithConflict);
changeContentInBranch("branch4", myMergedWithConflict);
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.USE_BRANCH = true;
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.BRANCH = "branch3";
updateProject();
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_TWO_BRANCHES;
myConfiguration.MERGE_WITH_BRANCH1_NAME = "branch1";
myConfiguration.MERGE_WITH_BRANCH2_NAME = "branch2";
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.USE_BRANCH = true;
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.BRANCH = "branch4";
updateProject();
}
public void testSimpleBranch() throws Exception {
addFile(myMergedWithConflict);
createBranch("branch1");
changeContentInBranch("branch1", myMergedWithConflict);
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_WITH_BRANCH;
myConfiguration.MERGE_WITH_BRANCH1_NAME = "branch1";
updateProject();
List<String> versions = CvsUtil.getAllRevisionsForFile(myMergedWithConflict.getVirtualFile());
assertEquals(Arrays.asList("1.1", "1.1", "1.1.2.1"),
versions);
}
public void testSimpleBranchForModifiedFile() throws Exception {
addFile(myMergedWithConflict);
createBranch("branch1");
changeContentInBranch("branch1", myMergedWithConflict);
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_WITH_BRANCH;
myConfiguration.MERGE_WITH_BRANCH1_NAME = "branch1";
Thread.sleep(3000);
myMergedWithConflict.changeContentTo(myMergedWithConflict.getContent() + "(changed content)");
updateProject();
List<String> versions = CvsUtil.getAllRevisionsForFile(myMergedWithConflict.getVirtualFile());
assertEquals(Arrays.asList("1.1", "1.1", "1.1.2.1"),
versions);
}
private void changeContentInBranch(String branchName, TestFile fileToChangeContentIn) throws Exception {
setWorkingTag(branchName);
checkoutToAnotherLocation();
TestFile file = getInAnotherLocation(fileToChangeContentIn);
file.changeContentTo("content from\n " + branchName + "\n");
refreshFileSystem();
assertNotNull(LocalFileSystem.getInstance().findFileByIoFile(file));
checkinFile(file);
}
private UpdatedFiles performMergeBranchesTest(String branch1, String branch2, String branch3, String branchToMakeChangesIn) throws Exception {
addFile(myRemovedFromServerConflict);
addFile(myUpdated);
addFile(myNotChanged);
addFile(myRemovedFromServer);
addFile(myModified);
addFile(myMergedWithConflict);
//addFile(myMerged);
//addFile(myRemovedLocallyConflict);
addFile(myLocallyRemoved);
addFile(myRemovedFromFileSystem);
addFile(myBinaryShouldBeMerged, KeywordSubstitution.BINARY);
createBranch(branch1);
createBranch(branch2);
createBranch(branch3);
myIgnored.createInProject();
setWorkingTag(branchToMakeChangesIn);
checkoutToAnotherLocation();
checkinFile(myUpdated);
changeOnServer(myUpdated);
removeOnServer(myRemovedFromServer);
// //changeOnServerAndRemoveLocally(myRemovedLocallyConflict);
modify(myModified);
changeContentToProvideMergingWithConflict(myMergedWithConflict);
//changeContentToProvideMergingWithoutConflict(myMerged);
changeContentToProvideMergingWithoutConflict(myBinaryShouldBeMerged);
createInProject(myUnknown);
createOnServer(myCreated);
modifyAndRemoveFromServer(myRemovedFromServerConflict);
addLocally(myLocallyAdded);
removeLocally(myLocallyRemoved);
LOG.assertTrue(myRemovedFromFileSystem.delete());
refreshFileSystem();
CvsUtil.ignoreFile(myIgnored.getVirtualFile());
refreshFileSystem();
CvsUtil.ignoreFile(TestFile.createInProject(".cvsignore").getVirtualFile());
myNotChanged.setLastModified(myNotChanged.lastModified() + 10000);
refreshFileSystem();
setWorkingTag(null);
if (branch1 == null){
myConfiguration.MERGING_MODE = CvsConfiguration.DO_NOT_MERGE;
} else if (branch2 == null) {
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_WITH_BRANCH;
} else {
myConfiguration.MERGING_MODE = CvsConfiguration.MERGE_TWO_BRANCHES;
}
myConfiguration.MERGE_WITH_BRANCH1_NAME = branch1;
myConfiguration.MERGE_WITH_BRANCH2_NAME = branch2;
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS = new DateOrRevisionSettings();
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.USE_BRANCH = true;
myConfiguration.UPDATE_DATE_OR_REVISION_SETTINGS.BRANCH = branch3;
UpdatedFiles updatedFiles = updateProject();
refreshFileSystem();
checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.MODIFIED_REMOVED_FROM_SERVER_ID), myRemovedFromServerConflict,
FileStatus.MODIFIED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.REMOVED_FROM_REPOSITORY_ID), myRemovedFromServer, null);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_WITH_CONFLICT_ID), myMergedWithConflict, FileStatus.MERGED_WITH_CONFLICTS);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MODIFIED_ID), myModified, FileStatus.MODIFIED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.UNKNOWN_ID), myUnknown, FileStatus.UNKNOWN);
//checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.LOCALLY_REMOVED_MODIFIED_ON_SERVER_ID), myRemovedLocallyConflict,
// FileStatus.DELETED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.LOCALLY_ADDED_ID), myLocallyAdded, FileStatus.ADDED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.LOCALLY_REMOVED_ID), myLocallyRemoved, FileStatus.DELETED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.RESTORED_ID), myRemovedFromFileSystem, FileStatus.NOT_CHANGED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_WITH_CONFLICT_ID), myMergedWithConflict,
FileStatus.MERGED_WITH_CONFLICTS);
checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.BINARY_MERGED_ID), myBinaryShouldBeMerged,
FileStatus.MERGE);
return updatedFiles;
}
private void makeChanges(String tagName) throws Exception {
myIgnored.createInProject();
setWorkingTag(tagName);
checkoutToAnotherLocation();
changeOnServer(myUpdated);
changeOnServerAndRemoveLocally(myRemovedLocallyConflict);
removeOnServer(myRemovedFromServer);
modify(myModified);
changeContentToProvideMergingWithConflict(myMergedWithConflict);
changeContentToProvideMergingWithoutConflict(myMerged);
changeContentToProvideMergingWithoutConflict(myBinaryShouldBeMerged);
createInProject(myUnknown);
createOnServer(myCreated);
modifyAndRemoveFromServer(myRemovedFromServerConflict);
addLocally(myLocallyAdded);
removeLocally(myLocallyRemoved);
LOG.assertTrue(myRemovedFromFileSystem.delete());
refreshFileSystem();
CvsUtil.ignoreFile(myIgnored.getVirtualFile());
refreshFileSystem();
CvsUtil.ignoreFile(TestFile.createInProject(".cvsignore").getVirtualFile());
myNotChanged.setLastModified(myNotChanged.lastModified() + 10000);
refreshFileSystem();
}
private void addFiles() throws IOException, VcsException {
addFile(myUpdated);
addFile(myNotChanged);
addFile(myRemovedFromServer);
addFile(myModified);
addFile(myMergedWithConflict);
addFile(myMerged);
addFile(myRemovedFromServerConflict);
addFile(myRemovedLocallyConflict);
addFile(myLocallyRemoved);
addFile(myRemovedFromFileSystem);
addFile(myBinaryShouldBeMerged, KeywordSubstitution.BINARY);
}
private void changeOnServerAndRemoveLocally(TestFile removedLocallyConflict) throws Exception {
changeOnServer(removedLocallyConflict);
RemoveFilesOperation operation = new RemoveFilesOperation();
operation.addFile(removedLocallyConflict.getAbsolutePath());
removedLocallyConflict.deleteFromFileSystem();
execute(operation);
}
private void checkResultsAfterMakeChanges(UpdatedFiles updatedFiles) throws IOException {
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.REMOVED_FROM_REPOSITORY_ID), myRemovedFromServer, FileStatus.UNKNOWN);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), myMerged, FileStatus.MERGE);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_WITH_CONFLICT_ID), myMergedWithConflict,
FileStatus.MERGED_WITH_CONFLICTS);
checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.BINARY_MERGED_ID), myBinaryShouldBeMerged,
FileStatus.MERGE);
}
private void checkResultsAfterDontMakeChanges(UpdatedFiles updatedFiles) throws IOException {
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.REMOVED_FROM_REPOSITORY_ID), myRemovedFromServer, FileStatus.NOT_CHANGED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_ID), myMerged, FileStatus.MODIFIED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MERGED_WITH_CONFLICT_ID), myMergedWithConflict, FileStatus.MODIFIED);
}
private void checkResults(UpdatedFiles updatedFiles) throws IOException {
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.CREATED_ID), myCreated, FileStatus.NOT_CHANGED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.UPDATED_ID), myUpdated, FileStatus.NOT_CHANGED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.MODIFIED_ID), myModified, FileStatus.MODIFIED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.UNKNOWN_ID), myUnknown, FileStatus.UNKNOWN);
checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.MODIFIED_REMOVED_FROM_SERVER_ID), myRemovedFromServerConflict,
FileStatus.MODIFIED);
checkGroupContainsOf(updatedFiles.getGroupById(CvsUpdatePolicy.LOCALLY_REMOVED_MODIFIED_ON_SERVER_ID), myRemovedLocallyConflict,
FileStatus.DELETED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.LOCALLY_ADDED_ID), myLocallyAdded, FileStatus.ADDED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.LOCALLY_REMOVED_ID), myLocallyRemoved, FileStatus.DELETED);
checkGroupContainsOf(updatedFiles.getGroupById(FileGroup.RESTORED_ID), myRemovedFromFileSystem, FileStatus.NOT_CHANGED);
}
private void modifyAndRemoveFromServer(TestFile removedFromServerConflict) throws VcsException, IOException {
TestFile file = getInAnotherLocation(removedFromServerConflict);
file.deleteFromFileSystem();
myVcs.getStandardOperationsProvider().removeFile(file.getAbsolutePath(), null, null);
commitTransaction();
removedFromServerConflict.changeContentTo("111");
removedFromServerConflict.setLastModified(10000);
}
private void createOnServer(TestFile created) throws VcsException, IOException {
TestFile file = getInAnotherLocation(created);
file.createInProject();
file.addToVcs(myVcs);
commitTransaction();
}
private static void createInProject(TestFile unknown) throws IOException {
unknown.createInProject();
}
private void changeContentToProvideMergingWithoutConflict(TestFile merged) throws Exception {
String beforeMerge = "1111\n2222\n3333\n4444\n5555\n";
TestFile file = getInAnotherLocation(merged);
file.changeContentTo(beforeMerge);
checkinFile(file);
updateFile(merged);
file.changeContentTo(beforeMerge + "6666\n");
checkinFile(file);
merged.changeContentTo("2222\n3333\n4444\n5555\n6666\n");
merged.setLastModified(10000);
}
private void changeContentToProvideMergingWithConflict(TestFile mergedWithConflict) throws IOException, VcsException {
TestFile file = getInAnotherLocation(mergedWithConflict);
file.changeContentTo("another content");
checkinFile(file);
mergedWithConflict.changeContentTo("local content");
}
private static void modify(TestFile modified) throws IOException{
modified.changeContentTo("modified");
modified.setLastModified(10000);
}
private void changeOnServer(TestFile updated) throws Exception {
TestFile file = getInAnotherLocation(updated);
file.changeContentTo("another content");
checkinFile(file);
}
private void checkinFile(TestFile file) throws VcsException {
myVcs.getStandardOperationsProvider().checkinFile(file.getAbsolutePath(), null, null);
commitTransaction();
}
private UpdatedFiles updateProject() throws Exception {
return updateProjectDirectory();
}
private static void checkGroupContainsOf(FileGroup group, TestFile[] files, FileStatus status) throws IOException {
Collection filesFromGroup = group.getFiles();
assertEquals(filesFromGroup.toString(), files.length, filesFromGroup.size());
for (TestFile file : files) {
assertTrue(filesFromGroup.contains(file.getCanonicalPath()));
VirtualFile virtualFile = file.getVirtualFile();
if (virtualFile != null) {
assertEquals(status, CvsStatusProvider.getStatus(virtualFile));
}
}
}
private static void checkGroupContainsOf(FileGroup group, TestFile file, FileStatus status) throws IOException {
checkGroupContainsOf(group, new TestFile[]{file}, status);
}
}