Version 1.31
[tar.git] / tests / onetop05.at
blob23eea8d1004f54b549fe9e3b1afb3311eea2ff65
1 # Process this file with autom4te to create testsuite. -*- Autotest -*-
3 # Test suite for GNU tar.
4 # Copyright 2015-2019 Free Software Foundation, Inc.
6 # This file is part of GNU tar.
8 # GNU tar is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 3 of the License, or
11 # (at your option) any later version.
13 # GNU tar is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
21 AT_SETUP([tar --one-top-level restoring permissions])
22 AT_KEYWORDS([extract onetop onetop05 chdir])
24 # When extracting an archive that contains ./ with the --one-top-level option,
25 # the mode and ownership of ./ would be incorrectly applied to the current
26 # working directory, instead of the requested top-level directory.
28 AT_TAR_CHECK([
29 orig_mode=3702
30 mkdir d
31 chmod $orig_mode d
33 mode=$(genfile --stat=mode.7777 d)
34 test $mode = $orig_mode || AT_SKIP_TEST
36 genfile --file d/file
37 tar -cf d.tar -C d .
38 rm -rf d
40 (mkdir d1
41 chmod 700 d1
42 cd d1
43 tar --one-top-level=top -xpf ../d.tar)
44 mode=$(genfile --stat=mode.777 d1)
45 if test 700 = $mode; then
46     echo "CWD: OK"
47 else
48     echo "CWD: mode changed: 700 != $mode"
51 mkdir d2
52 chmod 700 d2
53 tar -C d2 --one-top-level=top -xpf d.tar
54 mode=$(genfile --stat=mode.777 d2)
55 if test 700 = $mode; then
56     echo "DIR: OK"
57 else
58     echo "DIR: mode changed: 700 != $mode"
60 mode=$(genfile --stat=mode.7777 d2/top)
61 if test $mode = $orig_mode; then
62     echo "TOP: OK"
63 else    
64     echo "TOP: mode changed: $orig_mode != $mode"
67 [0],
68 [CWD: OK
69 DIR: OK
70 TOP: OK
73 AT_CLEANUP