On Fri, Oct 22, 2004 at 11:30:20PM -0400, Lincoln A. Baxter wrote:
> On Fri, 2004-10-22 at 17:28, Andy Hassall wrote:
> [snip]
> >  I can see there being an ultimate character set torture test with the
> > Encode module, and working out the intersection between NLS_LANG's character
> > set and that of the database character set and again for the database
> > national character set, and running each character through an insert and
> > select and making sure it comes out the same as it went in (taking into
> > account UTF8 flags and so on). No time to write such a thing at the moment
> > though :-(
> 
> Hi Andy,
> 
> We talked about exhaustive character set testing. And decided that
> testing representative cases, and boundary conditions would be a more
> profitable use of our time. The tests we came up with were certainly
> challenging enough to flush out a LOT of issues.  

A slight tangent...

Part of the challenge with testing drivers is that the test suite
should try to find driver bugs *without tripping over database bugs*.

It's not our job, as driver authors, to be trying to write a test
suite for all the functionality the database offers. A balance has
to be stuck.

There's a whole bunch of tests in the DBD::Oracle test suite that
are disabled if the client and/or server is below a certain version
(typically 9.0). But they test functionality that should work.
Disabling the test is ducking the issue and makes me nervous.  (In
the docs I've just said that using Oracle 9+ is strongly recommended.)

There are two likely reasons for having to disable the tests:

1. There's some bugs in DBD::Oracle where we don't do things in the
quite right way and that triggers the problem in older versions of Oracle.

2. Oracle has bugs in the way it handles character sets.

I'm torn as to which I should believe. In order to believe 2 I have
to believe that Oracle's own testing of its own code is, or at least
was for Oracle 8, stunningly limited. I can believe 1, but then I wonder
why it works for Oracle 9.

There's actually a third reason:

3. We *were* doing things wrong and have fixed them recently but not
yet reenabled the tests to see which no longer fail.

Anyone with Oracle 8.x can find how how true that is by setting the
DBD_ALL_TESTS env var to a true value. Let me know... :)

Tim.

Reply via email to