Update of /cvsroot/file-extattr/File-ExtAttr/t In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv32007/t Modified Files: 11basic.t 13long.t 14optional.t 20tie-basic.t Added Files: 30nsbasic.t 32nsnonuser.t 33nslong.t 39nsempty.t Removed Files: 12nonuser.t Log Message: Initial support for cross-platform namespacing on Linux --- NEW FILE: 33nslong.t --- #!perl -T # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl Linux-xattr.t' ######################### # change 'tests => 2' to 'tests => last_test_to_print'; # XXX: Refactor the common bits between this and 11basic.t # into Test::Class classes? use strict; use Test::More tests => 16; use File::Temp qw(tempfile); use File::ExtAttr qw(setfattr getfattr delfattr); use IO::File; my $TESTDIR = ($ENV{ATTR_TEST_DIR} || '.'); my ($fh, $filename) = tempfile( DIR => $TESTDIR ); close $fh || die "can't close $filename $!"; #todo: try wierd characters in here? # try unicode? my $key = "alskdfjadf2340zsdflksjdfa09eralsdkfjaldkjsldkfj"; my $longval = 'A' x $File::ExtAttr::MAX_INITIAL_VALUELEN; my $longval2 = 'A' x ($File::ExtAttr::MAX_INITIAL_VALUELEN + 11); ########################## # Filename-based tests # ########################## print "# using $filename\n"; #for (1..30000) { #checking memory leaks #check a really big one, bigger than $File::ExtAttr::MAX_INITIAL_VALUELEN #Hmmm, 3991 is the biggest number that doesn't generate "no space left on device" #on my /var partition, and 920 is the biggest for my loopback partition. #What's up with that? #setfattr($filename, "$key-2", ('x' x 3991)) || die "setfattr failed on $filename: $!"; setfattr($filename, "$key", $longval, { namespace => 'user' }) || die "setfattr failed on $filename: $!"; #set it is (setfattr($filename, "$key", $longval, { namespace => 'user' }), 1); #read it back is (getfattr($filename, "$key", { namespace => 'user' }), $longval); #delete it ok (delfattr($filename, "$key", { namespace => 'user' })); #check that it's gone is (getfattr($filename, "$key", { namespace => 'user' }), undef); #set it is (setfattr($filename, "$key", $longval2, { namespace => 'user' }), 1); #read it back is (getfattr($filename, "$key", { namespace => 'user' }), $longval2); #delete it ok (delfattr($filename, "$key", { namespace => 'user' })); #check that it's gone is (getfattr($filename, "$key", { namespace => 'user' }), undef); #} #print STDERR "done\n"; #<STDIN>; ########################## # IO::Handle-based tests # ########################## $fh = new IO::File("<$filename") || die "Unable to open $filename"; print "# using file descriptor ".$fh->fileno()."\n"; #for (1..30000) { #checking memory leaks #check a really big one, bigger than $File::ExtAttr::MAX_INITIAL_VALUELEN #Hmmm, 3991 is the biggest number that doesn't generate "no space left on device" #on my /var partition, and 920 is the biggest for my loopback partition. #What's up with that? #setfattr($filename, "$key-2", ('x' x 3991)) || die "setfattr failed on $filename: $!"; setfattr($fh, "$key", $longval, { namespace => 'user' }) || die "setfattr failed on file descriptor ".$fh->fileno().": $!"; #set it is (setfattr($fh, "$key", $longval, { namespace => 'user' }), 1); #read it back is (getfattr($fh, "$key"), $longval, { namespace => 'user' }); #delete it ok (delfattr($fh, "$key", { namespace => 'user' })); #check that it's gone is (getfattr($fh, "$key", { namespace => 'user' }), undef); #set it is (setfattr($fh, "$key", $longval2, { namespace => 'user' }), 1); #read it back is (getfattr($fh, "$key", { namespace => 'user' }), $longval2); #delete it ok (delfattr($fh, "$key", { namespace => 'user' })); #check that it's gone is (getfattr($fh, "$key", { namespace => 'user' }), undef); #} #print STDERR "done\n"; #<STDIN>; END {unlink $filename if $filename}; --- NEW FILE: 30nsbasic.t --- #!perl -T # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl Linux-xattr.t' ########################## # change 'tests => 2' to 'tests => last_test_to_print'; use strict; use Test::More tests => 8; use File::Temp qw(tempfile); use File::ExtAttr qw(setfattr getfattr delfattr); use IO::File; my $TESTDIR = ($ENV{ATTR_TEST_DIR} || '.'); my ($fh, $filename) = tempfile( DIR => $TESTDIR ); close $fh || die "can't close $filename $!"; #todo: try wierd characters in here? # try unicode? my $key = "alskdfjadf2340zsdflksjdfa09eralsdkfjaldkjsldkfj"; my $val = "ZZZadlf03948alsdjfaslfjaoweir12l34kealfkjalskdfas90d8fajdlfkj./.,f"; ########################## # Filename-based tests # ########################## print "# using $filename\n"; #for (1..30000) { #checking memory leaks #will die if xattr stuff doesn't work at all setfattr($filename, "$key", $val, { namespace => 'user' }) || die "setfattr failed on filename $filename: $!"; #set it is (setfattr($filename, "$key", $val, { namespace => 'user' }), 1); #read it back is (getfattr($filename, "$key", { namespace => 'user' }), $val); #delete it ok (delfattr($filename, "$key", { namespace => 'user' })); #check that it's gone is (getfattr($filename, "$key", { namespace => 'user' }), undef); #} #print STDERR "done\n"; #<STDIN>; ########################## # IO::Handle-based tests # ########################## $fh = new IO::File("<$filename") || die "Unable to open $filename"; print "# using file descriptor ".$fh->fileno()."\n"; #for (1..30000) { #checking memory leaks #will die if xattr stuff doesn't work at all setfattr($fh, "$key", $val, { namespace => 'user' }) || die "setfattr failed on file descriptor ".$fh->fileno().": $!"; #set it is (setfattr($fh, "$key", $val, { namespace => 'user' }), 1); #read it back is (getfattr($fh, "$key", { namespace => 'user' }), $val); #delete it ok (delfattr($fh, "$key", { namespace => 'user' })); #check that it's gone is (getfattr($fh, "$key", { namespace => 'user' }), undef); #} #print STDERR "done\n"; #<STDIN>; END {unlink $filename if $filename}; Index: 13long.t =================================================================== RCS file: /cvsroot/file-extattr/File-ExtAttr/t/13long.t,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** 13long.t 31 Dec 2005 14:12:46 -0000 1.2 --- 13long.t 19 Aug 2006 14:06:25 -0000 1.3 *************** *** 38,68 **** #on my /var partition, and 920 is the biggest for my loopback partition. #What's up with that? ! #setfattr($filename, "user.$key-2", ('x' x 3991), 0) || die "setfattr failed on $filename: $!"; ! setfattr($filename, "user.$key", $longval, 0) || die "setfattr failed on $filename: $!"; #set it ! is (setfattr($filename, "user.$key", $longval, 0), 1); #read it back ! is (getfattr($filename, "user.$key"), $longval); #delete it ! ok (delfattr($filename, "user.$key")); #check that it's gone ! is (getfattr($filename, "user.$key"), undef); #set it ! is (setfattr($filename, "user.$key", $longval2, 0), 1); #read it back ! is (getfattr($filename, "user.$key"), $longval2); #delete it ! ok (delfattr($filename, "user.$key")); #check that it's gone ! is (getfattr($filename, "user.$key"), undef); #} #print STDERR "done\n"; --- 38,68 ---- #on my /var partition, and 920 is the biggest for my loopback partition. #What's up with that? ! #setfattr($filename, "$key-2", ('x' x 3991)) || die "setfattr failed on $filename: $!"; ! setfattr($filename, "$key", $longval) || die "setfattr failed on $filename: $!"; #set it ! is (setfattr($filename, "$key", $longval), 1); #read it back ! is (getfattr($filename, "$key"), $longval); #delete it ! ok (delfattr($filename, "$key")); #check that it's gone ! is (getfattr($filename, "$key"), undef); #set it ! is (setfattr($filename, "$key", $longval2), 1); #read it back ! is (getfattr($filename, "$key"), $longval2); #delete it ! ok (delfattr($filename, "$key")); #check that it's gone ! is (getfattr($filename, "$key"), undef); #} #print STDERR "done\n"; *************** *** 82,112 **** #on my /var partition, and 920 is the biggest for my loopback partition. #What's up with that? ! #setfattr($filename, "user.$key-2", ('x' x 3991), 0) || die "setfattr failed on $filename: $!"; ! setfattr($fh, "user.$key", $longval, 0) || die "setfattr failed on file descriptor ".$fh->fileno().": $!"; #set it ! is (setfattr($fh, "user.$key", $longval, 0), 1); #read it back ! is (getfattr($fh, "user.$key"), $longval); #delete it ! ok (delfattr($fh, "user.$key")); #check that it's gone ! is (getfattr($fh, "user.$key"), undef); #set it ! is (setfattr($fh, "user.$key", $longval2, 0), 1); #read it back ! is (getfattr($fh, "user.$key"), $longval2); #delete it ! ok (delfattr($fh, "user.$key")); #check that it's gone ! is (getfattr($fh, "user.$key"), undef); #} #print STDERR "done\n"; --- 82,112 ---- #on my /var partition, and 920 is the biggest for my loopback partition. #What's up with that? ! #setfattr($filename, "$key-2", ('x' x 3991)) || die "setfattr failed on $filename: $!"; ! setfattr($fh, "$key", $longval) || die "setfattr failed on file descriptor ".$fh->fileno().": $!"; #set it ! is (setfattr($fh, "$key", $longval), 1); #read it back ! is (getfattr($fh, "$key"), $longval); #delete it ! ok (delfattr($fh, "$key")); #check that it's gone ! is (getfattr($fh, "$key"), undef); #set it ! is (setfattr($fh, "$key", $longval2), 1); #read it back ! is (getfattr($fh, "$key"), $longval2); #delete it ! ok (delfattr($fh, "$key")); #check that it's gone ! is (getfattr($fh, "$key"), undef); #} #print STDERR "done\n"; Index: 20tie-basic.t =================================================================== RCS file: /cvsroot/file-extattr/File-ExtAttr/t/20tie-basic.t,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** 20tie-basic.t 15 Aug 2006 09:13:18 -0000 1.3 --- 20tie-basic.t 19 Aug 2006 14:06:25 -0000 1.4 *************** *** 22,26 **** # Test multiple attributes. ! my %test_attrs = ( 'user.foo' => '123', 'user.bar' => '456' ); my $k; --- 22,26 ---- # Test multiple attributes. ! my %test_attrs = ( 'foo' => '123', 'bar' => '456' ); my $k; Index: 14optional.t =================================================================== RCS file: /cvsroot/file-extattr/File-ExtAttr/t/14optional.t,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** 14optional.t 13 Dec 2005 21:36:09 -0000 1.1 --- 14optional.t 19 Aug 2006 14:06:25 -0000 1.2 *************** *** 28,44 **** #will die if xattr stuff doesn't work at all ! setfattr($filename, "user.$key", $val) || die "setfattr failed on $filename: $!"; #set it ! is (setfattr($filename, "user.$key", $val), 1); #read it back ! is (getfattr($filename, "user.$key"), $val); #delete it ! ok (delfattr($filename, "user.$key")); #check that it's gone ! is (getfattr($filename, "user.$key"), undef); #} #print STDERR "done\n"; --- 28,44 ---- #will die if xattr stuff doesn't work at all ! setfattr($filename, "$key", $val) || die "setfattr failed on $filename: $!"; #set it ! is (setfattr($filename, "$key", $val), 1); #read it back ! is (getfattr($filename, "$key"), $val); #delete it ! ok (delfattr($filename, "$key")); #check that it's gone ! is (getfattr($filename, "$key"), undef); #} #print STDERR "done\n"; --- NEW FILE: 39nsempty.t --- #!perl -T # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl Linux-xattr.t' ########################## # Test an explicitly empty namespace use strict; use Test::More tests => 8; use File::Temp qw(tempfile); use File::ExtAttr qw(setfattr getfattr delfattr); use IO::File; my $TESTDIR = ($ENV{ATTR_TEST_DIR} || '.'); my ($fh, $filename) = tempfile( DIR => $TESTDIR ); close $fh || die "can't close $filename $!"; #todo: try wierd characters in here? # try unicode? my $key = "alskdfjadf2340zsdflksjdfa09eralsdkfjaldkjsldkfj"; my $val = "ZZZadlf03948alsdjfaslfjaoweir12l34kealfkjalskdfas90d8fajdlfkj./.,f"; ########################## # Filename-based tests # ########################## print "# using $filename\n"; #set it - should fail undef $@; eval { setfattr($filename, "$key", $val, { namespace => '' }); }; isnt ($@, undef); #read it back - should be missing is (getfattr($filename, "$key", { namespace => '' }), undef); #delete it - should fail is (delfattr($filename, "$key", { namespace => '' }), 0); #check that it's gone is (getfattr($filename, "$key", { namespace => '' }), undef); ########################## # IO::Handle-based tests # ########################## $fh = new IO::File("<$filename") || die "Unable to open $filename"; print "# using file descriptor ".$fh->fileno()."\n"; undef $@; eval { setfattr($fh->fileno(), "$key", $val, { namespace => '' }); }; isnt ($@, undef); #read it back - should be missing is (getfattr($fh->fileno(), "$key", { namespace => '' }), undef); #delete it - should fail is (delfattr($fh->fileno(), "$key", { namespace => '' }), 0); #check that it's gone is (getfattr($fh->fileno(), "$key", { namespace => '' }), undef); END {unlink $filename if $filename}; Index: 11basic.t =================================================================== RCS file: /cvsroot/file-extattr/File-ExtAttr/t/11basic.t,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** 11basic.t 31 Dec 2005 14:12:46 -0000 1.2 --- 11basic.t 19 Aug 2006 14:06:25 -0000 1.3 *************** *** 33,49 **** #will die if xattr stuff doesn't work at all ! setfattr($filename, "user.$key", $val, 0) || die "setfattr failed on filename $filename: $!"; #set it ! is (setfattr($filename, "user.$key", $val, 0), 1); #read it back ! is (getfattr($filename, "user.$key"), $val); #delete it ! ok (delfattr($filename, "user.$key")); #check that it's gone ! is (getfattr($filename, "user.$key"), undef); #} #print STDERR "done\n"; --- 33,49 ---- #will die if xattr stuff doesn't work at all ! setfattr($filename, "$key", $val) || die "setfattr failed on filename $filename: $!"; #set it ! is (setfattr($filename, "$key", $val), 1); #read it back ! is (getfattr($filename, "$key"), $val); #delete it ! ok (delfattr($filename, "$key")); #check that it's gone ! is (getfattr($filename, "$key"), undef); #} #print STDERR "done\n"; *************** *** 61,78 **** #will die if xattr stuff doesn't work at all ! setfattr($fh, "user.$key", $val, 0) || die "setfattr failed on file descriptor ".$fh->fileno().": $!"; #set it ! is (setfattr($fh, "user.$key", $val, 0), 1); #read it back ! is (getfattr($fh, "user.$key"), $val); #delete it ! ok (delfattr($fh, "user.$key")); #check that it's gone ! is (getfattr($fh, "user.$key"), undef); #} #print STDERR "done\n"; --- 61,78 ---- #will die if xattr stuff doesn't work at all ! setfattr($fh, "$key", $val) || die "setfattr failed on file descriptor ".$fh->fileno().": $!"; #set it ! is (setfattr($fh, "$key", $val), 1); #read it back ! is (getfattr($fh, "$key"), $val); #delete it ! ok (delfattr($fh, "$key")); #check that it's gone ! is (getfattr($fh, "$key"), undef); #} #print STDERR "done\n"; --- 12nonuser.t DELETED --- --- NEW FILE: 32nsnonuser.t --- #!perl -T # -*-perl-*- # Test that creating non-"user."-prefixed attributes fails. # XXX: Probably Linux-specific use strict; use Test::More tests => 4; use File::Temp qw(tempfile); use File::ExtAttr qw(setfattr getfattr delfattr); # Snaffle away the warnings for later analysis. my $warning; $SIG{'__WARN__'} = sub { $warning = $_[0] }; my $TESTDIR = ($ENV{ATTR_TEST_DIR} || '.'); my ($fh, $filename) = tempfile( DIR => $TESTDIR ); close $fh || die "can't close $filename $!"; print "# using $filename\n"; #todo: try wierd characters in here? # try unicode? my $key = "alskdfjadf2340zsdflksjdfa09eralsdkfjaldkjsldkfj"; my $val = "ZZZadlf03948alsdjfaslfjaoweir12l34kealfkjalskdfas90d8fajdlfkj./.,f"; #set it setfattr($filename, "$key", $val, { namespace => 'nonuser' }); is ($warning =~ /Operation not supported/, 1); #read it back is (getfattr($filename, "$key", { namespace => 'nonuser' }), undef); #delete it delfattr($filename, "$key", { namespace => 'nonuser' }); is ($warning =~ /Operation not supported/, 1); #check that it's gone is (getfattr($filename, "$key", { namespace => 'nonuser' }), undef); END {unlink $filename if $filename}; |