package org.tmatesoft.svn.test; import org.junit.Assert; import org.junit.Assume; import org.junit.Test; import org.tmatesoft.svn.core.SVNDirEntry; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.wc.SVNRevision; import org.tmatesoft.svn.core.wc2.ISvnObjectReceiver; import org.tmatesoft.svn.core.wc2.SvnList; import org.tmatesoft.svn.core.wc2.SvnOperationFactory; import org.tmatesoft.svn.core.wc2.SvnTarget; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ListTest { @Test public void testListOnRepositoryRoot() throws Exception { final TestOptions options = TestOptions.getInstance(); final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testListOnRepositoryRoot", options); try { final SVNURL url = sandbox.createSvnRepository(); final CommitBuilder commitBuilder = new CommitBuilder(url); commitBuilder.addDirectory("directory"); commitBuilder.commit(); final List<SVNDirEntry> entries = new ArrayList<SVNDirEntry>(); final SvnList list = svnOperationFactory.createList(); list.setSingleTarget(SvnTarget.fromURL(url, SVNRevision.HEAD)); list.setRevision(SVNRevision.HEAD); list.setReceiver(new ISvnObjectReceiver<SVNDirEntry>() { public void receive(SvnTarget target, SVNDirEntry dirEntry) throws SVNException { entries.add(dirEntry); } }); list.run(); Collections.sort(entries); Assert.assertEquals(2, entries.size()); Assert.assertEquals("", entries.get(0).getName()); Assert.assertEquals("", entries.get(0).getRelativePath()); Assert.assertEquals("directory", entries.get(1).getName()); Assert.assertEquals("directory", entries.get(1).getRelativePath()); } finally { svnOperationFactory.dispose(); sandbox.dispose(); } } @Test public void testListOnRepositoryRootDavAccess() throws Exception { final TestOptions options = TestOptions.getInstance(); Assume.assumeTrue(TestUtil.areAllApacheOptionsSpecified(options)); final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testListOnRepositoryRootDavAccess", options); try { final SVNURL url = sandbox.createSvnRepositoryWithDavAccess(); final CommitBuilder commitBuilder = new CommitBuilder(url); commitBuilder.addDirectory("directory"); commitBuilder.commit(); final List<SVNDirEntry> entries = new ArrayList<SVNDirEntry>(); final SvnList list = svnOperationFactory.createList(); list.setSingleTarget(SvnTarget.fromURL(url, SVNRevision.HEAD)); list.setRevision(SVNRevision.HEAD); list.setReceiver(new ISvnObjectReceiver<SVNDirEntry>() { public void receive(SvnTarget target, SVNDirEntry dirEntry) throws SVNException { entries.add(dirEntry); } }); list.run(); Collections.sort(entries); Assert.assertEquals(2, entries.size()); Assert.assertEquals("", entries.get(0).getName()); Assert.assertEquals("", entries.get(0).getRelativePath()); Assert.assertEquals("directory", entries.get(1).getName()); Assert.assertEquals("directory", entries.get(1).getRelativePath()); } finally { svnOperationFactory.dispose(); sandbox.dispose(); } } @Test public void testListOnDirectory() throws Exception { final TestOptions options = TestOptions.getInstance(); final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testListOnDirectory", options); try { final SVNURL url = sandbox.createSvnRepository(); final CommitBuilder commitBuilder = new CommitBuilder(url); commitBuilder.addDirectory("directory/subdirectory"); commitBuilder.commit(); final SVNURL directoryUrl = url.appendPath("directory", false); final List<SVNDirEntry> entries = new ArrayList<SVNDirEntry>(); final SvnList list = svnOperationFactory.createList(); list.setSingleTarget(SvnTarget.fromURL(directoryUrl, SVNRevision.HEAD)); list.setRevision(SVNRevision.HEAD); list.setReceiver(new ISvnObjectReceiver<SVNDirEntry>() { public void receive(SvnTarget target, SVNDirEntry dirEntry) throws SVNException { entries.add(dirEntry); } }); list.run(); Collections.sort(entries); Assert.assertEquals(2, entries.size()); Assert.assertEquals("", entries.get(0).getName()); Assert.assertEquals("", entries.get(0).getRelativePath()); Assert.assertEquals("subdirectory", entries.get(1).getName()); Assert.assertEquals("subdirectory", entries.get(1).getRelativePath()); } finally { svnOperationFactory.dispose(); sandbox.dispose(); } } @Test public void testListOnDirectoryDavAccess() throws Exception { final TestOptions options = TestOptions.getInstance(); Assume.assumeTrue(TestUtil.areAllApacheOptionsSpecified(options)); final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testListOnDirectoryDavAccess", options); try { final SVNURL url = sandbox.createSvnRepositoryWithDavAccess(); final CommitBuilder commitBuilder = new CommitBuilder(url); commitBuilder.addDirectory("directory/subdirectory"); commitBuilder.commit(); final SVNURL directoryUrl = url.appendPath("directory", false); final List<SVNDirEntry> entries = new ArrayList<SVNDirEntry>(); final SvnList list = svnOperationFactory.createList(); list.setSingleTarget(SvnTarget.fromURL(directoryUrl, SVNRevision.HEAD)); list.setRevision(SVNRevision.HEAD); list.setReceiver(new ISvnObjectReceiver<SVNDirEntry>() { public void receive(SvnTarget target, SVNDirEntry dirEntry) throws SVNException { entries.add(dirEntry); } }); list.run(); Collections.sort(entries); Assert.assertEquals(2, entries.size()); Assert.assertEquals("", entries.get(0).getName()); Assert.assertEquals("", entries.get(0).getRelativePath()); Assert.assertEquals("subdirectory", entries.get(1).getName()); Assert.assertEquals("subdirectory", entries.get(1).getRelativePath()); } finally { svnOperationFactory.dispose(); sandbox.dispose(); } } private String getTestName() { return "ListTest"; } }