summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/eptexdir/wcfname.test
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