The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 6;
use Test::Exception;
use strict;
use warnings;

use AnyEvent::Filesys::Notify;

use Test::Without::Module qw(Linux::Inotify2 Mac::FSEvents IO::KQueue);

my $w = AnyEvent::Filesys::Notify->new(
    dirs        => ['t'],
    cb          => sub { },
    no_external => 1
);
isa_ok( $w, 'AnyEvent::Filesys::Notify' );
ok( $w->does('AnyEvent::Filesys::Notify::Role::Fallback'),  '... Fallback' );
ok( !$w->does('AnyEvent::Filesys::Notify::Role::Inotify2'), '... Inotify2' );
ok( !$w->does('AnyEvent::Filesys::Notify::Role::FSEvents'), '... FSEvents' );
ok( !$w->does('AnyEvent::Filesys::Notify::Role::KQueue'),   '... KQueue' );

SKIP: {
    skip 'Test for Mac/Linux/BSD only', 1
      unless $^O eq 'linux'
      or $^O eq 'darwin'
      or $^O =~ /bsd/;

    throws_ok {
        AnyEvent::Filesys::Notify->new( dirs => ['t'], cb => sub { } );
    }
    qr/You may want to install/, 'fails ok';
}

done_testing;