#!/usr/bin/perl -w use strict; use Test::More; use File::Temp qw(tempfile); use IO::Handle; my $tmpfh = tempfile(); my $truncate_status; eval { $truncate_status = truncate($tmpfh, 0); }; if ($@ || !defined($truncate_status)) { plan skip_all => 'Truncate not implemented or not working on this system'; } plan tests => 3; SKIP: { my $can_truncate_stdout = truncate(\*STDOUT,0); if ($can_truncate_stdout) { skip("This system thinks we can truncate STDOUT. Suuure!", 1); } eval { use autodie; truncate(\*STDOUT,0); }; isa_ok($@, 'autodie::exception', "Truncating STDOUT should throw an exception"); } eval { use autodie; no warnings 'once'; truncate(\*FOO, 0); }; isa_ok($@, 'autodie::exception', "Truncating an unopened file is wrong."); $tmpfh->print("Hello World"); $tmpfh->flush; eval { use autodie; truncate($tmpfh, 0); }; is($@, "", "Truncating a normal file should be fine");