xfs/530: skip test if user MKFS_OPTIONS screw up formatting
[xfstests-dev.git] / tests / xfs / 523
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0-or-later
3 # Copyright (c) 2020 Oracle.  All Rights Reserved.
4 #
5 # FS QA Test No. 523
6 #
7 # Feed invalid mkfs config files to the mkfs parser to ensure that they are
8 # recognized as invalid.
9 #
10 . ./common/preamble
11 _begin_fstest auto quick mkfs
12
13 # Override the default cleanup function.
14 _cleanup()
15 {
16         cd /
17         rm -f $tmp.* $def_cfgfile $fsimg
18 }
19
20 # Import common functions.
21 . ./common/filter
22
23 # real QA test starts here
24
25 # Modify as appropriate.
26 _supported_fs xfs
27 _require_test
28 _require_scratch_nocheck
29 _require_xfs_mkfs_cfgfile
30
31 def_cfgfile=$TEST_DIR/a
32 fsimg=$TEST_DIR/a.img
33 rm -f $def_cfgfile $fsimg
34 $XFS_IO_PROG -c "truncate 20t" -f $fsimg
35
36 test_mkfs_config() {
37         local cfgfile="$1"
38         if [ -z "$cfgfile" ] || [ "$cfgfile" = "-" ]; then
39                 cfgfile=$def_cfgfile
40                 cat > $cfgfile
41         fi
42         $MKFS_XFS_PROG -c options=$cfgfile -f -N $fsimg >> $seqres.full 2> $tmp.err
43         if [ $? -eq 0 ]; then
44                 echo "Test passed, should have failed! Config file parameters:"
45                 cat $cfgfile
46         fi
47 }
48
49 echo Spaces in a section name
50 test_mkfs_config << ENDL
51 [meta data]
52 crc = 0
53 ENDL
54 test_mkfs_config << ENDL
55 [meta   data]
56 crc = 0
57 ENDL
58 test_mkfs_config << ENDL
59 [ metadata]
60 crc = 0
61 ENDL
62 test_mkfs_config << ENDL
63 [metadata ]
64 crc = 0
65 ENDL
66 test_mkfs_config << ENDL
67 [ metadata ]
68 crc = 0
69 ENDL
70 test_mkfs_config << ENDL
71 [ metadata] 
72 crc = 0
73 ENDL
74 test_mkfs_config << ENDL
75 [metadata ] 
76 crc = 0
77 ENDL
78 test_mkfs_config << ENDL
79  [ metadata]
80 crc = 0
81 ENDL
82 test_mkfs_config << ENDL
83  [metadata ]
84 crc = 0
85 ENDL
86 test_mkfs_config << ENDL
87  [ metadata ]
88 crc = 0
89 ENDL
90 test_mkfs_config << ENDL
91  [metadata ] 
92 crc = 0
93 ENDL
94 test_mkfs_config << ENDL
95  [ metadata ] 
96 crc = 0
97 ENDL
98 test_mkfs_config << ENDL
99                                  [                              metadata                                          ]                             
100 crc = 0
101 ENDL
102
103 echo Spaces in the middle of a key name
104 test_mkfs_config << ENDL
105 [metadata]
106 c rc = 0
107 ENDL
108
109 echo Invalid value
110 test_mkfs_config << ENDL
111 [metadata]
112 crc = waffles
113 ENDL
114
115 echo Nonexistent sections
116 test_mkfs_config << ENDL
117 [goober]
118 crc = 0
119 ENDL
120
121 echo Nonexistent keys
122 test_mkfs_config << ENDL
123 [metadata]
124 goober = 0
125 ENDL
126
127 echo Only zero or one
128 test_mkfs_config << ENDL
129 [metadata]
130 crc = 50
131 ENDL
132 test_mkfs_config << ENDL
133 [metadata]
134 crc = -1
135 ENDL
136
137 echo sysctl style files
138 test_mkfs_config << ENDL
139 metadata.crc = 1
140 ENDL
141
142 echo binaries
143 test_mkfs_config $MKFS_XFS_PROG 2>&1 | sed -e "s#$MKFS_XFS_PROG#MKFS_XFS_PROG#g"
144
145 echo respecified options
146 test_mkfs_config << ENDL
147 [metadata]
148 crc = 0
149 crc = 1
150 ENDL
151
152 echo respecified sections
153 test_mkfs_config << ENDL
154 [metadata]
155 crc = 0
156 [metadata]
157 crc = 1
158 ENDL
159
160 echo ambiguous comment/section names
161 test_mkfs_config << ENDL
162 [meta#data]
163 crc = 0
164 ENDL
165
166 echo ambiguous comment/variable names
167 test_mkfs_config << ENDL
168 [metadata]
169 fo#o = 0
170 ENDL
171 test_mkfs_config << ENDL
172 [metadata]
173 foo#=# 0
174 ENDL
175 test_mkfs_config << ENDL
176 [metadata]
177 foo =# 0
178 ENDL
179 test_mkfs_config << ENDL
180 [metadata]
181 crc = 0;This is an eol comment.
182 ENDL
183
184 # success, all done
185 status=0
186 exit