package org.tmatesoft.svn.test;
import java.io.File;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Test;
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.internal.wc.SVNFileUtil;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc2.SvnOperationFactory;
import org.tmatesoft.svn.core.wc2.SvnRevert;
import org.tmatesoft.svn.core.wc2.SvnTarget;
public class SvnRevertMissingDirectoriesTest {
@Test
public void testRevertMissingDirectories() throws Exception {
Assume.assumeTrue(TestUtil.isNewWorkingCopyTest());
final TestOptions options = TestOptions.getInstance();
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testRevertMissingDirectories", 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, SVNRevision.HEAD.getNumber());
final File workingCopyDirectory = workingCopy.getWorkingCopyDirectory();
final File directory = new File(workingCopyDirectory, "directory");
final File file = new File(directory, "file");
SVNFileUtil.deleteAll(directory, true);
final SvnRevert revert = svnOperationFactory.createRevert();
revert.setDepth(SVNDepth.INFINITY);
revert.setSingleTarget(SvnTarget.fromFile(directory));
// revert.setRevertMissingDirectories(true); for 1.7 the value is ignored, missing directories are always reverted
revert.run();
Assert.assertTrue(file.isFile());
} finally {
sandbox.dispose();
svnOperationFactory.dispose();
}
}
private String getTestName() {
return "SvnRevertMissingDirectoriesTest";
}
}