blob: 628ec54cd998db68d4106611e10d89e085ad7f46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#! /bin/sh -vx
#
# Copyright 2022-2023 Japanese TeX Development Community <issue@texjp.org>
# You may freely use, modify and/or distribute this file.
engine=eptex
testdir=eptests
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 -randgen=pdfuniformdeviate $testdir
pret=$?
if [ $pret != 0 ] && [ $pret != 239 ]; then
exit 77
fi
# pTeX internal encoding
fenc="utf8"
for ienc in $try_ienc; do
for doc in fn-$fenc fnさざ波-$fenc; do
echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc
job=$doc-$ienc-ep
$_kpsewhich -progname=$engine $doc.tex || rc=10
$_kpsewhich -progname=$engine fn±×÷§¶-utf8.tex || rc=11
rm -f $testdir/$doc-tmp.tex $testdir/$doc-$ienc.txt $testdir/$doc-$ienc.log
$_tex -ini -interaction nonstopmode -jobname=$job -kanji=$fenc --kanji-internal=$ienc --shell-escape -etex --recorder $doc.tex >$testdir/$doc-$fenc-$ienc-term.log || \
{ rc=1 ; err1=$err1" $fenc:$ienc:$doc" ; }
$_kpsewhich -progname=$engine $doc-tmp.tex || rc=12
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, regacy encoding
for fenc in sjis euc; do
for doc in fnさざ波-$fenc; do
ienc=$fenc
if [ $MyOS = Windows ]; then
ienc="sjis"
else
if [ $fenc != sjis ]; then ienc="euc"; fi
fi
echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc
job=$doc-$ienc-ep
$_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 -etex --recorder $doc.tex >$testdir/$doc-$fenc-$ienc-term.log || \
{ rc=3 ; err3=$err3" $fenc:$ienc:$doc" ; }
$_kpsewhich -progname=$engine $doc-tmp.tex || rc=22
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
|