The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;
use KiokuDB::Test;

use Scalar::Util qw(refaddr);

use KiokuDB::GIN;
use KiokuDB;

use KiokuDB::Backend::Hash;
use KiokuDB::Test::Fixture::Small;

use Search::GIN::Query::Class;
use Search::GIN::Extract::Class;

{
    package KiokuDB_Test_MyGIN;
    use Moose;

    extends qw(KiokuDB::Backend::Hash);

    with (
	    'KiokuDB::GIN',
	    'Search::GIN::Driver::Hash' => { -excludes => 'clear' },
	    'Search::GIN::Extract::Delegate',
    );

    sub clear {
        my $self = shift;

        # UGH
        $self->Search::GIN::Driver::Hash::clear(@_);
        $self->SUPER::clear(@_);
    }

    __PACKAGE__->meta->make_immutable;
}

my $gin = KiokuDB_Test_MyGIN->new(
    extract => Search::GIN::Extract::Class->new,
    root_only => 0,
);

my $dir = KiokuDB->new(
    backend => $gin,
);

run_all_fixtures($dir);


done_testing;