blob: 05251b0e22be787cc05a7dc591f76da562608361 [file] [log] [blame]
#! /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