From: Norbert Buchmuller Date: Mon, 9 Feb 2009 21:29:41 +0000 (+0000) Subject: Added test for an expected warning. X-Git-Tag: v1.70~241 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7fb57243a512b1b95b7b646abd828b9a7d114775;p=dbsrgits%2FSQL-Abstract.git Added test for an expected warning. --- diff --git a/Makefile.PL b/Makefile.PL index d360b63..b6eaab2 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -11,6 +11,7 @@ WriteMakefile( "Test::Builder" => 0, "Test::More" => 0, "Test::Exception" => 0, + "Test::Warn" => 0, "Test::Deep" => 0, "Data::Dumper" => 0, }, # e.g., Module::Name => 1.1 diff --git a/t/01generate.t b/t/01generate.t index 319f1a9..0e955aa 100644 --- a/t/01generate.t +++ b/t/01generate.t @@ -3,6 +3,7 @@ use strict; use warnings; use Test::More; +use Test::Warn; use SQL::Abstract::Test import => ['is_same_sql_bind']; @@ -367,29 +368,52 @@ my @tests = ( stmt => 'INSERT INTO test (a, b, c, d, e) VALUES (?, ?, ?, ?, ?)', stmt_q => 'INSERT INTO `test` (`a`, `b`, `c`, `d`, `e`) VALUES (?, ?, ?, ?, ?)', bind => [qw/1 2 3 4/, { answer => 42}], + warning_like => qr/HASH ref as bind value in insert is not supported/i, }, ); -plan tests => scalar(@tests) * 2; +plan tests => scalar(grep { !$_->{warning_like} } @tests) * 2 + + scalar(grep { $_->{warning_like} } @tests) * 4; for (@tests) { local $"=', '; my $new = $_->{new} || {}; $new->{debug} = $ENV{DEBUG} || 0; - my $sql = SQL::Abstract->new(%$new); - #print "testing with args (@{$_->{args}}): "; - my $func = $_->{func}; - my($stmt, @bind) = $sql->$func(@{$_->{args}}); - is_same_sql_bind($stmt, \@bind, $_->{stmt}, $_->{bind}); + # test without quoting labels + { + my $sql = SQL::Abstract->new(%$new); + + my $func = $_->{func}; + my($stmt, @bind); + my $test = sub { + ($stmt, @bind) = $sql->$func(@{$_->{args}}) + }; + if ($_->{warning_like}) { + warning_like { &$test } $_->{warning_like}, "throws the expected warning ($_->{warning_like})"; + } else { + &$test; + } + is_same_sql_bind($stmt, \@bind, $_->{stmt}, $_->{bind}); + } # test with quoted labels - my $sql_q = SQL::Abstract->new(%$new, quote_char => '`', name_sep => '.'); + { + my $sql_q = SQL::Abstract->new(%$new, quote_char => '`', name_sep => '.'); - my $func_q = $_->{func}; - my($stmt_q, @bind_q) = $sql_q->$func_q(@{$_->{args}}); + my $func_q = $_->{func}; + my($stmt_q, @bind_q); + my $test = sub { + ($stmt_q, @bind_q) = $sql_q->$func_q(@{$_->{args}}) + }; + if ($_->{warning_like}) { + warning_like { &$test } $_->{warning_like}, "throws the expected warning ($_->{warning_like})"; + } else { + &$test; + } - is_same_sql_bind($stmt_q, \@bind_q, $_->{stmt_q}, $_->{bind}); + is_same_sql_bind($stmt_q, \@bind_q, $_->{stmt_q}, $_->{bind}); + } }