Issue Details (XML | Word | Printable)

Key: SCM-121
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Mike Perham
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Maven SCM

Intermittent CVS test failures

Created: 17/Dec/05 12:43 PM   Updated: 13/Mar/07 08:28 AM
Component/s: maven-scm-provider-cvs
Affects Version/s: 1.0-beta-3
Fix Version/s: future

Time Tracking:
Not Specified

File Attachments: 1. File cvs.exe (908 kB)

Issue Links:
Related
 

Complexity: Intermediate


 Description  « Hide
Dan and I continue to have test failures when trying to compile the cvs plugin in our environment. I emailed these problems to the scm-dev list about a week ago.

 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Dennis Lundberg added a comment - 28/Dec/05 12:47 PM
I am experiencing this as well. My environment is Windows XP using cvsnt as my command-line client.

Mike wrote about this error on the dev-list:

org.apache.maven.scm.provider.cvslib.command.checkout.CvsCheckoutCommandTest

junit.framework.AssertionFailedError: expected:<38403> but was:<39511>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:282)
at junit.framework.Assert.assertEquals(Assert.java:64)
at junit.framework.Assert.assertEquals(Assert.java:136)
at junit.framework.Assert.assertEquals(Assert.java:142)
at org.apache.maven.scm.provider.cvslib.command.checkout.CvsCheckoutCommandTest.testCheckOutWithTag(CvsCheckoutCommandTest.java:88)

After some investigation I have concluded that this happens in a Windows environment because the command-line cvs client checks out the file with windows line-endings (CR LF). This makes the total size of the file in bytes larger than it would in a unix environment. That is what the error above is telling us.

I googled and found the CVS-book at
http://cvsbook.red-bean.com/cvsbook.html#CVS%20is%20not%20doing%20line-end%20conversion%20correctly

They seem to imply that the only way of stopping a cvs client from converting line-endings to the native sort is to say that the file is binary. That would mean specifying -kb in the CVS/Entries file. So I tried this and created such a directory and file in the test repository, but the results were the same.

I am trying to make improvements to the cvs provider but I'm having all sorts of trouble just building maven-scm, being on Windows and not having a default locale of English. It's quite frustrating.

To move forward, SCM-10 talks about switching from command line cvs to cvslib. This would be a major improvement for compatibility. There is a gotcha that cvslib might not support the ext transport. If that is the case, do you think it would be possible to use command line cvs for ext transport and cvslib for the rest?


Mike Perham added a comment - 03/Jan/06 04:03 PM
I fixed the test failure reported by Dennis above. There are still failures in the Diff TCK test case. I can't figure out why they are breaking but I am running an old version of CVS (1.11.5).

Dennis Lundberg added a comment - 03/Jan/06 04:56 PM
Thanks for fixing that EOL problem Mike.

For me the Diff TCK test case works. I am using CVSNT 2.0.51 on Windows XP.

I have another failure though. This is what 'mvn test' produces on my machine now:

-------------------------------------------------------
T E S T S
-------------------------------------------------------
[surefire] Running org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogCommandTest
[surefire] Tests run: 3, Failures: 3, Errors: 0, Time elapsed: 5,828 sec <<<<<<<< FAILURE !!
[surefire] Running org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogConsumerTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0,051 sec
[surefire] Running org.apache.maven.scm.provider.cvslib.command.checkin.CvsCheckInCommandTckTest
[surefire] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 9,434 sec
[surefire] Running org.apache.maven.scm.provider.cvslib.command.checkout.CvsCheckOutCommandTckTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 7,581 sec
[surefire] Running org.apache.maven.scm.provider.cvslib.command.checkout.CvsCheckoutCommandTest
[surefire] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 3,996 sec
[INFO] Executing: cvs -q -f diff -u -N
[INFO] Working directory: G:\svn\maven-scm\maven-scm-providers\maven-scm-provider-cvs\target\scm-test\working-copy
[surefire] Running org.apache.maven.scm.provider.cvslib.command.diff.CvsDiffCommandTckTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 8,692 sec
[INFO] Executing: cvs -f -n -q update -d
[INFO] Working directory: G:\svn\maven-scm\maven-scm-providers\maven-scm-provider-cvs\target\scm-test\updating-copy
[surefire] Running org.apache.maven.scm.provider.cvslib.command.status.CvsStatusCommandTckTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 10,946 sec
[surefire] Running org.apache.maven.scm.provider.cvslib.command.tag.CvsTagCommandTckTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 15,683 sec
[INFO] Executing: cvs -f -q update -d
[INFO] Working directory: G:\svn\maven-scm\maven-scm-providers\maven-scm-provider-cvs\target\scm-test\updating-copy
[surefire] Running org.apache.maven.scm.provider.cvslib.command.update.CvsUpdateCommandTckTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 11,666 sec
[INFO] Executing: cvs -f -q update -d
[INFO] Working directory: G:\svn\maven-scm\maven-scm-providers\maven-scm-provider-cvs\target\update-test\assertion-directory
[INFO] Executing: cvs -f -q update -d
[INFO] Working directory: G:\svn\maven-scm\maven-scm-providers\maven-scm-provider-cvs\target\update-test\assertion-directory
[surefire] Running org.apache.maven.scm.provider.cvslib.command.update.CvsUpdateCommandTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 12,117 sec
[surefire] Running org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepositoryTest
[surefire] Tests run: 9, Failures: 0, Errors: 0, Time elapsed: 0,02 sec

Results :
[surefire] Tests run: 23, Failures: 3, Errors: 0

And the results of the failed test in the file
target\surefire-reports\org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogCommandTest.txt
looks like this:

[ stacktrace ] -----------------------------------------------------------

junit.framework.AssertionFailedError: The cvs command failed.
cvs log: in directory .:
cvs [log aborted]: there is no version here; do 'cvs checkout' first

cvs -z3 -f -d G:\svn\maven-scm\maven-scm-providers\maven-scm-provider-cvs\src\test\repository -q log "-d 2003-02-01<2004-02-01"
at junit.framework.Assert.fail(Assert.java:47)
at org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogCommandTest.testChangeLog(CvsChangeLogCommandTest.java:82)
at org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogCommandTest.testGetCommandWithStartAndEndDate(CvsChangeLogCommandTest.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246)
at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220)
at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:204)
at org.codehaus.surefire.Surefire.run(Surefire.java:153)
at org.codehaus.surefire.Surefire.run(Surefire.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104)
at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:303)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:414)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:531)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:472)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:451)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:303)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:270)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:139)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:249)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

testGetCommandWithoutEndDate(org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogCommandTest) Time elapsed: 5,898 sec <<< FAILURE!


Dennis Lundberg added a comment - 15/Jan/06 03:45 PM
I tried to issue the cvs command on the command line and got back the same error as when it was run from maven.

To see is this is a Windows issue, I zipped my cvs-provider directory and put it on a Solaris machine. I then ran the same command line cvs command there, and it produced the exact same error message. The Solaris machine has "Concurrent Versions System (CVS) 1.11.20 (client/server)" from FSF.

Is there someone who is able to run the tests for the cvs-provider?


Emmanuel Venisse added a comment - 16/Jan/06 07:55 PM
All tests runs fine for me. I use win XP and cygwin cvs (1.11.17) under windows.

Dan Tran added a comment - 16/Jan/06 11:45 PM
diff command test always fail on my pc ( xp, java5, cygwin cvs), but passes on other machines ;(

-------------------------------------------------------------------------------
Battery: org.apache.maven.scm.provider.cvslib.command.diff.CvsDiffCommandTckTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 3.609 sec

testDiffCommand(org.apache.maven.scm.provider.cvslib.command.diff.CvsDiffCommandTckTest) Time elapsed: 3.609 sec <<< FAILURE!

[ stdout ] ---------------------------------------------------------------

[INFO] Executing: cvs -q -f diff -u -N
[INFO] Working directory: C:\dev\maven\src\scm\maven-scm-providers\maven-scm-provider-cvs\target\scm-test\working-copy

[ stderr ] ---------------------------------------------------------------

[ stacktrace ] -----------------------------------------------------------

junit.framework.ComparisonFailure: expected:<@@ -0,0 +1 @@
+/src/main/java/org/Foo.java
\ No newline at end of file
> but was:<>
at junit.framework.Assert.assertEquals(Assert.java:81)
at junit.framework.Assert.assertEquals(Assert.java:87)
at org.apache.maven.scm.tck.command.diff.DiffCommandTckTest.testDiffCommand(DiffCommandTckTest.java:214)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)


Emmanuel Venisse added a comment - 17/Jan/06 11:03 AM
it's very strange, but i can't help on this error because i can't reproduce it.

Emmanuel Venisse added a comment - 07/Feb/06 08:35 AM
Do you have always failures on cvs tests? Is it only for the diff command?

Can you run manually commands that run by maven-scm? tell me what is the result. For the diff result, is it really an empty string or a problem with carriage return?
I try it under windows with cvsnt and cygwin cvs (default end lines for cygwin are defined as unix end lines)


Mike Perham added a comment - 07/Feb/06 10:25 AM
I get the exact same error that Dan posted on 16/Jan. I will attach my cvs binary.

Mike Perham added a comment - 07/Feb/06 10:25 AM
My cvs binary

Emmanuel Venisse added a comment - 07/Feb/06 10:53 AM
Tests works fine with your cvs.exe

Mike Perham added a comment - 07/Feb/06 11:02 AM
Weird. I wonder if it's a cygwin binary and your cygwin1.dll is different enough to not display the bad behavior we are seeing?

Emmanuel Venisse added a comment - 07/Feb/06 11:34 AM
Info about my cygwin1.dll:
v ersion: 1005.19.0.0
Build date : 2006-01-20 13:28

Mike Perham added a comment - 07/Feb/06 12:54 PM
I checked and it looks like that binary is static. So I have no idea why it's not working. I'm out of ideas.