sbotools2

Maintenance fork of the original sbotools version 2
Log | Files | Refs | README

commit 343c71cfa9f54d13f61727bf10cf9dc7bdf44949
parent c13edd93d68415fd4dce8af5c1258001b1d6194c
Author: Andreas Guldstrand <andreas.guldstrand@gmail.com>
Date:   Thu, 12 May 2016 18:32:33 +0200

25-race.t: Add test for race in open_fh

Diffstat:
At/24-race.t | 33+++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+), 0 deletions(-)

diff --git a/t/24-race.t b/t/24-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'); +}