Re: Problems with DBI 1.617_903 on MSWin32

"H.Merijn Brand" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On Tue, 21 Feb 2012 22:01:24 +0000, Tim Bunce <[email protected]>
wrote:

> DBI 1.617_903 has a 100% pass rate on everything except MSWin32, where
> there are three reports so far and 100% failure:
> 
>     http://matrix.cpantesters.org/?dist=DBI%201.617_903;reports=1;os=mswin32
> 
>     Result      Id              OS vers archname                        Perl version
>     FAIL        19976962        5.1     MSWin32-x86-multi-thread        5.12.3  
>     UNKNOWN     20072290        5.2     MSWin32-x86-multi-thread        5.10.1  
>     UNKNOWN     20005629        5.2     MSWin32-x86-multi-thread        5.12.4  
> 
> The first report passes all except gofer tests. Those fail with:
> 
>     No such directory 'C:strawberrycpanbuildDBI-1.617_903-P91t7htest_output_5384'
> 
> which seems rather long and lacking in delimeters.
> http://www.cpantesters.org/cpan/report/2fb308b8-6c8f-1014-bc6b-040f0163837e
> This problem seems to have existed in DBI 1.617, causing it to always
> fail on MSWin32 (along with an error in t/16destroy.t). DBI 1.616 was ok.
> 
> 
> The other two reports are 'UNKNOWN' due to compile-time errors:
> 
>     error C2065: 'my_cxtp' : undeclared identifier
> 
> which seems clearly related to the recent changes.
> 
> Given the minor differences in Perl versions (5.12.3 vs 5.12.4) it seems
> like the "OS vers" (5.1 vs 5.2) may be significant here.
> 
> 
> Can anyone help with either of these?
> 
> Tim.
> 
> p.s. Once these are fixed I'll probably release DBI 1.618 without the
> DBIS change as I've not had time to consider that in the detail it needs.

Analysis and possible fix at the end ...

Tested DBI_1.617_903 on Win7-Pro/64 + Strawberry 5.14.2
           (v5.14.2) built for MSWin32-x64-multi-thread

Test Summary Report
-------------------
t/85gofer.t                   (Wstat: 256 Tests: 57 Failed: 1)
  Failed test:  5
  Non-zero exit status: 1
t/zvg_85gofer.t               (Wstat: 256 Tests: 55 Failed: 1)
  Failed test:  3
  Non-zero exit status: 1
t/zvn_85gofer.t               (Wstat: 256 Tests: 57 Failed: 1)
  Failed test:  5
  Non-zero exit status: 1
t/zvxgn_85gofer.t             (Wstat: 256 Tests: 55 Failed: 1)
  Failed test:  3
  Non-zero exit status: 1
Files=182, Tests=7107, 45 wallclock secs ( 1.58 usr +  0.51 sys =  2.09 CPU)
Result: FAIL
Failed 4/182 test programs. 4/7107 subtests failed.
dmake:  Error code 255, while making 'test_dynamic'


t/85gofer.t ..................... 1/?
#   Failed test 'null: Testing null transport with pedantic policy aborted (No such directory 'C:strawberrycpanbuildDBI-1.617_903test_output_5472')
# '
#   at t/85gofer.t line 113.
# Looks like you failed 1 test of 57.
t/85gofer.t ..................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/57 subtests
        (less 4 skipped subtests: 52 okay)


C:\strawberry\cpan\build\DBI-1.617_903>prove -vwb t\85gofer.t
t\85gofer.t ..
# Transports: null pipeone stream stream_ssh
# Policies: pedantic classic rush
# Count: 0
# =============
# Testing null transport with pedantic policy
#  dbi:Gofer:transport=null;policy=pedantic;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0
ok 1 - should connect to dbi:Gofer:transport=null;policy=pedantic;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0
ok 2
ok 3

ok 4
#   Failed test 'null: Testing null transport with pedantic policy aborted (No such directory 'C:strawberrycpanbuildDBI-1.617_903test_output_4772')
not ok 5 - null: Testing null transport with pedantic policy aborted (No such directory 'C:strawberrycpanbuildDBI-1.617_903test_output_4772')# '

#   at t\85gofer.t line 113.
#
# =============
# Testing null transport with classic policy
#  dbi:Gofer:transport=null;policy=classic;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0
ok 6 - should connect to dbi:Gofer:transport=null;policy=classic;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0
ok 7
ok 8
ok 9
ok 10 - The object isa DBI::st
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17 - go_response executed flag should be true
ok 18
ok 19
ok 20
ok 21
# Testing go_request_count and caching of simple values
ok 22
ok 23
ok 24
# use_remote=0 (policy=classic, transport=null) HASH(0x31524c0)
ok 25
ok 26
ok 27
ok 28 # skip caching of metadata methods returning sth not yet implemented
ok 29 # skip caching of metadata methods returning sth not yet implemented
ok 30
ok 31
# =============
# Testing null transport with rush policy
#  dbi:Gofer:transport=null;policy=rush;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0
ok 32 - should connect to dbi:Gofer:transport=null;policy=rush;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0
ok 33
ok 34
ok 35
ok 36 - The object isa DBI::st
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
ok 43 - go_response executed flag should be true
ok 44
ok 45
ok 46
ok 47
# Testing go_request_count and caching of simple values
ok 48
ok 49
ok 50
# use_remote=0 (policy=rush, transport=null) HASH(0x3166ab0)
ok 51# Looks like you failed 1 test of 57.

ok 52
ok 53
ok 54 # skip caching of metadata methods returning sth not yet implemented
ok 55 # skip caching of metadata methods returning sth not yet implemented
ok 56
ok 57
1..57
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/57 subtests
        (less 4 skipped subtests: 52 okay)

Test Summary Report
-------------------
t\85gofer.t (Wstat: 256 Tests: 57 Failed: 1)
  Failed test:  5
  Non-zero exit status: 1
Files=1, Tests=57,  0 wallclock secs ( 0.06 usr +  0.02 sys =  0.08 CPU)
Result: FAIL

C:\strawberry\cpan\build\DBI-1.617_903>



I see:

#  dbi:Gofer:transport=null;policy=rush;dsn=DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_4772;dbm_type=SDBM_File;f_lockfile=0

   f_dir => test_dir (),

test_dir () uses the correct syntax for Windows, and will return

   C:\strawberry\cpan\build\DBI-1.617_903\test_output_6836

or alike, but that should be passed to f_dir with forward slashes?

my @remote_dsns = DBI->data_sources( "dbi:DBM:", {
    dbm_type => $opt_dbm,
    f_lockfile => 0,
    f_dir => test_dir() } );

The first entry is

 DBI:DBM:f_dir=C\:\strawberry\cpan\build\DBI-1.617_903\test_output_6016;dbm_type=SDBM_File;f_lockfile=0

Is the DSN parser seeing those \'s as escapes to be able to escape
the ':' in C: ?

If you'd move the f_dir assignment from 

my @remote_dsns = DBI->data_sources( "dbi:DBM:", {
    dbm_type => $opt_dbm,
    f_lockfile => 0,
    } );

to

    my $dbh = DBI->connect($dsn, undef, undef, { RaiseError => 1, PrintError => 0, ShowErrorStatement => 1, f_dir => test_dir() } );
    die "$test_run_tag aborted: $DBI::errstr\n" unless $dbh; # no point continuing
    ok $dbh, sprintf "should connect to %s", $dsn;

all tests pass

-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.14   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.