Author: REHSACK
Date: Sat May 22 07:35:28 2010
New Revision: 14006
Added:
dbi/trunk/t/49dbd_file.t
Modified:
dbi/trunk/lib/DBI/DBD.pm
Log:
Add test for DBD::File basics
Modified: dbi/trunk/lib/DBI/DBD.pm
==============================================================================
--- dbi/trunk/lib/DBI/DBD.pm (original)
+++ dbi/trunk/lib/DBI/DBD.pm Sat May 22 07:35:28 2010
@@ -3331,7 +3331,7 @@
add => [ q{$ENV{DBI_AUTOPROXY} = 'dbi:Gofer:transport=null;policy=pedantic'} ],
},
n => { name => "DBI::SQL::Nano",
- match => qr/^(?:5\ddbm_\w+|85gofer)\.t$/,
+ match => qr/^(?:49dbd_file|5\ddbm_\w+|85gofer)\.t$/,
add => [ q{$ENV{DBI_SQL_NANO} = 1} ],
},
# mx => { name => "DBD::Multiplex",
Added: dbi/trunk/t/49dbd_file.t
==============================================================================
--- (empty file)
+++ dbi/trunk/t/49dbd_file.t Sat May 22 07:35:28 2010
@@ -0,0 +1,105 @@
+#!perl -w
+$|=1;
+
+use strict;
+
+use Test::More;
+
+my $using_dbd_gofer = ($ENV{DBI_AUTOPROXY}||'') =~ /^dbi:Gofer.*transport=/i;
+
+#use DBI;
+
+my $tbl;
+BEGIN { $tbl = "db_". $$ . "_" };
+END { $tbl and unlink glob "${tbl}*" }
+
+use_ok ("DBI");
+use_ok ("DBD::File");
+
+my $rowidx = 0;
+my @rows = ( [ 'Hello World' ], [ 'Hello DBI Developers' ], );
+
+my $dbh;
+
+# Check if we can connect at all
+ok ($dbh = DBI->connect ("dbi:File:"), "Connect clean");
+is (ref $dbh, "DBI::db", "Can connect to DBD::File driver");
+
+# Check if all the basic DBI attributes are accepted
+ok ($dbh = DBI->connect ("dbi:File:", undef, undef, {
+ RaiseError => 1,
+ PrintError => 1,
+ AutoCommit => 1,
+ ChopBlanks => 1,
+ ShowErrorStatement => 1,
+ FetchHashKeyName => "NAME_lc",
+ }), "Connect with DBI attributes");
+
+# Check if all the f_ attributes are accepted, in two ways
+ok ($dbh = DBI->connect ("dbi:File:f_ext=.txt;f_dir=.;f_encoding=cp1252;f_schema=test"), "Connect with driver attributes in DSN");
+
+my $encoding = "iso-8859-1";
+
+ok ($dbh = DBI->connect ("dbi:File:", undef, undef, {
+ f_ext => ".txt/r",
+ f_dir => ".",
+ f_schema => undef,
+ f_encoding => $encoding,
+ f_lock => 0,
+
+ RaiseError => 0,
+ PrintError => 0,
+ }), "Connect with driver attributes in hash");
+
+my $sth;
+ok ($sth = $dbh->prepare ("select * from t_sbdgf_53442Gz"), "Prepare select from non-existing file");
+
+{ my @msg;
+ eval {
+ local $SIG{__DIE__} = sub { push @msg, @_ };
+ $sth->execute;
+ };
+ like ("@msg", qr{Cannot open ./t_sbdgf_}, "Cannot open non-existing file");
+ }
+
+# Now test some basic SQL statements
+#if (open my $fh, ">", "$tbl.txt") {
+# print $fh "txt\nPlain text\n";
+# close $fh;
+# }
+ok ($dbh->do ("create table $tbl (txt varchar (20))"), "Create table $tbl");
+ok (-f "$tbl.txt", "Test table exists");
+
+ok ($sth = $dbh->prepare ("select * from $tbl"), "Prepare select *");
+$rowidx = 0;
+SKIP: {
+ skip "method intrusion didn't work with proxying", 1 if $using_dbd_gofer;
+ ok ($sth->execute, "execute");
+ diag $dbh->errstr if $dbh->errstr;
+}
+
+ok ($dbh->do ("drop table $tbl"), "table drop");
+is (-s "$tbl.txt", undef, "Test table removed");
+
+done_testing ();
+
+sub DBD::File::Table::fetch_row ($$)
+{
+ my ( $self, $data ) = @_;
+ my $meta = $self->{meta};
+ if( $rowidx >= scalar @rows ) {
+ $self->{row} = undef;
+ }
+ else {
+ $self->{row} = $rows[$rowidx++];
+ }
+ return $self->{row};
+ } # fetch_row
+
+
+sub DBD::File::Table::push_names ($$$)
+{
+ my ( $self, $data, $row_aryref ) = @_;
+ my $meta = $self->{meta};
+ @{$meta->{col_names}} = @{$row_aryref};
+ } # push_names
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.