commit 0cf2c5f9fdd23288e1cf416390703afe83faab41
parent 3713625c0d84ba601129cd53033c88df9b0d4a65
Author: kyle <kyle@0x30.net>
Date: Wed, 10 Feb 2016 19:23:30 -0700
sl/tests: switch to using carp when failing tests
- carp's confess will give a nice stack trace of where you are
- this is much nicer than the primitive fail() we had before
Diffstat:
2 files changed, 30 insertions(+), 31 deletions(-)
diff --git a/server/tests/client.pm b/server/tests/client.pm
@@ -2,6 +2,7 @@ package client;
use strict;
use warnings;
+use Carp;
use IO::Socket::SSL;
use JSON::XS;
use Try::Tiny;
@@ -9,6 +10,7 @@ use test;
require "msgs.pl";
our (%msg_num, @msg_str);
+my $i = 0;
sub new {
my $class = shift;
@@ -33,6 +35,8 @@ sub new {
# Register this device immediately by default
if ($dont_register == 0) {
$self->device_add({ phone_number => rand_phnum(), os => 'unix' });
+ $self->device_update({ pushtoken_hex => "BADBEEF_$i" });
+ $i++;
}
return $self;
@@ -168,7 +172,7 @@ sub send_msg {
my $payload = encode_json($request);
my $msg_type = $self->{msg_type};
- fail "invalid message type $msg_type" if ($msg_type > @msg_str);
+ confess "invalid message type $msg_type" if ($msg_type > @msg_str);
my $version = 0;
my $payload_len = length($payload);
@@ -186,8 +190,8 @@ sub send_all {
my $bytes_written = $self->{sock}->syswrite($bytes);
- fail "write failed: $!" if (!defined $bytes_written);
- fail "wrote $bytes_written instead of $bytes_total bytes" if ($bytes_written != $bytes_total);
+ confess "write failed: $!" if (!defined $bytes_written);
+ confess "wrote $bytes_written instead of $bytes_total bytes" if ($bytes_written != $bytes_total);
return $bytes_total;
}
@@ -200,29 +204,31 @@ sub recv_msg {
my ($version, $msg_type, $payload_size) = unpack("nnn", $header);
# Check some things
- fail "unsupported protocol version $version" if ($version != 0);
- fail "unknown message type $msg_type" if ($msg_type >= @msg_str);
- fail "0 byte payload" if ($payload_size == 0);
- fail "unexpected message type $self->{msg_type}" if ($self->{msg_type} != $msg_type);
+ confess "unsupported protocol version $version" if ($version != 0);
+ confess "unknown message type $msg_type" if ($msg_type >= @msg_str);
+ confess "0 byte payload" if ($payload_size == 0);
+ confess "unexpected message type $self->{msg_type}" if ($self->{msg_type} != $msg_type);
# Read again for payload, $payload_size > 0
my $payload = read_all($self, $payload_size);
+ my $response;
try {
- my $response = decode_json($payload);
+ $response = decode_json($payload);
+ } catch {
+ confess "server sent invalid json";
+ };
- if (ref($response) ne "HASH") {
- fail "server didn't send back object root element";
- }
+ # Don't accept messages with an array root
+ if (ref($response) ne "HASH") {
+ confess "server didn't send back object root element";
+ }
- my $status = $response->{status};
- fail "wrong message status '$status'" if ($status ne $exp_status);
- $self->{err_msg} = $response->{reason} if ($status eq 'err');
+ my $status = $response->{status};
+ confess "wrong message status '$status'" if ($status ne $exp_status);
+ $self->{err_msg} = $response->{reason} if ($status eq 'err');
- return $response;
- } catch {
- fail "server sent invalid json";
- }
+ return $response;
}
sub read_all {
@@ -233,8 +239,8 @@ sub read_all {
while ($bytes_total > 0) {
my $read = $self->{sock}->sysread($data, $bytes_total, $bytes_read);
- fail "read failed: $!" unless (defined $read);
- fail "read EOF on socket" if ($read == 0);
+ confess "read failed: $!" unless (defined $read);
+ confess "read EOF on socket" if ($read == 0);
$bytes_total -= $read;
$bytes_read += $read;
diff --git a/server/tests/test.pm b/server/tests/test.pm
@@ -2,6 +2,7 @@ package test;
use strict;
use warnings;
+use Carp;
use Exporter qw(import);
use String::Random;
@@ -13,29 +14,21 @@ sub rand_phnum {
}
sub fail {
- my $msg = shift;
-
- my (undef, $file, $line) = caller;
- print "$file:$line: $msg\n";
- exit 1;
+ confess shift;
}
sub fail_msg_ne {
my ($arg1, $arg2) = @_;
return if ($arg1 eq $arg2);
- my (undef, $file, $line) = caller;
- print "$file:$line: expected string '$arg1' but got '$arg2'\n";
- exit 1;
+ confess "expected string '$arg1' but got '$arg2'";
}
sub fail_num_ne {
my ($msg, $arg1, $arg2) = @_;
return if ($arg1 == $arg2);
- my (undef, $file, $line) = caller;
- print "$file:$line: $msg $arg1 != $arg2\n";
- exit 1;
+ confess "$msg $arg1 != $arg2";
}
1;