#! /bin/sh -vx # # Copyright 2022-2023 Japanese TeX Development Community # You may freely use, modify and/or distribute this file. engine=uptex testdir=uptests 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= 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 else echo "*** We guess OS is not Windows." MyOS=nonWindows 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 uptex; do for doc in fn-$fenc fnさざ波-$fenc fn£¥µÆÇñß-$fenc fnΔДदダ打다𝕯🎉-$fenc; do if [ $ienc != uptex -a \( $doc = fn£¥µÆÇñß-$fenc -o $doc = fnΔДदダ打다𝕯🎉-$fenc \) ]; then continue fi if [ $MyOS = Windows ]; then if [ $ienc = uptex ]; then command_line_encoding=utf8 export command_line_encoding else command_line_encoding=none export command_line_encoding fi fi echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc job=$doc-$ienc-up $_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 $testdir/$job.fls $_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 $job.fls $testdir/ || rc=14 diff $testdir/$job.txt $srcdir/tests/fn-$fenc.txt || \ { rc=2 ; err2=$err2" $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 else echo PASS fi exit $rc