1#!perl -w
2# -*-perl-*-
3
4# Test that creating non-"user."-prefixed attributes fails.
5# XXX: Probably Linux-specific
6
7use strict;
8use Test::More;
9
10BEGIN {
11  my $tlib = $0;
12  $tlib =~ s|/[^/]*$|/lib|;
13  push(@INC, $tlib);
14}
15use t::Support;
16
17if (t::Support::should_skip()) {
18  plan skip_all => 'Tests unsupported on this OS/filesystem';
19} else {
20  plan tests => 8;
21}
22
23use File::Temp qw(tempfile);
24use File::Path;
25use File::ExtAttr qw(setfattr getfattr delfattr);
26
27my $TESTDIR = ($ENV{ATTR_TEST_DIR} || '.');
28my ($fh, $filename) = tempfile( DIR => $TESTDIR );
29close $fh or die "can't close $filename $!";
30
31# Create a directory.
32my $dirname = "$filename.dir";
33eval { mkpath($dirname); };
34if ($@) {
35    warn "Couldn't create $dirname: $@";
36}
37
38#todo: try wierd characters in here?
39#     try unicode?
40my $key = "alskdfjadf2340zsdflksjdfa09eralsdkfjaldkjsldkfj";
41my $val = "ZZZadlf03948alsdjfaslfjaoweir12l34kealfkjalskdfas90d8fajdlfkj./.,f";
42
43foreach ( $filename, $dirname ) {
44    print "# using $_\n";
45
46    #set it
47    setfattr($_, "$key", $val, { namespace => 'nonuser' });
48    my $err = int $!;
49    is ($err, $!{EOPNOTSUPP});
50
51    #read it back
52    is (getfattr($_, "$key", { namespace => 'nonuser' }), undef);
53
54    #delete it
55    delfattr($_, "$key", { namespace => 'nonuser' });
56    $err = int $!;
57    is ($err, $!{EOPNOTSUPP});
58
59    #check that it's gone
60    is (getfattr($_, "$key", { namespace => 'nonuser' }), undef);
61}
62
63END {
64    unlink $filename if $filename;
65    rmdir $dirname if $dirname;
66};
67