X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fstorage%2Fdebug.t;h=e3cef381ec2154032171b708d4154f9e23d81a54;hb=c0329273268971824784f239f32c7246e68da9c5;hp=f28d4b5f7a8d50e1818b3dacf264decd5efa370d;hpb=68b8ba54e535ba5e68e044b3bedec73b20500b72;p=dbsrgits%2FDBIx-Class.git diff --git a/t/storage/debug.t b/t/storage/debug.t index f28d4b5..e3cef38 100644 --- a/t/storage/debug.t +++ b/t/storage/debug.t @@ -1,17 +1,26 @@ +BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) } + use strict; use warnings; no warnings 'once'; +BEGIN { + delete @ENV{qw( + DBIC_TRACE + DBIC_TRACE_PROFILE + DBICTEST_SQLITE_USE_FILE + DBICTEST_VIA_REPLICATED + )}; +} + use Test::More; use Test::Exception; use Try::Tiny; use File::Spec; -use lib qw(t/lib); + use DBICTest; use Path::Class qw/file/; -BEGIN { delete @ENV{qw(DBIC_TRACE DBIC_TRACE_PROFILE DBICTEST_SQLITE_USE_FILE)} } - my $schema = DBICTest->init_schema(); my $lfn = file("t/var/sql-$$.log"); @@ -24,6 +33,7 @@ $schema->storage->debugobj(DBIx::Class::Storage::Statistics->new); ok ( $schema->storage->debug(1), 'debug' ); $schema->storage->debugfh($lfn->openw); +$schema->storage->debugfh->autoflush(1); $schema->resultset('CD')->count; my @loglines = $lfn->slurp; @@ -68,11 +78,12 @@ my $exception = try { open(STDERR, '>&STDERRCOPY'); }; -like $exception, qr/ +ok $exception =~ / \QDuplication of STDERR for debug output failed (perhaps your STDERR is closed?)\E .+ \Qat @{[__FILE__]} line $exception_line_number\E$ -/xms; +/xms + or diag "Unexpected exception text:\n\n$exception\n"; my @warnings; $exception = try { @@ -94,7 +105,6 @@ die "How did that fail... $exception" is_deeply(\@warnings, [], 'No warnings with unicode on STDERR'); - # test debugcb and debugobj protocol { my $rs = $schema->resultset('CD')->search( { @@ -136,4 +146,40 @@ is_deeply(\@warnings, [], 'No warnings with unicode on STDERR'); is_deeply ( $do->{_traced_bind}, \@bind_trace ); } +# recreate test as seen in DBIx::Class::QueryLog +# the rationale is that if someone uses a non-IO::Handle object +# on CPAN, many are *bound* to use one on darkpan. Thus this +# test to ensure there is no future silent breakage +{ + my $output = ""; + + { + package DBICTest::_Printable; + + sub print { + my ($self, @args) = @_; + $output .= join('', @args); + } + } + + $schema->storage->debugobj(undef); + $schema->storage->debug(1); + $schema->storage->debugfh( bless {}, "DBICTest::_Printable" ); + $schema->storage->txn_do( sub { $schema->resultset('Artist')->count } ); + + like ( + $output, + qr/ + \A + ^ \QBEGIN WORK\E \s*? + ^ \QSELECT COUNT( * ) FROM artist me:\E \s*? + ^ \QCOMMIT\E \s*? + \z + /xm + ); + + $schema->storage->debug(0); + $schema->storage->debugfh(undef); +} + done_testing;