lib/PublicInbox/WatchMaildir.pm | 7 ++++++- t/watch_maildir.t | 39 +++++++++++++++++++++++++++++++++++++++ diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index 35363755ca6373d6bab9f5f7e8c9f7937852b63a..f1a21b9b42d6cdaa9d7702305ba481c0410347a2 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -45,10 +45,14 @@ importers => {}, }, $class; } +sub _done_for_now { + $_->done foreach values %{$_[0]->{importers}}; +} + sub _try_fsn_paths { my ($self, $paths) = @_; _try_path($self, $_->{path}) foreach @$paths; - $_->done foreach values %{$self->{importers}}; + _done_for_now($self); } sub _try_path { @@ -133,6 +137,7 @@ } } closedir $dh; } + _done_for_now($self); } 1; diff --git a/t/watch_maildir.t b/t/watch_maildir.t new file mode 100644 index 0000000000000000000000000000000000000000..6564a8665830f2881d88c83ca6861fc4e98ad3a2 --- /dev/null +++ b/t/watch_maildir.t @@ -0,0 +1,39 @@ +# Copyright (C) 2016 all contributors +# License: AGPL-3.0+ +use Test::More; +use File::Temp qw/tempdir/; +use Email::MIME; +use PublicInbox::Config; + +my $tmpdir = tempdir('watch_maildir-XXXXXX', TMPDIR => 1, CLEANUP => 1); +my $git_dir = "$tmpdir/test.git"; +my $maildir = "$tmpdir/md"; +use_ok 'PublicInbox::WatchMaildir'; +use_ok 'PublicInbox::Emergency'; +my $cfgpfx = "publicinbox.test"; +my $addr = 'test-public@example.com'; +is(system(qw(git init -q --bare), $git_dir), 0, 'initialized git dir'); + +my $msg = < +Date: Sat, 18 Jun 2016 00:00:00 +0000 + +msg +EOF +PublicInbox::Emergency->new($maildir)->prepare(\$msg); + +my $config = PublicInbox::Config->new({ + "$cfgpfx.address" => $addr, + "$cfgpfx.mainrepo" => $git_dir, + "$cfgpfx.watch" => "maildir:$maildir", +}); + +PublicInbox::WatchMaildir->new($config)->scan; +my $git = PublicInbox::Git->new($git_dir); +my @list = $git->qx(qw(rev-list refs/heads/master)); +is(scalar @list, 1, 'one revision in rev-list'); + +done_testing;