package org.tmatesoft.svn.test; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.io.ISVNEditor; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; public class ExceptionsHandlingTest { @Test public void testConnectionIsClosedOnOutOfDateError() throws Exception { //SVNKIT-348 final TestOptions options = TestOptions.getInstance(); final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testConnectionIsClosedOnOutOfDateError", options); try { final SVNURL url = sandbox.createSvnRepository(); //let's add a file final CommitBuilder commitBuilder = new CommitBuilder(url); commitBuilder.addFile("file"); commitBuilder.commit(); //now let's "remove" it using wrong revisions final SVNRepository svnRepository = SVNRepositoryFactory.create(url); try { final ISVNEditor editor = svnRepository.getCommitEditor("Commit message", null); editor.openRoot(0); // <-- the revision is wrong because it contains no file try { editor.openFile("file", 0); // <-- delete non-existing file Assert.fail("An exception should be thrown"); } catch (SVNException e) { editor.abortEdit(); //expected } // this call should not fail with "SVNRepository methods are not reenterable" because the connection was closed Assert.assertEquals(1, svnRepository.getLatestRevision()); } finally { svnRepository.closeSession(); } } finally { sandbox.dispose(); } } private String getTestName() { return "MethodsReenterabilityTest"; } }