Hi lists, hi David (you wrote most of the tests I'm gonna talk about..)
While trying to clean up some Mauve failures I came upon a couple of
tests that fail on JDK because they test strictly against the spec where
the JDK isn't as strict. This is mostly bounds checking, where the spec
says throws BadLocationException if invalid or similar. I think the JDK
simply doesn't perform explicit checks in the Content implementations.
See for example the tests for GapContent and StringContent.
Now I am not sure how to handle this. I've commented these tests out
locally, simply to avoid clutter in the Mauve output. The question is
how to interpret the spec. Adding the throws BadLocationException does
mean (to me) that the impl may or may not throw a BadLocationException,
but the application should be prepared to deal with it anyways.
Moreover, the throws BadLocationException is specified in the interface.
The implementations are not required to throw the BadLocationException
if they decide to deal with wrong input themselves. For instance, the
GapContent implementation (ours as well as JDK) can very well handle
Position outside the range, because it only calculates offsets.
The situation gets worse. There are a number of tests both in Mauve and
in the Intel testsuite that actually test the JDK behaviour of _not_
throwing the BLE, sometimes indirectly (via a Document impl or so). So
we can't get to fully PASS with Mauve.
We should decide if we want to test strict spec compliance or reference
impl compatibility. So far the decisions in GNU Classpath have been made
in favour of (bug-) compatibility over strict spec compliance, so I
think we should do the same for Mauve.
Anyway, I think we should either disable the spec-compliance checks or
the RI-compatibility checks or both in Mauve so that we have at least a
chance to reach 100%.
Any opinions on that?
/Roman