Re: DBI_USER empty vs undef - Re: DBIT prototype - feedback wanted

"H.Merijn Brand" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On Sun, 9 Mar 2014 13:29:32 +0000, Tim Bunce <[email protected]>
wrote:

> On Tue, Feb 18, 2014 at 02:50:43PM +0000, Tim Bunce wrote:
> > On Tue, Feb 18, 2014 at 10:15:53AM +0100, H.Merijn Brand wrote:
> > > 
> > > I see a serious weekness. Don't know if it is Test::Database or
> > > DBI::Test, but the current templates do not seem to be able to see a
> > > difference between undef and "" for username and password:
> > > 
> > > $ cat out/Default/Pg/Default/DBIT_sth_ro/BasicPrepareExecuteSelect.t
> > > #!perl
> > > use lib "lib";
> > > $ENV{DBI_PASS} = "";
> > > $ENV{DBI_USER} = "";
> > > $ENV{DBI_DSN} = "dbi:Pg:dbname=test";
> > 
> > > Drivers allow username and/or password to be undefined, but they also
> > > allow username/password to be the empty string, and these are two
> > > different things!
> > 
> > The root cause is in Test::Database. I've opened a case for it:
> > https://rt.cpan.org/Ticket/Display.html?id=93128
> 
> BooK has fixed that in T:DB v1.111 - please retry.

Hmmm, I don't know about "fixed", but I installed that anyway.
Reply includes both the Test::Database and the tumbler results


  BOOK/Test-Database-1.111.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /pro/bin/perl5.18.2 "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00-load.t ................... 1/10 YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

# Tested Test::Database 1.111, Perl 5.018002, /pro/bin/perl5.18.2
t/00-load.t ................... ok
t/000-report-versions-tiny.t .. #
#
# Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.08
# perl: 5.018002 (wanted 5.006) on linux from /pro/bin/perl5.18.2
#
# Carp                                          => 1.32       (want any version)
# Cwd                                           => 3.40       (want any version)
# DBD::DBM                                      => 0.08       (want any version)
# DBI                                           => 1.631      (want any version)
# ExtUtils::MakeMaker                           => 6.9        (want 6.30)
# File::Find                                    => 1.23       (want any version)
# File::HomeDir                                 => 1.00       (want any version)
# File::Path                                    => 2.09       (want any version)
# File::Spec                                    => 3.40       (want any version)
# File::Temp                                    => 0.2304     (want any version)
# List::Util                                    => 1.38       (want any version)
# Pod::Coverage::TrustPod                       => 0.100003   (want any version)
# SQL::Statement                                => 1.405      (want any version)
# Test::CPAN::Meta                              => 0.23       (want any version)
# Test::More                                    => 1.001002   (want 0.88)
# Test::Pod                                     => 1.48       (want 1.41)
# Test::Pod::Coverage                           => 1.08       (want 1.08)
# YAML::Tiny                                    => 1.61       (want any version)
# strict                                        => 1.07       (want any version)
# version                                       => 0.9908     (want 0.9901)
# warnings                                      => 1.18       (want any version)
#
# Thanks for using my code.  I hope it works for you.
# If not, please try and include this output in the bug report.
# That will help me reproduce the issue and solve your problem.
#
t/000-report-versions-tiny.t .. ok
t/08-handle.t ................. ok
t/09-handle-dsn.t ............. ok
t/10-drivers.t ................ YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

t/10-drivers.t ................ 1/7
#   Failed test 'At least one driver loaded'
#   at t/10-drivers.t line 101.
#     '0'
#         >=
#     '1'
# Looks like you failed 1 test of 7.
t/10-drivers.t ................ Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/7 subtests
t/10-list_drivers.t ........... YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

t/10-list_drivers.t ........... 1/3
#   Failed test 'list_drivers()'
#   at t/10-list_drivers.t line 31.
#     Structures begin differing at:
#          $got->[0] = Does not exist
#     $expected->[0] = 'CSV'
# Looks like you failed 1 test of 3.
t/10-list_drivers.t ........... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/3 subtests
t/11-available_dbname.t ....... ok
t/11-make_dsn.t ............... ok
t/11-version_matches.t ........ ok
t/12-load.t ................... ok
t/20-handles.t ................ YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

t/20-handles.t ................ ok
t/25-sql.t .................... YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

# SQL::Statement 1.405
t/25-sql.t .................... skipped: No drivers available for testing
t/pod-coverage.t .............. YAML::Tiny failed to classify line 'dbi:CSV::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /home/merijn/.cpan/build/Test-Database-1.111-O2MmHq/blib/lib/Test/Database/Driver.pm line 102.

t/pod-coverage.t .............. ok
t/pod.t ....................... ok
t/release-distmeta.t .......... skipped: these tests are for release candidate testing
t/release-pod-coverage.t ...... skipped: these tests are for release candidate testing
t/release-pod-syntax.t ........ skipped: these tests are for release candidate testing

Test Summary Report
-------------------
t/10-drivers.t              (Wstat: 256 Tests: 7 Failed: 1)
  Failed test:  6
  Non-zero exit status: 1
t/10-list_drivers.t         (Wstat: 256 Tests: 3 Failed: 1)
  Failed test:  3
  Non-zero exit status: 1
Files=17, Tests=187,  2 wallclock secs ( 0.06 usr  0.01 sys +  1.60 cusr  0.10 csys =  1.77 CPU)
Result: FAIL
Failed 2/17 test programs. 2/187 subtests failed.
make: *** [test_dynamic] Error 255
  BOOK/Test-Database-1.111.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports BOOK/Test-Database-1.111.tar.gz
Running make install
  make test had returned bad status, won't install without force

$ cat /home/merijn/.local/share/.test-database
# Postgres
dsn     = dbi:Pg:dbname=test

# SQLite
dsn     = dbi:SQLite:dbname=/tmp/test.db

# CSV
dsn     = dbi:CSV:f_ext=.csv/r

# MySQL
dsn     = dbi:mysql:database=test

# Oracle

> Tim.

% ux
lx09  Linux 3.11.10-7-desktop [openSUSE 13.1 (Bottle)]  i386 Core(TM) i7-2620M CPU @ 2.70GHz/2646(4) i686  8032 Mb
% perl -MV=DBI,Test::Database,Class::Tiny,DBD::SQLite,DBD::Pg,DBD::CSV,DBD::Firebird,DBD::mysql,YAML::Tiny
DBI
        /pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld/DBI.pm: 1.631
Test::Database
        /pro/lib/perl5/site_perl/5.18.2/Test/Database.pm: 1.111
Class::Tiny
        /pro/lib/perl5/site_perl/5.18.2/Class/Tiny.pm: 0.014
DBD::SQLite
        /pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld/DBD/SQLite.pm: 1.40
DBD::Pg
        /pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld/DBD/Pg.pm: 3.0.0
DBD::CSV
        /pro/lib/perl5/site_perl/5.18.2/DBD/CSV.pm: 0.41
DBD::Firebird
        /pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld/DBD/Firebird.pm: 1.17
DBD::mysql
        /pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld/DBD/mysql.pm: 4.026
YAML::Tiny
        /pro/lib/perl5/site_perl/5.18.2/YAML/Tiny.pm: 1.61
% perl -v|grep version
This is perl 5, version 18, subversion 2 (v5.18.2) built for i686-linux-64int-ld
% cd sandbox/tim
% rm -rf out* && perl tumbler.pl && prove -j4 -sr out
Ignoring DBD::Oracle: install_driver(Oracle) failed: Can't load '/pro/lib/perl5/site_perl/5.18.2/i686-linux-64int-ld/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libnnz12.so: cannot open shared object file: No such file or directory at /pro/lib/perl5/5.18.2/i686-linux-64int-ld/DynaLoader.pm line 190.
YAML::Tiny failed to classify line 'dbi:CSV::' at /pro/lib/perl5/site_perl/5.18.2/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:DBM::' at /pro/lib/perl5/site_perl/5.18.2/Test/Database/Driver.pm line 102.

YAML::Tiny failed to classify line 'dbi:SQLite::' at /pro/lib/perl5/site_perl/5.18.2/Test/Database/Driver.pm line 102.

Using Test::Database config /home/merijn/.local/share/.test-database
CSV has 1 variants for DSN dbi:CSV:f_ext=.csv/r
Writing out/Default/CSV/Default/dbh_ro/GetInfo.t
Writing out/Default/CSV/Default/dbh_ro/SelectMultiThread.t
Writing out/Default/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t
Skipped DBD::DBM - no Test::Database dsn config using the DBM driver
Skipped DBD::ExampleP - no Test::Database dsn config using the ExampleP driver
Skipped DBD::File - no Test::Database dsn config using the File driver
Skipped DBD::Firebird - no Test::Database dsn config using the Firebird driver
Skipped DBD::ODBC - no Test::Database dsn config using the ODBC driver
Pg has 1 variants for DSN dbi:Pg:dbname=test
Writing out/Default/Pg/Default/dbh_ro/GetInfo.t
Writing out/Default/Pg/Default/dbh_ro/SelectMultiThread.t
Writing out/Default/Pg/Default/sth_ro/BasicPrepareExecuteSelect.t
SQLite has 1 variants for DSN dbi:SQLite:dbname=/tmp/test.db
Writing out/Default/SQLite/Default/dbh_ro/GetInfo.t
Writing out/Default/SQLite/Default/dbh_ro/SelectMultiThread.t
Writing out/Default/SQLite/Default/sth_ro/BasicPrepareExecuteSelect.t
Skipped DBD::Sponge - no Test::Database dsn config using the Sponge driver
mysql has 1 variants for DSN dbi:mysql:database=test
Writing out/Default/mysql/Default/dbh_ro/GetInfo.t
Writing out/Default/mysql/Default/dbh_ro/SelectMultiThread.t
Writing out/Default/mysql/Default/sth_ro/BasicPrepareExecuteSelect.t
CSV has 1 variants for DSN dbi:CSV:f_ext=.csv/r
Writing out/Default-gofer/CSV/Default/dbh_ro/GetInfo.t
Writing out/Default-gofer/CSV/Default/dbh_ro/SelectMultiThread.t
Writing out/Default-gofer/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t
Pg has 1 variants for DSN dbi:Pg:dbname=test
Writing out/Default-gofer/Pg/Default/dbh_ro/GetInfo.t
Writing out/Default-gofer/Pg/Default/dbh_ro/SelectMultiThread.t
Writing out/Default-gofer/Pg/Default/sth_ro/BasicPrepareExecuteSelect.t
SQLite has 1 variants for DSN dbi:SQLite:dbname=/tmp/test.db
Writing out/Default-gofer/SQLite/Default/dbh_ro/GetInfo.t
Writing out/Default-gofer/SQLite/Default/dbh_ro/SelectMultiThread.t
Writing out/Default-gofer/SQLite/Default/sth_ro/BasicPrepareExecuteSelect.t
mysql has 1 variants for DSN dbi:mysql:database=test
Writing out/Default-gofer/mysql/Default/dbh_ro/GetInfo.t
Writing out/Default-gofer/mysql/Default/dbh_ro/SelectMultiThread.t
Writing out/Default-gofer/mysql/Default/sth_ro/BasicPrepareExecuteSelect.t
CSV has 1 variants for DSN dbi:CSV:f_ext=.csv/r
Writing out/pureperl/CSV/Default/dbh_ro/GetInfo.t
Writing out/pureperl/CSV/Default/dbh_ro/SelectMultiThread.t
Writing out/pureperl/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t
CSV has 1 variants for DSN dbi:CSV:f_ext=.csv/r
Writing out/pureperl-gofer/CSV/Default/dbh_ro/GetInfo.t
Writing out/pureperl-gofer/CSV/Default/dbh_ro/SelectMultiThread.t
Writing out/pureperl-gofer/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t
out/pureperl/CSV/Default/dbh_ro/SelectMultiThread.t .................. skipped: threads not supported
out/Default-gofer/SQLite/Default/dbh_ro/SelectMultiThread.t .......... skipped: threads not supported
out/Default-gofer/SQLite/Default/dbh_ro/GetInfo.t .................... ok
out/Default/Pg/Default/sth_ro/BasicPrepareExecuteSelect.t ............ ok
out/Default/SQLite/Default/dbh_ro/GetInfo.t .......................... ok
out/Default-gofer/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t ..... ok
out/Default-gofer/Pg/Default/dbh_ro/SelectMultiThread.t .............. skipped: threads not supported
out/Default/Pg/Default/dbh_ro/GetInfo.t .............................. ok
out/Default-gofer/CSV/Default/dbh_ro/GetInfo.t ....................... ok
out/Default-gofer/CSV/Default/dbh_ro/SelectMultiThread.t ............. skipped: threads not supported
out/Default/mysql/Default/dbh_ro/GetInfo.t ........................... ok
out/Default/SQLite/Default/sth_ro/BasicPrepareExecuteSelect.t ........ ok
out/Default/mysql/Default/sth_ro/BasicPrepareExecuteSelect.t ......... ok
out/Default-gofer/mysql/Default/dbh_ro/SelectMultiThread.t ........... skipped: threads not supported
out/Default/mysql/Default/dbh_ro/SelectMultiThread.t ................. skipped: threads not supported
out/Default/CSV/Default/dbh_ro/SelectMultiThread.t ................... skipped: threads not supported
out/Default/CSV/Default/dbh_ro/GetInfo.t ............................. ok
out/Default-gofer/Pg/Default/dbh_ro/GetInfo.t ........................ ok
out/Default-gofer/mysql/Default/sth_ro/BasicPrepareExecuteSelect.t ... ok
out/pureperl-gofer/CSV/Default/dbh_ro/GetInfo.t ...................... ok
out/Default/Pg/Default/dbh_ro/SelectMultiThread.t .................... skipped: threads not supported
out/Default-gofer/Pg/Default/sth_ro/BasicPrepareExecuteSelect.t ...... ok
out/pureperl-gofer/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t .... ok
out/Default/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t ........... ok
out/pureperl-gofer/CSV/Default/dbh_ro/SelectMultiThread.t ............ skipped: threads not supported
out/Default/SQLite/Default/dbh_ro/SelectMultiThread.t ................ skipped: threads not supported
out/Default-gofer/SQLite/Default/sth_ro/BasicPrepareExecuteSelect.t .. ok
out/pureperl/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t .......... ok
out/Default-gofer/mysql/Default/dbh_ro/GetInfo.t ..................... ok
out/pureperl/CSV/Default/dbh_ro/GetInfo.t ............................ ok
All tests successful.

Test Summary Report
-------------------
out/Default-gofer/SQLite/Default/dbh_ro/GetInfo.t                  (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   1-4
out/Default/Pg/Default/sth_ro/BasicPrepareExecuteSelect.t          (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/Default/SQLite/Default/dbh_ro/GetInfo.t                        (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   1-4
out/Default-gofer/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t   (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/Default/Pg/Default/dbh_ro/GetInfo.t                            (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   1-5
out/Default-gofer/CSV/Default/dbh_ro/GetInfo.t                     (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   4
out/Default/mysql/Default/dbh_ro/GetInfo.t                         (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   1-5
out/Default/SQLite/Default/sth_ro/BasicPrepareExecuteSelect.t      (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/Default/mysql/Default/sth_ro/BasicPrepareExecuteSelect.t       (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/Default/CSV/Default/dbh_ro/GetInfo.t                           (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   4
out/Default-gofer/Pg/Default/dbh_ro/GetInfo.t                      (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   1-5
out/Default-gofer/mysql/Default/sth_ro/BasicPrepareExecuteSelect.t (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/pureperl-gofer/CSV/Default/dbh_ro/GetInfo.t                    (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   4
out/Default-gofer/Pg/Default/sth_ro/BasicPrepareExecuteSelect.t    (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/pureperl-gofer/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t  (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/Default/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t         (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4, 12
out/Default-gofer/SQLite/Default/sth_ro/BasicPrepareExecuteSelect.t (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   4
out/pureperl/CSV/Default/sth_ro/BasicPrepareExecuteSelect.t        (Wstat: 0 Tests: 15 Failed: 0)
  TODO passed:   12
out/Default-gofer/mysql/Default/dbh_ro/GetInfo.t                   (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   1-5
out/pureperl/CSV/Default/dbh_ro/GetInfo.t                          (Wstat: 0 Tests: 5 Failed: 0)
  TODO passed:   4
Files=30, Tests=200,  1 wallclock secs ( 0.12 usr  0.02 sys +  3.12 cusr  0.20 csys =  3.46 CPU)
Result: PASS

-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.19   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/        http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.