From: Peter Rabbitson Date: Fri, 14 Aug 2015 05:22:33 +0000 (+0100) Subject: Trap expected t/746sybase.t warnings, use LC_ALL instead of LANG X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5241250d8ed0c5b8e186382eb365147c9de6ffd5;p=dbsrgits%2FDBIx-Class.git Trap expected t/746sybase.t warnings, use LC_ALL instead of LANG --- diff --git a/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm b/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm index fcbd0a7..280f250 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm @@ -678,7 +678,7 @@ sub _insert_bulk { if ($exception =~ /-Y option/) { my $w = 'Sybase bulk API operation failed due to character set incompatibility, ' - . 'reverting to regular array inserts. Try unsetting the LANG environment variable' + . 'reverting to regular array inserts. Try unsetting the LC_ALL environment variable' ; $w .= "\n$exception" if $self->debug; carp $w; @@ -1130,7 +1130,7 @@ L call, eg.: B the L calls in your C classes B list columns in database order for this -to work. Also, you may have to unset the C environment variable before +to work. Also, you may have to unset the C environment variable before loading your app, as C is not yet supported in DBD::Sybase . When inserting IMAGE columns using this method, you'll need to use diff --git a/t/746sybase.t b/t/746sybase.t index ea08cbb..2536bcd 100644 --- a/t/746sybase.t +++ b/t/746sybase.t @@ -6,6 +6,8 @@ no warnings 'uninitialized'; use Test::More; use Test::Exception; +use DBIx::Class::_Util 'sigwarn_silencer'; + use lib qw(t/lib); use DBICTest; @@ -202,6 +204,10 @@ SQL unless $storage_type !~ /NoBindVars/i; lives_ok { + + local $SIG{__WARN__} = sigwarn_silencer(qr/Sybase bulk API operation failed due to character set incompatibility/) + unless $ENV{DBICTEST_SYBASE_SUBTEST_RERUN}; + $schema->resultset('Artist')->populate([ { name => 'bulk artist 1', @@ -266,6 +272,9 @@ SQL # test invalid _insert_bulk (missing required column) # throws_ok { + local $SIG{__WARN__} = sigwarn_silencer(qr/Sybase bulk API operation failed due to character set incompatibility/) + unless $ENV{DBICTEST_SYBASE_SUBTEST_RERUN}; + $schema->resultset('Artist')->populate([ { charfield => 'foo', @@ -602,12 +611,13 @@ SQL is $ping_count, 0, 'no pings'; -# if tests passed and did so under a non-C lang - let's rerun the test -if (Test::Builder->new->is_passing and $ENV{LANG} and $ENV{LANG} ne 'C') { - my $oldlang = $ENV{LANG}; - local $ENV{LANG} = 'C'; +# if tests passed and did so under a non-C LC_ALL - let's rerun the test +if (Test::Builder->new->is_passing and $ENV{LC_ALL} and $ENV{LC_ALL} ne 'C') { + + pass ("Your LC_ALL is set to $ENV{LC_ALL} - retesting with C"); - pass ("Your lang is set to $oldlang - retesting with C"); + local $ENV{LC_ALL} = 'C'; + local $ENV{DBICTEST_SYBASE_SUBTEST_RERUN} = 1; local $ENV{PATH}; my @cmd = map { $_ =~ /(.+)/ } ($^X, __FILE__);