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.SVNNodeKind;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc2.SvnGetInfo;
import org.tmatesoft.svn.core.wc2.SvnInfo;
import org.tmatesoft.svn.core.wc2.SvnOperationFactory;
import org.tmatesoft.svn.core.wc2.SvnTarget;
import java.io.File;
public class InfoTest {
@Test
public void testLowLevelInfo() throws Exception {
final TestOptions options = TestOptions.getInstance();
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testLowLevelInfo", options);
try {
final SVNURL url = sandbox.createSvnRepository();
final CommitBuilder commitBuilder = new CommitBuilder(url);
commitBuilder.addDirectory("directory");
commitBuilder.commit();
final SVNRepository svnRepository = svnOperationFactory.getRepositoryPool().createRepository(url, true);
final SVNDirEntry dirEntry = svnRepository.info("", 1);
Assert.assertEquals(SVNNodeKind.DIR, dirEntry.getKind());
Assert.assertEquals("", dirEntry.getName());
Assert.assertEquals("", dirEntry.getRelativePath());
Assert.assertEquals(1, dirEntry.getRevision());
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
@Test
public void testLowLevelInfoDavAccess() throws Exception {
final TestOptions options = TestOptions.getInstance();
Assume.assumeTrue(TestUtil.areAllApacheOptionsSpecified(options));
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testLowLevelInfoDavAccess", options);
try {
final SVNURL url = sandbox.createSvnRepositoryWithDavAccess();
final CommitBuilder commitBuilder = new CommitBuilder(url);
commitBuilder.addDirectory("directory");
commitBuilder.commit();
final SVNRepository svnRepository = svnOperationFactory.getRepositoryPool().createRepository(url, true);
final SVNDirEntry dirEntry = svnRepository.info("", 1);
Assert.assertEquals(SVNNodeKind.DIR, dirEntry.getKind());
Assert.assertEquals("", dirEntry.getName());
Assert.assertEquals("", dirEntry.getRelativePath());
Assert.assertEquals(1, dirEntry.getRevision());
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
@Test
public void testPegRevisionIsConsideredForRemoteInfo() throws Exception {
//SVNKIT-272
final TestOptions options = TestOptions.getInstance();
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testPegRevisionIsConsideredForRemoteInfo", options);
try {
final SVNURL url = sandbox.createSvnRepository();
final CommitBuilder commitBuilder1 = new CommitBuilder(url);
commitBuilder1.addDirectory("directory");
commitBuilder1.commit();
final CommitBuilder commitBuilder2 = new CommitBuilder(url);
commitBuilder2.delete("directory");
commitBuilder2.commit();
final SVNURL directoryUrl = url.appendPath("directory", false);
final SvnGetInfo getInfo = svnOperationFactory.createGetInfo();
getInfo.setSingleTarget(SvnTarget.fromURL(directoryUrl, SVNRevision.create(1)));
final SvnInfo info = getInfo.run();
Assert.assertEquals(1, info.getRevision());
Assert.assertEquals(1, info.getLastChangedRevision());
Assert.assertEquals(directoryUrl, info.getUrl());
Assert.assertEquals(url, info.getRepositoryRootUrl());
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
@Test
public void testPegRevisionIsConsideredForLocalInfo() throws Exception {
//SVNKIT-272
final TestOptions options = TestOptions.getInstance();
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testPegRevisionIsConsideredForLocalInfo", options);
try {
final SVNURL url = sandbox.createSvnRepository();
final CommitBuilder commitBuilder1 = new CommitBuilder(url);
commitBuilder1.addDirectory("directory");
commitBuilder1.commit();
final CommitBuilder commitBuilder2 = new CommitBuilder(url);
commitBuilder2.delete("directory");
commitBuilder2.commit();
final SVNURL directoryUrl = url.appendPath("directory", false);
final WorkingCopy workingCopy = sandbox.checkoutNewWorkingCopy(url, 1);
final File directory = workingCopy.getFile("directory");
final SvnGetInfo getInfo = svnOperationFactory.createGetInfo();
getInfo.setSingleTarget(SvnTarget.fromFile(directory, SVNRevision.create(1)));
final SvnInfo info = getInfo.run();
Assert.assertEquals(1, info.getRevision());
Assert.assertEquals(1, info.getLastChangedRevision());
Assert.assertEquals(directoryUrl, info.getUrl());
Assert.assertEquals(url, info.getRepositoryRootUrl());
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
@Test
public void testBackslashInFilename() throws Exception {
//SVNKIT-332
final TestOptions options = TestOptions.getInstance();
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testBackslashInFilename", options);
try {
final SVNURL url = sandbox.createSvnRepository();
final CommitBuilder commitBuilder = new CommitBuilder(url);
commitBuilder.addFile("file\\with\\backslash");
commitBuilder.commit();
final SVNURL fileUrl = url.appendPath("file\\with\\backslash", false);
final SvnGetInfo getInfo = svnOperationFactory.createGetInfo();
getInfo.setSingleTarget(SvnTarget.fromURL(fileUrl));
final SvnInfo info = getInfo.run();
Assert.assertEquals(1, info.getRevision());
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
private String getTestName() {
return "InfoTest";
}
}