commit d2802a486822805f5025095b5855bfc50885db93
parent e8e30e29e17fa14c6d1220e0366086d82f7cba1c
Author: kyle <kyle@getaddrinfo.net>
Date: Wed, 9 Dec 2015 23:24:04 -0700
sl: replace -d with -t
- -t will create a new temporary db and destroy it when the program finishes
- now we don't have to keep track of a temporary db
- this is mainly used for testing
Diffstat:
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/run_tests.sh b/run_tests.sh
@@ -22,14 +22,13 @@ ok() {
passed=0
failed=0
count=0
-tmp_file=`mktemp`
for t in `ls tests/*/Makefile`; do
count=`expr $count + 1`
test_dir=`dirname ${t}`
export TEST_DIR="$test_dir"
make -s -C $test_dir clean
- perl sl -p $PORT -d $tmp_file > $test_dir/server.log &
+ perl sl -p $PORT -t > $test_dir/server.log &
server_pid=$!
# run test, complain if it failed
@@ -53,7 +52,6 @@ for t in `ls tests/*/Makefile`; do
make -s -C $test_dir clean
ok $test_dir
done
-rm -f $tmp_file
echo
if [ $passed -ne 0 ]; then
diff --git a/sl b/sl
@@ -4,6 +4,7 @@ use strict;
use BSD::arc4random qw(:all);
use DBI;
+use File::Temp;
use Digest::SHA qw(sha256_base64);
use Getopt::Std;
use IO::Socket;
@@ -16,17 +17,15 @@ require "msgs.pl";
our (%msg_num, @msg_str, @msg_func, $protocol_ver);
my %args;
-getopts("p:d:", \%args);
+getopts("p:t", \%args);
+
+$SIG{TERM} = sub { exit };
my $db_file = "db";
-if ($args{d}) {
- $db_file = $args{d};
- unlink $db_file;
-}
-elsif (! -e $db_file) {
- log_print_bare("creating new database '$db_file'\n");
-}
+# EXLOCK needs to be 0 because SQLite expects it to be
+$db_file = File::Temp->new(SUFFIX => '.db', EXLOCK => 0) if ($args{t});
+log_print_bare("creating new database '$db_file'\n") unless (-e $db_file);
create_tables();
my $listen_sock = new IO::Socket::INET (