Author: theory
Date: Mon Nov 22 21:03:03 2010
New Revision: 14549

Modified:
   DBD-Pg/trunk/t/06bytea.t

Log:
I think this is the best way to actually skip bytea formats on < 9.0.

Modified: DBD-Pg/trunk/t/06bytea.t
==============================================================================
--- DBD-Pg/trunk/t/06bytea.t    (original)
+++ DBD-Pg/trunk/t/06bytea.t    Mon Nov 22 21:03:03 2010
@@ -49,60 +49,60 @@
 $sth->{pg_server_prepare} = 1;
 ok ($sth->execute(404, $binary_out), $t);
 
-SKIP: {
-    my @output;
-    if ($pgversion < 90000) {
-        skip 'No BYTEA output format setting before 9.0', 5;
-    } else {
-        @output = (qw(hex escape));
-    }
-    for my $output (@output) {
-        $dbh->do(qq{SET bytea_output = '$output'}) if $output;
-
-        $t='Received correct text from BYTEA column with backslashes';
-        $t.=" ($output output)" if $output;
-        $sth = $dbh->prepare(q{SELECT bytetest FROM dbd_pg_test WHERE id=?});
-        $sth->execute(400);
-        my $byte = $sth->fetchall_arrayref()->[0][0];
-        my $exp = $output eq 'hex'
-            ? 'x61615c62625c63635c5c3064645c'
-            : 'aa\bb\cc\\\0dd\\';
-        is ($byte, $exp, $t);
-
-        $t='Received correct text from BYTEA column with quote';
-        $t.=" ($output output)" if $output;
-        $sth->execute(402);
-        $byte = $sth->fetchall_arrayref()->[0][0];
-        is ($byte, ($output eq 'hex' ? 'x27' : '\''), $t);
-
-        $t='Ensure proper handling of high bit characters';
-        $t.=" ($output output)" if $output;
-        $sth->execute(403);
-        ($binary_in) = $sth->fetchrow_array();
-        if ($output eq 'hex') {
-            my $hex = 'x' . unpack 'H*', $binary_out;
-            is $binary_in, $hex, $t;
-            $sth->execute(404);
-            ($binary_in) = $sth->fetchrow_array();
-            is $binary_in, $hex, $t;
-        } else {
-            ok ($binary_in eq $binary_out, $t);
-            $sth->execute(404);
-            ($binary_in) = $sth->fetchrow_array();
-            ok ($binary_in eq $binary_out, $t);
-        }
-
-        $t='quote properly handles bytea strings';
-        $t.=" ($output output)" if $output;
-        my $string = "abc\123\\def\0ghi";
-        my $result = $dbh->quote($string, { pg_type => PG_BYTEA });
-        my $E = $pgversion >= 80100 ? q{E} : q{};
-        my $expected = qq{${E}'abc\123\\\\\\\\def\\\\000ghi'};
-        is ($result, $expected, $t);
-    }
+if ($pgversion < 90000) {
+    test_outputs(undef);
+    SKIP { skip 'No BYTEA output format setting before 9.0', 10 };
+} else {
+    test_outputs($_) for qw(hex escape);
 }
 
 $sth->finish();
 
 cleanup_database($dbh,'test');
 $dbh->disconnect();
+
+sub test_outputs {
+    my $output = shift;
+    $dbh->do(qq{SET bytea_output = '$output'}) if $output;
+
+    $t='Received correct text from BYTEA column with backslashes';
+    $t.=" ($output output)" if $output;
+    $sth = $dbh->prepare(q{SELECT bytetest FROM dbd_pg_test WHERE id=?});
+    $sth->execute(400);
+    my $byte = $sth->fetchall_arrayref()->[0][0];
+    my $exp = $output eq 'hex'
+        ? 'x61615c62625c63635c5c3064645c'
+        : 'aa\bb\cc\\\0dd\\';
+    is ($byte, $exp, $t);
+
+    $t='Received correct text from BYTEA column with quote';
+    $t.=" ($output output)" if $output;
+    $sth->execute(402);
+    $byte = $sth->fetchall_arrayref()->[0][0];
+    is ($byte, ($output eq 'hex' ? 'x27' : '\''), $t);
+
+    $t='Ensure proper handling of high bit characters';
+    $t.=" ($output output)" if $output;
+    $sth->execute(403);
+    ($binary_in) = $sth->fetchrow_array();
+    if ($output eq 'hex') {
+        my $hex = 'x' . unpack 'H*', $binary_out;
+        is $binary_in, $hex, $t;
+        $sth->execute(404);
+        ($binary_in) = $sth->fetchrow_array();
+        is $binary_in, $hex, $t;
+    } else {
+        ok ($binary_in eq $binary_out, $t);
+        $sth->execute(404);
+        ($binary_in) = $sth->fetchrow_array();
+        ok ($binary_in eq $binary_out, $t);
+    }
+
+    $t='quote properly handles bytea strings';
+    $t.=" ($output output)" if $output;
+    my $string = "abc\123\\def\0ghi";
+    my $result = $dbh->quote($string, { pg_type => PG_BYTEA });
+    my $E = $pgversion >= 80100 ? q{E} : q{};
+    my $expected = qq{${E}'abc\123\\\\\\\\def\\\\000ghi'};
+    is ($result, $expected, $t);
+}

Reply via email to