Here's an updated Requirements document, tweaked a little based on the feedback.
Goals: ("how will we know if this project is or is not a success")
G1. driver developers improve their compliance with the DBI API
and so improve consistency and portability of code.
This is what it's all about!
G2. driver developers adopt DBIT as a free test suite with good
coverage of the DBI API. This is the pay-back _for_ developers.
G3. driver developers write and share reusable generic tests
(they'll still need to write their own driver-specific tests).
This is the pay-back _from_ developers.
G4. end users aren't affected by DBIT evolution causing install failures
i.e., DBIT runs as 'author testing', *at least for now*.
This is our promise to end users not to ruin their day.
G5. works with the widest range of DBI drivers, including non-SQL and
proxy drivers. This is a promise to be inclusive and flexible.
G6. enables testing with DBI::PurePerl for pure-perl drivers.
This is a promise to support fatpackers and perl6 ;)
G7. end users can find the level of DBI API compliance of a driver
The test configuration, e.g., what tests to skip, will be data-driven
rather than hard-coded logic, and the data will readable via some API.
Scope: (the boundaries and deliverables of the project)
S1. the DBIT will be a separate distribution.
S3. the DBI won't have a mandatory dependency on DBIT,
for now at least, driver developers are the priority.
S4. DBIT is not meant to test the underlying database.
If a driver implements a database itself then it'll
need it's own tests to provide good coverage of that.
Those tests could use the DBIT infrastructure.
Requirements:
R1. be easy for driver developers to adopt,
so existing drivers migrate to using it.
R2. be easy for driver developers to extend/contribute to,
so driver developers contribute to it.
R3. work well with cpantesters,
so we get good coverage (perhaps extend Test::Database)
R4. use get_info as the basis for determining the capabilities
of the driver and database. We'll extend get_info as needed.
R5. allow tests to be run in parallel, e.g. unique table names.
R6. provides tools that drivers can use/extend for themselves.
I'm thinking specifically here of the creation of test files
with combinations of env vars and other settings.
E.g., test DBD::CSV with Text::CSV and Text::CSV_XS
Tim.