blob: a91238f447b54905139f4c2720a920a62e2fed35 [file] [log] [blame]
#! /bin/sh
# Copyright (C) 2011-2024 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Sanity check for the automake testsuite.
# Check the 'unindent' subroutine.
. test-init.sh
plan_ 22
#------------------------------------------------------------------
will_test () { tst=$*; }
do_check ()
{
command_ok_ "$tst [simple, exit status]" \
eval 'unindent input > got'
command_ok_ "$tst [simple, output]" \
diff exp got
command_ok_ "$tst [parallel, exit status]" \
eval 'unindent input | unindent > got'
command_ok_ "$tst [parallel, output]" \
diff exp got
}
#------------------------------------------------------------------
will_test 'leading spaces'
cat > input <<END
1
2
3
4
${tab}5
${tab} 6
6${sp}
7${sp}
8${sp}${sp}
9${sp}${sp}
10${tab}
11${tab}
12${sp}${tab}
13${sp}${tab}
14 this${tab}with${tab}multiple fields${sp}
15 and ${tab}${tab}this too${tab}
16 and also this
${sp}${sp}
${sp}
${tab}
last line
END
cat > exp <<END
1
2
3
4
${tab}5
${tab} 6
6${sp}
7${sp}
8${sp}${sp}
9${sp}${sp}
10${tab}
11${tab}
12${sp}${tab}
13${sp}${tab}
14 this${tab}with${tab}multiple fields${sp}
15 and ${tab}${tab}this too${tab}
16 and also this
${sp}
${tab}
last line
END
do_check
#------------------------------------------------------------------
will_test 'leading tab'
cat > input <<END
${tab}1
${tab} 2
3
4
5
6
7
${tab}8
${tab}${tab}9
${tab}10${tab}
${tab}11${sp}
12${tab}
13${sp}
${tab}14 this with${tab}multiple fields${sp}
15 and ${tab}${tab}this too${tab}
16 and also this
${tab}
${sp}
${sp}${tab}
last line
END
cat > exp <<END
1
2
3
4
5
6
7
${tab}8
${tab}9
10${tab}
11${sp}
12${tab}
13${sp}
14 this with${tab}multiple fields${sp}
15 and ${tab}${tab}this too${tab}
16 and also this
${sp}
${sp}${tab}
last line
END
do_check "leading tab"
#------------------------------------------------------------------
will_test 'no leading whitespace'
cat > input <<END
1
2
3
4
${tab}5
${tab} 6
${tab}7
${tab}${tab}8
9${sp}
10${tab}
${tab}10${sp}${sp}
14 this with${tab}multiple fields${sp}
15 and this too${tab}
${tab}16 and also this
${tab}
${sp}
last line
END
cp input exp
do_check
#------------------------------------------------------------------
will_test 'leading empty lines ignored (1)'
cat > input <<END
foo
bar
quux
END
cat > exp <<END
foo
bar
quux
END
do_check
#------------------------------------------------------------------
will_test 'leading empty lines ignored (2)'
cat > input <<END
foo
bar
quux
END
cat > exp <<END
foo
bar
quux
END
do_check
#------------------------------------------------------------------
will_test 'more elaborated parallel use'
cat > input <<END
x
${tab}y
z
${tab}a
${tab} b
${tab}c
${tab}d
${tab}e
${tab}${tab}f
END
cat > exp <<END
y
z
a
b
c
${tab}d
${tab}e
${tab}f
END
command_ok_ "$tst [exit status]" \
eval 'unindent input | sed 1d | unindent > got'
command_ok_ "$tst [output]" diff exp got
: