This first SvnAnt test failure is caused by svnClientAdapter (for <add>).
Add.java attempts to get status for the file it plans to add, to assure that
the file isn't already a versioned resource:
if (SVNStatusUtils.isManaged(svnClient.getSingleStatus(file)))
return;
CmdLineClientAdapter.java calls info() and status() in succession:
try {
String cmdLineInfoStrings = _cmd.info(paths); <=== EXCEPTION
String cmdLineStatusStrings = _cmd.status(paths, false, true, false);
...
} catch (CmdLineException e) {
throw SVNClientException.wrapException(e);
}
info() triggers an exception when called on an unversioned resource, because
it writes the warning "filename: (Not a versioned resource)" to stderr with
Subversion 1.4-dev (trunk). This is caused by CommandLine.execString(). I
believe the same behavior exists in the upcoming Subversion 1.3.
I've attached a patch which supresses this exception in SvnAnt's Add.java.
However, this is not the Right approach to fixing this problem -- it should
be handled in svnClientAdapter, which can either 1) not treat any output to
stderr as a fatal error, instead acting on return code (my preference, but
could have significant side effects), or 2) examine the exception's log
message to see exactly what went wrong (a non-starter in a non-English
environment).
Thoughts?
- Dan
On Wed, 12 Oct 2005, Daniel Rall wrote:
> Testsuite: org.tigris.subversion.svnant.SvnCmdLineTest
> Tests run: 26, Failures: 0, Errors: 5, Time elapsed: 83.684 sec
> ------------- Standard Output ---------------
...
> Testcase: testAddCommit took 1.259 sec
> Caused an ERROR
> Cannot get status of file or directory
> /home/dlr/src/subclipse/svnant/test/svn/build.xml:102: Cannot get status of file or directory
> at org.tigris.subversion.svnant.Add.svnAddFileWithDirs(Add.java:232)
> at org.tigris.subversion.svnant.Add.svnAddFileSet(Add.java:281)
> at org.tigris.subversion.svnant.Add.execute(Add.java:112)
> at org.tigris.subversion.svnant.SvnTask.execute(SvnTask.java:312)
> at org.tigris.subversion.svnant.SvnCmdLineTest.executeTarget(SvnCmdLineTest.java:46)
> at org.tigris.subversion.svnant.SvnTest.testAddCommit(SvnTest.java:102)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> Caused by: org.tigris.subversion.svnclientadapter.SVNClientException: org.tigris.subversion.svnclientadapter.commandline.CmdLineException: /home/dlr/src/subclipse/svnant/test/svn/workingcopy/addCommitTest/file1.add: (Not a versioned resource)
>
>
> at org.tigris.subversion.svnclientadapter.SVNClientException.wrapException(Unknown Source)
> at org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.getStatus(Unknown Source)
> at org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.getSingleStatus(Unknown Source)
> at org.tigris.subversion.svnant.Add.svnAddFileWithDirs(Add.java:221)
> ... 26 more
> Caused by: org.tigris.subversion.svnclientadapter.commandline.CmdLineException: /home/dlr/src/subclipse/svnant/test/svn/workingcopy/addCommitTest/file1.add: (Not a versioned resource)
>
>
> at org.tigris.subversion.svnclientadapter.commandline.CommandLine.execString(Unknown Source)
> at org.tigris.subversion.svnclientadapter.commandline.SvnCommandLine.info(Unknown Source)
> ... 29 more
> --- Nested Exception ---
> org.tigris.subversion.svnclientadapter.SVNClientException: org.tigris.subversion.svnclientadapter.commandline.CmdLineException: /home/dlr/src/subclipse/svnant/test/svn/workingcopy/addCommitTest/file1.add: (Not a versioned resource)
>
>
> at org.tigris.subversion.svnclientadapter.SVNClientException.wrapException(Unknown Source)
> at org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.getStatus(Unknown Source)
> at org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.getSingleStatus(Unknown Source)
> at org.tigris.subversion.svnant.Add.svnAddFileWithDirs(Add.java:221)
> at org.tigris.subversion.svnant.Add.svnAddFileSet(Add.java:281)
> at org.tigris.subversion.svnant.Add.execute(Add.java:112)
> at org.tigris.subversion.svnant.SvnTask.execute(SvnTask.java:312)
> at org.tigris.subversion.svnant.SvnCmdLineTest.executeTarget(SvnCmdLineTest.java:46)
> at org.tigris.subversion.svnant.SvnTest.testAddCommit(SvnTest.java:102)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> Caused by: org.tigris.subversion.svnclientadapter.commandline.CmdLineException: /home/dlr/src/subclipse/svnant/test/svn/workingcopy/addCommitTest/file1.add: (Not a versioned resource)
>
>
> at org.tigris.subversion.svnclientadapter.commandline.CommandLine.execString(Unknown Source)
> at org.tigris.subversion.svnclientadapter.commandline.SvnCommandLine.info(Unknown Source)
> ... 29 more
- text/plain attachment: patch
Received on Thu Oct 13 04:32:38 2005