OSDN Git Service

83c50f29753b0a78f0f68802f8e129b86f2721e8
[android-x86/external-parted.git] / tests / t0220-gpt-msftres.sh
1 #!/bin/sh
2 # gpt default "flag" for a partition must not be msftres
3
4 # Copyright (C) 2009-2012 Free Software Foundation, Inc.
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19 . "${srcdir=.}/init.sh"; path_prepend_ ../parted
20
21 ss=$sector_size_
22 dev=loop-file
23
24 # FIXME: should be able to use "ufs" here, too, but that doesn't work.
25 fs_types='
26 ext2
27 fat16
28 fat32
29 hfs
30 hfs+
31 hfsx
32 linux-swap
33 NTFS
34 reiserfs
35 '
36
37 start=2048
38 part_size=2048
39 n_types=$(echo "$fs_types"|wc -w)
40
41 # Create a "disk" with enough room for one partition per FS type,
42 # and the overhead required for a GPT partition table.
43 # 32 is the number of 512-byte sectors required to accommodate the
44 # minimum size of the secondary GPT header at the end of the disk.
45 n_sectors=$(expr $start + $n_types \* $part_size + 1 + 32)
46
47 # create a test file large enough for one partition per FS type
48 dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
49
50 # create a gpt partition table
51 parted -s $dev mklabel gpt > out 2>&1 || fail=1
52 # expect no output
53 compare /dev/null out || fail=1
54
55 printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:gpt:;\n" > exp
56 i=1
57 for type in $fs_types; do
58   end=$(expr $start + $part_size - 1)
59   echo "$i:${start}s:${end}s:${part_size}s::$type:;" >> exp || fail=1
60   parted -s $dev mkpart primary $type ${start}s ${end}s > err 2>&1 || fail=1
61   compare /dev/null err || fail=1
62   parted -s $dev name $i $type > err 2>&1 || fail=1
63   compare /dev/null err || fail=1
64   start=$(expr $end + 1)
65   i=$(expr $i + 1)
66 done
67
68 # print partition table
69 parted -m -s $dev u s p > out 2>&1 || fail=1
70
71 sed "s,.*/$dev:,$dev:," out > k && mv k out && ok=1 || ok=0
72 # match against expected output
73 test $ok = 1 && { compare exp out || fail=1; }
74
75 Exit $fail