File: test-file-attrs.sh

package info (click to toggle)
libguestfs 1%3A1.54.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 98,892 kB
  • sloc: ansic: 379,443; ml: 38,771; sh: 10,329; java: 9,631; cs: 6,377; haskell: 5,729; makefile: 5,178; python: 3,821; perl: 2,467; erlang: 2,461; ruby: 349; xml: 275; pascal: 257; javascript: 157; cpp: 10
file content (159 lines) | stat: -rwxr-xr-x 2,833 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/bin/bash -
# libguestfs
# Copyright (C) 2014 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

# Test guestfish file attributes commands (chmod, copy-attributes, etc).

set -e

$TEST_FUNCTIONS
skip_if_skipped

rm -f test-file-attrs.out

$VG guestfish > test-file-attrs.out <<EOF
scratch 50MB
run
part-disk /dev/sda mbr
mkfs ext2 /dev/sda1
mount /dev/sda1 /

touch /foo
touch /bar
chmod 0712 /foo
stat /foo | grep mode:
copy-attributes /foo /bar mode:true
stat /bar | grep mode:

echo -----

stat /foo | grep uid:
stat /foo | grep gid:
chown 10 11 /foo
stat /foo | grep uid:
stat /foo | grep gid:
stat /bar | grep uid:
stat /bar | grep gid:
copy-attributes /foo /bar ownership:true
stat /bar | grep uid:
stat /bar | grep gid:

echo -----

setxattr user.test foo 3 /foo
setxattr user.test2 secondtest 10 /foo
setxattr user.foo another 7 /bar
lxattrlist / "foo bar"
copy-attributes /foo /bar xattributes:true
lxattrlist / "foo bar"

echo -----

touch /new
chmod 0111 /new
copy-attributes /foo /new all:true mode:false
stat /new | grep mode:
stat /new | grep uid:
stat /new | grep gid:
lxattrlist / new
copy-attributes /foo /new mode:true
stat /new | grep mode:
EOF

if [ "$(cat test-file-attrs.out)" != "mode: 33226
mode: 33226
-----
uid: 0
gid: 0
uid: 10
gid: 11
uid: 0
gid: 0
uid: 10
gid: 11
-----
[0] = {
  attrname: 
  attrval: 2\x00
}
[1] = {
  attrname: user.test
  attrval: foo
}
[2] = {
  attrname: user.test2
  attrval: secondtest
}
[3] = {
  attrname: 
  attrval: 1\x00
}
[4] = {
  attrname: user.foo
  attrval: another
}
[0] = {
  attrname: 
  attrval: 2\x00
}
[1] = {
  attrname: user.test
  attrval: foo
}
[2] = {
  attrname: user.test2
  attrval: secondtest
}
[3] = {
  attrname: 
  attrval: 3\x00
}
[4] = {
  attrname: user.foo
  attrval: another
}
[5] = {
  attrname: user.test
  attrval: foo
}
[6] = {
  attrname: user.test2
  attrval: secondtest
}
-----
mode: 32841
uid: 10
gid: 11
[0] = {
  attrname: 
  attrval: 2\x00
}
[1] = {
  attrname: user.test
  attrval: foo
}
[2] = {
  attrname: user.test2
  attrval: secondtest
}
mode: 33226" ]; then
    echo "$0: unexpected output:"
    cat test-file-attrs.out
    exit 1
fi

rm test-file-attrs.out