| #! /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 |