#! /bin/bash # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (c) 2020 Oracle. All Rights Reserved. # # FS QA Test No. 522 # # Feed valid mkfs config files to the mkfs parser to ensure that they are # recognized as valid. # . ./common/preamble _begin_fstest auto quick mkfs # Override the default cleanup function. _cleanup() { cd / rm -f $tmp.* $def_cfgfile $fsimg } # Import common functions. . ./common/filter # real QA test starts here # Modify as appropriate. _supported_fs xfs _require_test _require_scratch_nocheck _require_xfs_mkfs_cfgfile def_cfgfile=$TEST_DIR/a fsimg=$TEST_DIR/a.img rm -f $def_cfgfile $fsimg $XFS_IO_PROG -c "truncate 20t" -f $fsimg test_mkfs_config() { local cfgfile="$1" if [ -z "$cfgfile" ] || [ "$cfgfile" = "-" ]; then cfgfile=$def_cfgfile cat > $cfgfile fi $MKFS_XFS_PROG -c options=$cfgfile -f -N $fsimg >> $seqres.full 2> $tmp.err cat $tmp.err | _filter_test_dir } echo Simplest config file cat > $def_cfgfile << ENDL [metadata] reflink = 0 ENDL test_mkfs_config $def_cfgfile echo Piped-in config file test_mkfs_config << ENDL [metadata] reflink = 0 ENDL test_mkfs_config << ENDL [metadata] reflink = 1 ENDL echo Full line comment test_mkfs_config << ENDL # This is a full line comment. [metadata] reflink = 0 ENDL test_mkfs_config << ENDL # This is a full line comment. [metadata] reflink = 0 ENDL test_mkfs_config << ENDL #This is a full line comment. [metadata] reflink = 0 ENDL echo End of line comment test_mkfs_config << ENDL [metadata] reflink = 0 ; This is an eol comment. ENDL test_mkfs_config << ENDL [metadata] reflink = 0 ;This is an eol comment. ENDL echo Multiple directives test_mkfs_config << ENDL [metadata] reflink = 0 finobt = 0 ENDL echo Multiple sections test_mkfs_config << ENDL [metadata] reflink = 0 [inode] sparse = 0 ENDL echo No directives at all test_mkfs_config << ENDL [metadata] ENDL echo Space around the section name test_mkfs_config << ENDL [metadata] reflink = 0 ENDL test_mkfs_config << ENDL [metadata] reflink = 0 ENDL test_mkfs_config << ENDL [metadata] reflink = 0 ENDL echo Single space around the key/value directive test_mkfs_config << ENDL [metadata] reflink=0 ENDL test_mkfs_config << ENDL [metadata] reflink =0 ENDL test_mkfs_config << ENDL [metadata] reflink= 0 ENDL test_mkfs_config << ENDL [metadata] reflink=0 ENDL echo Two spaces around the key/value directive test_mkfs_config << ENDL [metadata] reflink =0 ENDL test_mkfs_config << ENDL [metadata] reflink= 0 ENDL test_mkfs_config << ENDL [metadata] reflink=0 ENDL test_mkfs_config << ENDL [metadata] reflink = 0 ENDL test_mkfs_config << ENDL [metadata] reflink =0 ENDL test_mkfs_config << ENDL [metadata] reflink= 0 ENDL echo Three spaces around the key/value directive test_mkfs_config << ENDL [metadata] reflink = 0 ENDL test_mkfs_config << ENDL [metadata] reflink= 0 ENDL test_mkfs_config << ENDL [metadata] reflink = 0 ENDL echo Four spaces around the key/value directive test_mkfs_config << ENDL [metadata] reflink = 0 ENDL echo Arbitrary spaces and tabs test_mkfs_config << ENDL [metadata] reflink = 0 ENDL echo ambiguous comment/section names test_mkfs_config << ENDL [metadata] #[data] reflink = 0 ENDL echo ambiguous comment/variable names test_mkfs_config << ENDL [metadata] #foo = 0 ; is this a comment or a key '#foo' ? ENDL # success, all done status=0 exit