X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F02where.t;h=299a0c5e665c982498ae134ecf1596e17e7f4e63;hb=df2ddf7787f93344c8e693c8f7cdc93aa55dfc4b;hp=9ea045b50342688ff61cf9bea96c987115daa6d2;hpb=c8d97b3d74d77a885a62e1d6fc712b2b058dc4c7;p=dbsrgits%2FSQL-Abstract.git diff --git a/t/02where.t b/t/02where.t index 9ea045b..299a0c5 100644 --- a/t/02where.t +++ b/t/02where.t @@ -1,17 +1,11 @@ -#!/usr/bin/perl - use strict; use warnings; use Test::More; -use Test::Fatal; -use SQL::Abstract::Test import => ['is_same_sql_bind']; +use Test::Warn; +use SQL::Abstract::Test import => [qw(is_same_sql_bind diag_where) ]; -use Data::Dumper; use SQL::Abstract; -# Make sure to test the examples, since having them break is somewhat -# embarrassing. :-( - my $not_stringifiable = bless {}, 'SQLA::NotStringifiable'; my @handle_tests = ( @@ -82,9 +76,6 @@ my @handle_tests = ( completion_date => { 'between', ['2002-10-01', '2003-02-06'] }, }, order => \'ticket, requestor', -#LDNOTE: modified parentheses -# -# acked by RIBASUSHI stmt => "WHERE ( ( completion_date BETWEEN ? AND ? ) AND status = ? ) ORDER BY ticket, requestor", bind => [qw/2002-10-01 2003-02-06 completed/], }, @@ -140,11 +131,9 @@ my @handle_tests = ( requestor => { 'like', undef }, }, order => \'requestor, ticket', -#LDNOTE: modified parentheses -# -# acked by RIBASUSHI stmt => " WHERE ( ( priority BETWEEN ? AND ? ) AND requestor IS NULL ) ORDER BY requestor, ticket", bind => [qw/1 3/], + warns => qr/Supplying an undefined argument to 'LIKE' is deprecated/, }, @@ -156,15 +145,11 @@ my @handle_tests = ( '>' => 10, }, }, -# LDNOTE : modified test below, just parentheses differ -# -# acked by RIBASUSHI stmt => " WHERE ( id = ? AND ( num <= ? AND num > ? ) )", bind => [qw/1 20 10/], }, { -# LDNOTE 23.03.09 : modified test below, just parentheses differ where => { foo => {-not_like => [7,8,9]}, fum => {'like' => [qw/a b/]}, nix => {'between' => [100,200] }, @@ -174,6 +159,7 @@ my @handle_tests = ( }, stmt => " WHERE ( ( ( foo NOT LIKE ? ) OR ( foo NOT LIKE ? ) OR ( foo NOT LIKE ? ) ) AND ( ( fum LIKE ? ) OR ( fum LIKE ? ) ) AND ( nix BETWEEN ? AND ? ) AND ( nox NOT BETWEEN ? AND ? ) AND wix IN ( ?, ? ) AND wux NOT IN ( ?, ? ) )", bind => [7,8,9,'a','b',100,200,150,160,'zz','yy','30','40'], + warns => qr/\QA multi-element arrayref as an argument to the inequality op 'NOT LIKE' is technically equivalent to an always-true 1=1/, }, { @@ -403,17 +389,14 @@ my @handle_tests = ( ); for my $case (@handle_tests) { - local $Data::Dumper::Terse = 1; my $sql = SQL::Abstract->new; - my($stmt, @bind); - ok(!(my $e = exception { + my ($stmt, @bind); + warnings_exist { ($stmt, @bind) = $sql->where($case->{where}, $case->{order}); - is_same_sql_bind($stmt, \@bind, $case->{stmt}, $case->{bind}) - || diag "Search term:\n" . Dumper $case->{where}; - })); - if ($e) { - fail "Died: $e: Search term:\n" . Dumper $case->{where}; - } + } $case->{warns} || []; + + is_same_sql_bind($stmt, \@bind, $case->{stmt}, $case->{bind}) + || diag_where ( $case->{where} ); } done_testing;