When calling doExport()
for a URL that doesn’t exist, the word “doesn’t” is missing an apostrophe in the exception message. The instance that I encountered is in org.tmatesoft.svn.core.internal.wc2.remote.SVNRemoteExport.run()
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_ILLEGAL_URL, "URL ''{0}'' doesn't exist", repository.getLocation());
SVNErrorManager.error(err, SVNLogType.WC);
(I think the message is treated as a template pattern and the apostrophe in “doesn’t” should be escaped with an extra single quote.)
If you grep for similar errors, you’ll see there may be more of them:
grep -rn SVNErrorCode.RA_ILLEGAL_URL . | grep "doesn't"
./svnkit/src/main/java/org/tmatesoft/svn/core/internal/wc16/SVNUpdateClient16.java:1491: SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_ILLEGAL_URL, "URL ''{0}'' doesn't exist", repository.getLocation());
./svnkit/src/main/java/org/tmatesoft/svn/core/internal/wc2/remote/SvnRemoteExport.java:144: SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_ILLEGAL_URL, "URL ''{0}'' doesn't exist", repository.getLocation());
./svnkit/src/main/java/org/tmatesoft/svn/core/io/SVNRepository.java:2161: SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_ILLEGAL_URL, "URL ''{0}'' doesn't exist", getLocation());
To reproduce:
@Test
public void testExceptionMessage() throws Exception {
SVNURL svnurl = SVNURL.parseURIEncoded("https://svn.code.sf.net/p/fmslogo/source/doesnotexist");
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager();
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
SVNClientManager ourClientManager = SVNClientManager.newInstance(options, authManager);
SVNUpdateClient updateClient = ourClientManager.getUpdateClient();
updateClient.setIgnoreExternals(false);
try {
updateClient.doExport(
svnurl,
new java.io.File("."),
SVNRevision.HEAD, // peg revision
SVNRevision.HEAD, // desired revision
System.lineSeparator(), // line endings
false, // don't force overwrite (shouldn't matter because workingCopy is empty directory
SVNDepth.INFINITY);
Assert.fail("exporting non-existing directory didn't throw an exception");
} catch (SVNException exception) {
Assert.assertEquals("svn: E170000: URL '" + svnurl + "' doesn't exist", exception.getMessage());
}
}
The above test fails because word appears as “doesnt” in the exception’s message.