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"; } }