256 lines
3.6 KiB
Bash
256 lines
3.6 KiB
Bash
#! /bin/sh
|
|
# Copyright (C) 2011-2017 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 <http://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
|
|
|
|
:
|