--- /dev/null
+#!perl
+use strict;
+use Test::More;
+use File::Slurp;
+
+use IO::Handle ;
+
+use UNIVERSAL ;
+
+plan tests => 4;
+
+my $path = "data.txt";
+my $data = "random junk\n";
+
+# create an object
+my $obj = FileObject->new($path);
+isa_ok( $obj, 'FileObject' );
+is( "$obj", $path, "check that the object correctly stringifies" );
+
+my $is_glob = eval{ $obj->isa( 'GLOB' ) } ;
+#print "GLOB $is_glob\n" ;
+
+my $is_io = eval{ $obj->isa( 'IO' ) } ;
+#print "IO $is_io\n" ;
+
+my $io = IO::Handle->new() ;
+#print "IO2: $io\n" ;
+
+my $is_io2 = eval{ $io->isa( 'GLOB' ) } ;
+#print "IO2 $is_io2\n" ;
+
+open( FH, "<$0" ) or die "can't open $0: $!" ;
+
+my $io3 = *FH{IO} ;
+#print "IO3: $io3\n" ;
+
+my $is_io3 = eval{ $io3->isa( 'IO' ) } ;
+#print "IO3 $is_io3\n" ;
+
+my $io4 = *FH{GLOB} ;
+#print "IO4: $io4\n" ;
+
+my $is_io4 = eval{ $io4->isa( 'GLOB' ) } ;
+#print "IO4 $is_io4\n" ;
+
+
+SKIP: {
+ # write something to that file
+ open(FILE, ">$obj") or skip 4, "can't write to '$path': $!";
+ print FILE $data;
+ close(FILE);
+
+ # pass it to read_file()
+ my $content = eval { read_file($obj) };
+ is( $@, '', "passing an object to read_file()" );
+ is( $content, $data, "checking that the content matches the data" );
+}
+
+unlink $path;
+
+
+# the following mimics the parts from Path::Class causing
+# problems with File::Slurp
+package FileObject;
+use overload
+ q[""] => \&stringify, fallback => 1;
+
+sub new {
+ return bless { path => $_[1] }, $_[0]
+}
+
+sub stringify {
+ return $_[0]->{path}
+}
+
--- /dev/null
+partial lineline 1
+line 2
+more
--- /dev/null
+#!perl -T
+
+use strict;
+
+use Test::More;
+use File::Slurp;
+use IO::Handle ;
+use UNIVERSAL ;
+
+plan tests => 3 ;
+
+my $path = "data.txt";
+my $data = "random junk\n";
+
+# create an object with an overloaded path
+
+my $obj = FileObject->new( $path ) ;
+
+isa_ok( $obj, 'FileObject' ) ;
+is( "$obj", $path, "object stringifies to path" );
+
+write_file( $obj, $data ) ;
+
+my $read_text = read_file( $obj ) ;
+is( $data, $read_text, 'read_file of stringified object' ) ;
+
+unlink $path ;
+
+exit ;
+
+# this code creates the object which has a stringified path
+
+package FileObject;
+
+use overload
+ q[""] => \&stringify,
+ fallback => 1 ;
+
+sub new {
+ return bless { path => $_[1] }, $_[0]
+}
+
+sub stringify {
+ return $_[0]->{path}
+}
--- /dev/null
+#!perl -T
+
+use strict;
+use Test::More;
+use File::Slurp;
+
+plan 'skip_all', "Scalar::Util not available" unless
+ eval 'use Scalar::Util qw(tainted) ; tainted($0) ; 1';
+
+plan 'tests', 5;
+
+my $path = "data.txt";
+my $data = "random junk\nline2";
+
+SKIP: {
+ # write something to that file
+ open(FILE, ">$path") or skip 4, "can't write to '$path': $!";
+ print FILE $data;
+ close(FILE);
+
+ # read the file using File::Slurp in scalar context
+ my $content = eval { read_file($path) };
+ is( $@, '', "read_file() in scalar context" );
+ ok( tainted($content), " => returned content should be tainted" );
+
+
+# # reconstruct the full lines by merging items by pairs
+# for my $k (0..int($#lines/2)) {
+# my $i = $k * 2;
+# $lines[$k] = (defined $lines[$i] ? $lines[$i] : '')
+# . (defined $lines[$i+1] ? $lines[$i+1] : '');
+# }
+
+# # remove the rest of the items
+# splice(@lines, int($#lines/2)+1);
+# pop @lines unless $lines[-1];
+
+# $_ .= $/ for @lines ;
+
+# my @lines = split m{$/}, $content, -1;
+# my @parts = split m{($/)}, $content, -1;
+
+# # my @parts = $content =~ m{.+?(?:$/)?}g ;
+
+# my @lines ;
+# while( @parts > 2 ) {
+
+# my( $line, $sep ) = splice( @parts, 0, 2 ) ;
+# push @lines, "$line$sep" ;
+# }
+
+# push @lines, shift @parts if @parts ;
+
+# # ok( tainted($lines[0]), " text => returned content should be tainted" );
+
+ # read the file using File::Slurp in list context
+ my @content = eval { read_file($path) };
+ is( $@, '', "read_file() in list context" );
+ ok( tainted($content[0]), " => returned content should be tainted" );
+
+ my $text = join( '', @content ) ;
+
+ is( $text, $content, "list eq scalar" );
+
+
+# ok( tainted($lines[0]), " => returned content should be tainted" );
+}
+
+unlink $path;