aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/spamcat2
-rwxr-xr-xt/bin.t46
-rw-r--r--t/lib.t4
3 files changed, 44 insertions, 8 deletions
diff --git a/bin/spamcat b/bin/spamcat
index dfc0876..9af410d 100755
--- a/bin/spamcat
+++ b/bin/spamcat
@@ -101,7 +101,7 @@ if ($#ARGV >= 0) {
print "$sender has $count messages remaining.\n";
} elsif ($cmd eq 'set') {
my ($sender, $count) = @ARGV;
- pod2usage(1) unless $count && $count =~ /\d+/;
+ pod2usage(1) unless defined($count) && $count =~ /\d+/;
$sch->set_count($sender, $count);
print "$sender has $count messages remaining.\n";
} else {
diff --git a/t/bin.t b/t/bin.t
index 5431242..2c59e20 100755
--- a/t/bin.t
+++ b/t/bin.t
@@ -1,12 +1,35 @@
#!/usr/bin/env perl
-use Test::More tests => 3;
+use Test::More tests => 9;
use IO::File;
use strict;
use warnings;
+my ($tmpdir, $tmpconf);
+BEGIN {
+ $tmpdir = "/tmp/spamcat.t.$$";
+ $tmpconf = "$tmpdir/spamcat.conf";
+
+ system("rm -rf $tmpdir") == 0
+ or die "Couldn't remove $tmpdir: $!\n";
+ mkdir $tmpdir;
+ system("sqlite3 $tmpdir/spamcat.sqlite3 < config/create-tables.sql") == 0
+ or die "Couldn't create $tmpdir/spamcat.sqlite3: $!\n";
+
+ my $fh = IO::File->new("> $tmpdir/spamcat.conf") ||
+ die "Couldn't create $tmpdir/spamcat.conf: $!\n";
+ print $fh "DBPATH = $tmpdir/spamcat.sqlite3\n";
+ print $fh "DEFAULT_COUNT = 20\n";
+ print $fh "DELIVER = t/delivert $tmpdir\n";
+ print $fh "DOMAINS = spamcat.example.com\n";
+}
+
+END {
+ system "rm -rf $tmpdir";
+}
+
my $spamcat = 'bin/spamcat';
my $conffile = 't/fixtures/sample.conf';
@@ -21,12 +44,25 @@ my %expected = (DBPATH => '/tmp/spamcat.sqlite3',
is_deeply(\%got, \%expected);
# Unknown senders have the default number of mails left.
-my @got = `$spamcat -c $conffile get unknown-sender`;
-is_deeply(\@got, ["unknown-sender has $expected{DEFAULT_COUNT} messages remaining.\n"]);
+my @got = `$spamcat -c $tmpconf get unknown-sender`;
+is_deeply(\@got, ["unknown-sender has 20 messages remaining.\n"]);
# Missing argument to set fails.
-my $got = system("$spamcat -c $conffile set missing-argument") >> 8;
-is_deeply($got, 1);
+my $got = system("$spamcat -c $tmpconf set missing-argument") >> 8;
+is($got, 1);
+
+# Can set/get remaining count.
+@got = `$spamcat -c $tmpconf set foo 1`;
+is($?, 0);
+is_deeply(\@got, ["foo has 1 messages remaining.\n"]);
+@got = `$spamcat -c $tmpconf get foo`;
+is_deeply(\@got, ["foo has 1 messages remaining.\n"]);
+
+@got = `$spamcat -c $tmpconf set foo 0`;
+is($?, 0);
+is_deeply(\@got, ["foo has 0 messages remaining.\n"]);
+@got = `$spamcat -c $tmpconf get foo`;
+is_deeply(\@got, ["foo has 0 messages remaining.\n"]);
sub parse_configdump {
my %rc;
diff --git a/t/lib.t b/t/lib.t
index b814c78..8afc46e 100644
--- a/t/lib.t
+++ b/t/lib.t
@@ -14,10 +14,10 @@ BEGIN {
domains => ['spamcat.example.com', 'spamcat2.example.com']);
system("rm -rf $tmpdir") == 0
- or die "Couldn't remove ‘$tmpdir’: $!\n";
+ or die "Couldn't remove $tmpdir: $!\n";
mkdir $tmpdir;
system("sqlite3 $conf{dbpath} < config/create-tables.sql") == 0
- or die "Couldn't create ‘$conf{dbpath}’: $!\n";
+ or die "Couldn't create $conf{dbpath}: $!\n";
}
END {