use DBD::SQLite to run tests (if installed)
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 5 Sep 2004 16:04:35 +0000 (16:04 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 5 Sep 2004 16:04:35 +0000 (16:04 +0000)
git-svn-id: svn://svn.rot13.org/fuse_dbi/trunk@15 17f4e80c-d0e0-0310-8903-bfc3ae804c12

t/02database.t

index d0745b0..cd77dac 100755 (executable)
@@ -3,38 +3,75 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3;
+use Test::More;
 use blib;
 
+eval "use DBD::SQLite";
+plan skip_all => "DBD::SQLite required for testing" if $@;
+plan tests => 14;
+
+use_ok('DBI');
 use_ok('Fuse::DBI');
 
-my $sql_filenames = q{
+my $test_db = 'fusedbi.db';
+my $dsn = "DBI:SQLite:dbname=$test_db";
+my $mount = '/tmp/fuse_dbi_mnt';
+
+ok((! -e $test_db || unlink $test_db), "test db: $test_db");
+
+ok((! -e $mount || rmdir $mount), "mount point $mount");
+
+mkdir $mount || die "mkdir $mount: $!";
+ok(-d $mount, "mkdir $mount");
+
+ok(my $dbh = DBI->connect($dsn, , '', '', { RaiseError => 1 }),
+       "connect fusedbi test database");
+
+ok($dbh->do(qq{
+       create table files (
+               name text primary key,
+               data text
+       )
+}), "create table files");
+
+ok(my $sth = $dbh->prepare(qq{
+       insert into files (name,data) values (?,?)
+}), "prepare");
+
+foreach my $file (qw(file dir/file dir/subdir/file)) {
+       my $data = "this is test data\n" x length($file);
+       ok($sth->execute($file,$data), "insert $file");
+}
+
+my $sql_filenames = qq{
        select
-               oid as id,
-               namespace||'/'||name||' ['||oid||']' as filename,
-               length(template) as size,
-               iseditable as writable
-       from template ;
+               name as id,
+               name as filename,
+               length(data) as size,
+               0 as writable
+       from files
 };
 
-my $sql_read = q{
-       select template
-               from template
-               where oid = ?;
+my $sql_read = qq{
+       select data
+               from files
+               where name = ?;
 };
 
-my $sql_update = q{
-       update template
-               set template = ?        
-               where oid = ?;
+my $sql_update = qq{
+       update files
+               set data = ?    
+               where name = ?;
 };
 
+system "fusermount -q -u $mount" || diag "nothing mounted at $mount, ok";
+
 my $mnt = Fuse::DBI->mount({
        filenames => $sql_filenames,
        read => $sql_read,
        update => $sql_update,
-       dsn => 'DBI:Pg:dbname=webgui',
-       mount => '/mnt2',
+       dsn => $dsn,
+       mount => $mount,
 });
 
 ok($mnt, "mount");
@@ -44,3 +81,5 @@ my $foo = <STDIN>;
 
 ok($mnt->umount,"umount");
 
+ok(unlink $test_db,"rm $test_db");
+