summaryrefslogtreecommitdiff
path: root/dist/Storable/t/testlib.pl
diff options
context:
space:
mode:
Diffstat (limited to 'dist/Storable/t/testlib.pl')
-rw-r--r--dist/Storable/t/testlib.pl38
1 files changed, 38 insertions, 0 deletions
diff --git a/dist/Storable/t/testlib.pl b/dist/Storable/t/testlib.pl
new file mode 100644
index 0000000000..6d885d7f68
--- /dev/null
+++ b/dist/Storable/t/testlib.pl
@@ -0,0 +1,38 @@
+#!perl -w
+use strict;
+use vars '$file';
+
+$file = "storable-testfile.$$";
+die "Temporary file '$file' already exists" if -e $file;
+
+END { while (-f $file) {unlink $file or die "Can't unlink '$file': $!" }}
+
+use Storable qw (store retrieve freeze thaw nstore nfreeze);
+
+sub slurp {
+ my $file = shift;
+ local (*FH, $/);
+ open FH, "<$file" or die "Can't open '$file': $!";
+ binmode FH;
+ my $contents = <FH>;
+ die "Can't read $file: $!" unless defined $contents;
+ return $contents;
+}
+
+sub store_and_retrieve {
+ my $data = shift;
+ unlink $file or die "Can't unlink '$file': $!";
+ open FH, ">$file" or die "Can't open '$file': $!";
+ binmode FH;
+ print FH $data or die "Can't print to '$file': $!";
+ close FH or die "Can't close '$file': $!";
+
+ return eval {retrieve $file};
+}
+
+sub freeze_and_thaw {
+ my $data = shift;
+ return eval {thaw $data};
+}
+
+$file;