File: 10_filecontent.t

package info (click to toggle)
libdbd-sqlite3-perl 1.44-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 6,756 kB
  • ctags: 10,154
  • sloc: ansic: 94,394; perl: 7,064; makefile: 6
file content (62 lines) | stat: -rw-r--r-- 1,672 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/perl
use strict;
BEGIN {
	$|  = 1;
	$^W = 1;
}


use t::lib::Test qw/connect_ok/;
use Test::More;
use Test::NoWarnings;
use FindBin;

plan tests => 13;

my $dbh = connect_ok( RaiseError => 1, PrintError => 0, AutoCommit => 1 );

# create index table
$dbh->do(<<"");
  CREATE TABLE base (id INTEGER PRIMARY KEY, foo TEXT, path TEXT, bar TEXT)

$dbh->do(<<"");
  INSERT INTO base VALUES(1, 'foo1', '00_base.t', 'bar1')

$dbh->do(<<"");
  INSERT INTO base VALUES(2, 'foo2', '10_filecontent.t', 'bar2')


# start tests

ok $dbh->sqlite_create_module(fs => "DBD::SQLite::VirtualTable::FileContent"),
   "create_module";


ok $dbh->do(<<""), "create vtable";
  CREATE VIRTUAL TABLE vfs USING fs(source = base,
                                    expose = "path, foo, bar",
                                    root   = "$FindBin::Bin")

my $sql  = "SELECT content, bar, rowid FROM vfs WHERE foo='foo2'";
my $rows = $dbh->selectall_arrayref($sql, {Slice => {}});

is scalar(@$rows), 1, "got 1 row";

is $rows->[0]{bar},   'bar2', 'got bar2';
is $rows->[0]{rowid}, 2,      'got rowid';

like $rows->[0]{content}, qr/VIRTUAL TABLE vfs/, 'file content';

$sql  = "SELECT * FROM vfs ORDER BY rowid";
$rows = $dbh->selectall_arrayref($sql, {Slice => {}});
is scalar(@$rows), 2, "got 2 rows";
is_deeply([sort keys %{$rows->[0]}], [qw/bar content foo path/], "col list OK");
is $rows->[0]{bar},   'bar1', 'got bar1';
is $rows->[1]{bar},   'bar2', 'got bar2';


# expensive  request (reads content from  all files in table) !
$sql  = "SELECT * FROM vfs WHERE content LIKE '%filesys%'";
$rows = $dbh->selectall_arrayref($sql, {Slice => {}});
is scalar(@$rows), 1, "got 1 row";