#! /bin/sh -vx # # Copyright 2022-2023 Japanese TeX Development Community # You may freely use, modify and/or distribute this file. engine=uptex testdir=up0tests KpsDir=${KpsDir:-../kpathsea} BinDir=${BinDir:-.} ExeExt=${ExeExt:-} _kpsewhich=$KpsDir/kpsewhich$ExeExt _tex=$BinDir/$engine$ExeExt test -d $testdir || mkdir -p $testdir rm -f $testdir/fn*.log $testdir/fn*.txt $testdir/fn*-tmp*.tex rc=0; err1=; err2=; err3=; err4= TEXMFCNF=$srcdir/../kpathsea; export TEXMFCNF TEXINPUTS="$testdir;."; export TEXINPUTS $_kpsewhich -var-value=TEXMFCNF $_kpsewhich -progname=$engine -var-value=TEXINPUTS $_kpsewhich -progname=$engine -var-value=command_line_encoding $_kpsewhich -progname=$engine -var-value=guess_input_kanji_encoding for loc in C.UTF-8 C.utf8 en_US.UTF-8 en_US.utf8 ja_JP.UTF-8 ja_JP.utf8; do locale -a | grep "^$loc\$" ret=$? # For Slackware linux, we need to replace from utf8 to UTF-8 if [ -f /etc/slackware-version ]; then loc=`echo $loc | sed -e "s/utf8/UTF-8/"` fi if [ $ret = 0 ]; then LC_ALL=$loc; LANGUAGE=$loc; export LC_ALL LANGUAGE break fi done if [ $ret != 0 ]; then # linux musl fails to run `locale -a` but seems to have C.UTF-8 loc=C.UTF-8 LC_ALL=$loc; LANGUAGE=$loc; export LC_ALL LANGUAGE fi if [ "$COMSPEC" != "" ] || [ "$ExeExt" = ".exe" ]; then echo "*** We guess OS is Windows." MyOS=Windows try_ienc="sjis" else echo "*** We guess OS is not Windows." MyOS=nonWindows try_ienc="euc sjis" fi if [ "$ExeExt" = ".exe" ]; then opt_win=-windows else opt_win= fi perl -s $srcdir/tests/fn-generate.perl $opt_win $testdir pret=$? if [ $pret != 0 ] && [ $pret != 239 ]; then exit 77 fi # upTeX internal encoding fenc="utf8" for ienc in $try_ienc; do for doc in fn-$fenc fnさざ波-$fenc; do if [ $MyOS = Windows ]; then command_line_encoding=none export command_line_encoding fi echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc job=$doc-$ienc-up0 $_kpsewhich -progname=$engine $doc.tex || rc=10 $_kpsewhich -progname=$engine fn±×÷§¶-utf8.tex || rc=11 rm -f $testdir/$doc-tmp.tex $testdir/$job.txt $testdir/$job.log $_tex -ini -interaction nonstopmode -jobname=$job -kanji=$fenc --kanji-internal=$ienc --shell-escape --recorder $doc.tex >$testdir/$doc-$fenc-$ienc-term.log || \ { rc=1 ; err1=$err1" $fenc:$ienc:$doc" ; } $_kpsewhich -progname=$engine $doc-tmp.tex || rc=12 $_kpsewhich -progname=$engine fn±×÷§¶-utf8-tmp.tex || rc=13 mv $job.txt $job.log $testdir/ || rc=14 mv $job.fls $testdir/ || : echo "FIXME" # check *.fls diff $testdir/$job.txt $srcdir/tests/fn-$fenc.txt || \ { rc=2 ; err2=$err2" $fenc:$ienc:$doc" ; } rm -f $testdir/fn±×÷§¶-utf8-tmp.tex done done if [ $pret = 239 ]; then echo "*** skip tests for Shift_JIS & EUC-JP." exit 0 fi # pTeX compatible mode, regacy encoding for fenc in sjis euc; do for doc in fnさざ波-$fenc; do ienc=$fenc if [ $MyOS = Windows ]; then ienc="sjis" command_line_encoding=none export command_line_encoding else if [ $fenc != sjis ]; then ienc="euc"; fi fi guess_input_kanji_encoding=1 export guess_input_kanji_encoding echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc job=$doc-$ienc-up0 $_kpsewhich -progname=$engine $doc.tex || rc=20 $_kpsewhich -progname=$engine fn±×÷§¶-utf8.tex || rc=21 rm -f $testdir/$doc-tmp.tex $testdir/$job.txt $testdir/$job.log $_tex -ini -interaction nonstopmode -jobname=$job -kanji=$fenc --kanji-internal=$ienc --shell-escape --recorder $doc.tex >$testdir/$doc-$fenc-$ienc-term.log || \ { rc=3 ; err3=$err3" $fenc:$ienc:$doc" ; } $_kpsewhich -progname=$engine $doc-tmp.tex || rc=22 $_kpsewhich -progname=$engine fn±×÷§¶-utf8-tmp.tex || rc=23 mv $job.txt $job.log $testdir/ || rc=24 mv $job.fls $testdir/ || : echo "FIXME" # check *.fls diff $testdir/$job.txt $srcdir/tests/fn-$fenc.txt || \ { rc=4 ; err4=$err4" $fenc:$ienc:$doc" ; } done done if [ $rc -gt 0 ]; then if [ -n "$err1" ]; then echo ERROR1 $err1; fi if [ -n "$err2" ]; then echo ERROR2 $err2; fi if [ -n "$err3" ]; then echo ERROR3 $err3; fi if [ -n "$err4" ]; then echo ERROR4 $err4; fi else echo PASS fi exit $rc