#! /bin/sh
# Copyright (C) 2012-2025 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/>.

# Texinfo input files using @include directives.  Check both in-tree
# and VPATH builds, and both top-level and subdir input.

required='makeinfo tex texi2dvi'
. test-init.sh

echo AC_OUTPUT >> configure.ac

cat > Makefile.am << 'END'
info_TEXINFOS = main.texi sub/more.texi
main_TEXINFOS = one.texi two.texi three.texi
sub_more_TEXINFOS = sub/desc.texi sub/hist.texi
END

# We avoid apostrophes in the test document since Texinfo
# turns them into UTF-8, which is not easy to grep.
#
cat > main.texi << 'END'
\input texinfo
@setfilename main.info
@settitle main
@ifnottex
@node Top
@top GNU dummy.
@menu
* one::   Chapter one
* two::   Chapter two
* three:: Chapter three
@end menu
@end ifnottex
@include one.texi
@include two.texi
@include three.texi
@bye
END

cat > one.texi << 'END'
@node one
@chapter Chapter one
Foo bar, baz.
END

cat > two.texi << 'END'
@node two
@chapter Chapter two
Blah Blah Blah.
END

cat > three.texi << 'END'
@node three
@chapter Chapter three
Quux quux quux.
END

mkdir sub

cat > sub/more.texi << 'END'
\input texinfo
@setfilename more.info
@settitle main
@ifnottex
@node Top
@top GNU more.
@menu
* desc:: Description of this program
* hist:: History of this program
@end menu
@end ifnottex
@include desc.texi
@include hist.texi
@bye
END

cat > sub/desc.texi << 'END'
@node desc
@chapter Description of this program
It does something, really.
END

cat > sub/hist.texi << 'END'
@node hist
@chapter History of this program
It was written somehow.
END

cat > exp << 'END'
./main.info
./sub/more.info
END

check_info_contents ()
{
  srcdir=${1-.}
  $FGREP "Foo bar, baz."                        $srcdir/main.info
  $FGREP "Blah Blah Blah."                      $srcdir/main.info
  $FGREP "Quux quux quux."                      $srcdir/main.info
  $FGREP 'It does something, really.'           $srcdir/sub/more.info
  $FGREP 'It was written somehow.'              $srcdir/sub/more.info
}

get_info_names ()
{
  find ${1-.} -type f -name '*.info' | LC_ALL=C sort > got
}

check_expected ()
{
  cat exp
  cat got
  diff exp got
}

$ACLOCAL
$AUTOMAKE --add-missing
$AUTOCONF

./configure

$MAKE info
get_info_names
check_expected

check_info_contents

$MAKE dvi
test -f main.dvi
test -f sub/more.dvi

$MAKE maintainer-clean
test ! -f main.dvi
test ! -f sub/more.dvi
test ! -f main.info
test ! -f sub/more.info

mkdir build
cd build
../configure
$MAKE all dvi

get_info_names ..
sed 's|^\./|../|' ../exp > exp
check_expected

test -f main.dvi
test -f sub/more.dvi

check_info_contents ..

$MAKE distcheck

:
