Community
Participate
Working Groups
Many of the unit tests in org.aspectj.ajdt.ajc.BuildArgParserTestCase and in org.aspectj.ajde.StructureModelTest are failing for me. These failures appear to be due to the behavior of File.getAbsolutePath(). My suspicion is that these failures are caused by recent changes to the structure model code to remove calls to File.getCanonicalPath(). These failures all come under Win XP using either jdk 1.4.2 or jdk 1.3.x from SUN. To reproduce the failures, you need to launch eclipse using "-data c:/path_to_workspace". Note the lowercase 'c' in the path. If I change this to "-data C:/path_to_workspace", then all of the tests will pass. Here are the traces from two of the failures: java.lang.IndexOutOfBoundsException: Index: 2, Size: 1 at java.util.ArrayList.RangeCheck(ArrayList.java:486) at java.util.ArrayList.get(ArrayList.java:302) at org.aspectj.ajde.StructureModelTest.testPointcutName(StructureModelTest.java:93) ----------------------------------------- junit.framework.ComparisonFailure: expected:<c...> but was:<C...> at junit.framework.Assert.assertEquals(Assert.java:81) at junit.framework.Assert.assertEquals(Assert.java:87) at org.aspectj.ajdt.ajc.BuildArgParserTestCase.testSourceRootDirWithFiles(BuildArgParserTestCase.java:221) The filenames that are failing to compare above differ only in the initial capitalization of the 'c', e.g. c:\aspectj\workspace\org.aspectj.ajdt.core\testdata\ajc\pkg and C:\aspectj\workspace\org.aspectj.ajdt.core\testdata\ajc\pkg
I'm raising this to a P1 bug because someone needs to investigate this bug before the 1.1.1 release. It's possibly just an issue with the test code; however, it might also indicate a subtle and dangerous bug in the structure model code.
I confirm I can reproduce the failures. I've investigated all the BuildArgParserTestCase ones and they were harmless, but easy to fix - I hate failing test cases. Now looking at the StructureModelTest failures - potentially more serious. (Just appending progress to save anyone else duplicating work).
Now fixed. The StructureModel test cases were indeed hiding a more subtle and serious bug - findNodeForSourceFile and findNodeForSourceLine were using absolute path instead of canonical path to look for matches - and so not finding corresponding nodes unless the path happened to match. This is the same problem that caused Andy to lose his outline view from AJDT. I changed three files. If anyone has the time to buddy-check my changes (sensible precaution this close to ship) I'd appreciate it. The files are: org.aspectj.asm.internal.AspectJElementHierarchy org.aspectj.ajdt.ajc.BuildArgParserTestCase org.aspectj.util.ConfigParser
-
At one point in the past those find methodhs did use canonical paths, but my over-optimistic migration to absolute paths changed that. I reviewed these changes and they are all correct.