AnyEvent-ForkObject

 view release on metacpan or  search on metacpan

t/02_dbi.t  view on Meta::CPAN

#!/usr/bin/perl

use warnings;
use strict;
use utf8;
use open qw(:std :utf8);
use lib qw(lib ../lib);

use Test::More;
use Encode qw(decode encode);

use File::Temp qw(tempfile tempdir);
use File::Spec::Functions qw(catfile);
use File::Path qw(remove_tree);

BEGIN {
    my $builder = Test::More->builder;
    binmode $builder->output,         ":utf8";
    binmode $builder->failure_output, ":utf8";
    binmode $builder->todo_output,    ":utf8";

    eval {
        require DBI;
        require DBD::SQLite;
    };

    if ($@) {
        plan skip_all => "DBD::SQLite isn't installed properly";
    } else {
        plan tests => 12;
    }

    use_ok 'AnyEvent';
    use_ok 'AnyEvent::ForkObject';
    use_ok 'AnyEvent::Tools', 'async_repeat';
}

sub rand_str();

our $tmp_dir = tempdir;
END { remove_tree $tmp_dir if $tmp_dir and -d $tmp_dir };

my $cv = condvar AnyEvent;
my $fo = new AnyEvent::ForkObject;

my $db_file = catfile $tmp_dir, 'db.sqlite';

my $dbh;
$fo->do(
    method  => 'connect',
    module  => 'DBI',
    args    => [ "dbi:SQLite:dbname=$db_file", '', '', { RaiseError => 1 } ],
    cb      => sub {
        my ($s, $db) = @_;
        $dbh = $db;
        ok $s eq 'ok', 'DBI connected';
        $dbh->do(q{
            CREATE TABLE tbl
            (
                id      INTEGER PRIMARY KEY AUTOINCREMENT,
                txt     TEXT NOT NULL
            )
        }, sub {
            my ($s, $res) = @_;
            diag explain \@_ unless ok $s eq 'ok', 'Table "tbl" was created';

            my $count = 0;



( run in 0.579 second using v1.01-cache-2.11-cpan-39bf76dae61 )