aboutsummaryrefslogtreecommitdiff
path: root/t/22-race.t
diff options
context:
space:
mode:
Diffstat (limited to 't/22-race.t')
-rwxr-xr-xt/22-race.t33
1 files changed, 33 insertions, 0 deletions
diff --git a/t/22-race.t b/t/22-race.t
new file mode 100755
index 0000000..07b9b74
--- /dev/null
+++ b/t/22-race.t
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Test::More;
+use Test::Exit;
+use FindBin '$RealBin';
+use lib "$RealBin/../SBO-Lib/lib";
+use SBO::Lib qw/ open_fh /;
+use Capture::Tiny qw/ capture_merged /;
+use File::Temp 'tempdir';
+
+plan tests => 1;
+
+sub emulate_race {
+ my ($file, $caller) = @_;
+ $caller = "SBO::Lib::$caller";
+
+ no warnings 'redefine';
+ *_race::cond = sub { unlink $file if $caller eq (caller(1))[3]; };
+}
+
+# 1: emulate race condition for open_fh
+{
+ my $tempdir = tempdir(CLEANUP => 1);
+ my $file = "$tempdir/foo";
+ system('touch', $file);
+
+ emulate_race($file, 'open_fh');
+
+ my ($fh, $exit) = open_fh $file, '<';
+ is ($exit, 6, 'open_fh returned exit value 6');
+}