package org.tmatesoft.svn.test;
import org.junit.Assert;
import org.junit.Test;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.internal.wc.SVNFileUtil;
import org.tmatesoft.svn.core.wc.SVNStatusType;
import org.tmatesoft.svn.core.wc2.*;
import java.io.File;
import java.util.Map;
public class MiscWorkingCopyTest {
@Test
public void testReplaceDirectory() throws Exception {
final TestOptions options = TestOptions.getInstance();
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testReplaceDirectory", options);
try {
final SVNURL url = sandbox.createSvnRepository();
final CommitBuilder commitBuilder = new CommitBuilder(url);
commitBuilder.addFile("directory/file");
commitBuilder.commit();
final WorkingCopy workingCopy = sandbox.checkoutNewWorkingCopy(url);
final File workingCopyDirectory = workingCopy.getWorkingCopyDirectory();
final File directory = workingCopy.getFile("directory");
final SvnScheduleForRemoval scheduleForRemoval = svnOperationFactory.createScheduleForRemoval();
scheduleForRemoval.setSingleTarget(SvnTarget.fromFile(directory));
scheduleForRemoval.run();
SVNFileUtil.deleteAll(directory, true);
SVNFileUtil.ensureDirectoryExists(directory);
final SvnScheduleForAddition scheduleForAddition = svnOperationFactory.createScheduleForAddition();
scheduleForAddition.setSingleTarget(SvnTarget.fromFile(directory));
scheduleForAddition.run();
final Map<File,SvnStatus> statuses = TestUtil.getStatuses(svnOperationFactory, workingCopyDirectory);
Assert.assertEquals(SVNStatusType.STATUS_NORMAL, statuses.get(workingCopyDirectory).getNodeStatus());
Assert.assertEquals(SVNStatusType.STATUS_REPLACED, statuses.get(directory).getNodeStatus());
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
private String getTestName() {
return "MiscWorkingCopyTest";
}
}