1 #! /bin/sh -e
   2 
   3 #
   4 # Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
   5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   6 #
   7 # This code is free software; you can redistribute it and/or modify it
   8 # under the terms of the GNU General Public License version 2 only, as
   9 # published by the Free Software Foundation.
  10 #
  11 # This code is distributed in the hope that it will be useful, but WITHOUT
  12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 # @test
  27 # @bug 4630463 4630971 4636448 4701617 4721296 4710890 6247817 7021987
  28 # @summary Tests miscellaneous native2ascii bugfixes and regressions
  29 
  30 
  31 if [ "${TESTSRC}" = "" ]; then TESTSRC=.; fi
  32 if [ "${TESTJAVA}" = "" ]; then TESTJAVA=$1; shift; fi
  33 
  34 case `uname -s` in
  35   Windows* | CYGWIN*) OS=Windows;;
  36   SunOS|Linux) OS=Unix;;
  37 esac
  38 
  39 N2A=$TESTJAVA/bin/native2ascii
  40 
  41 check() {
  42   bug=$1; shift
  43   expected=$1; shift
  44   out=$1; shift
  45 
  46   # Strip carriage returns from output when comparing with n2a test output
  47   # on win32 systems
  48   if [ ${OS} = Windows ]; then
  49      sed -e 's@\\r@@g' $out >$out.1
  50      sed -e 's@\\r@@g' $expected >$out.expected
  51   else
  52      cp $out $out.1
  53      cp $expected $out.expected
  54   fi
  55   if (set -x; diff -c $out.expected $out.1); then
  56     echo "$bug passed"
  57   else
  58     echo "$bug failed"
  59     exit 1
  60   fi
  61 }
  62 
  63 # Check that native2ascii -reverse with an ISO-8859-1 encoded file works
  64 # as documented. 4630463 fixes a bug in the ISO-8859-1 encoder which
  65 # prevented encoding of valid ISO-8859-1 chars > 0x7f
  66 
  67 rm -f x.*
  68 $N2A -reverse -encoding ISO-8859-1 $TESTSRC/A2N_4630463 x.out
  69 check 4630463 $TESTSRC/A2N_4630463.expected x.out
  70 
  71 # Take file encoded in ISO-8859-1 with range of chars ,  0x7f < c < 0xff
  72 # invoke native2ascii with input filename and output filename identical
  73 # Ensure that output file is as expected by comparing to expected output.
  74 # 4636448 Fixed bug whereby output file was clobbered if infile and outfile
  75 # referred to same filename.  This bug only applies to Solaris/Linux, since on
  76 # Windows you can't write to a file that's open for reading.
  77 
  78 if [ $OS = Unix ]; then
  79   rm -f x.*
  80   cp $TESTSRC/N2A_4636448 x.in
  81   chmod +w x.in
  82   ls -l x.in
  83   if $N2A -encoding ISO-8859-1 x.in x.in; then
  84     check 4636448 $TESTSRC/N2A_4636448.expected x.in
  85   fi
  86 fi
  87 
  88 # Ensure that files containing backslashes adjacent to EOF don't
  89 # hang native2ascii -reverse
  90 
  91 rm -f x.*
  92 $N2A -reverse -encoding ISO-8859-1 $TESTSRC/A2N_4630971 x.out
  93 check 4630971 $TESTSRC/A2N_4630971 x.out
  94 
  95 # Check reverse (char -> native) encoding of Japanese Halfwidth
  96 # Katakana characters for MS932 (default WinNT Japanese encoding)
  97 # Regression test for bugID 4701617
  98 
  99 rm -f x.*
 100 $N2A -reverse -encoding MS932 $TESTSRC/A2N_4701617 x.out
 101 check 4701617 $TESTSRC/A2N_4701617.expected x.out
 102 
 103 # Check that the inputfile appears in the error message when not found
 104 
 105 badin="DoesNotExist"
 106 $N2A $badin x.out | grep "$badin" > /dev/null
 107 if [ $? != 0 ]; then
 108     echo "\"$badin\" expected to appear in error message"
 109     exit 1
 110 fi
 111 
 112 # for win32 only ensure when output file pre-exists that
 113 # native2ascii tool will simply overwrite with the expected
 114 # output file (fixed bugID 4710890)
 115 
 116 if [ OS = Windows ]; then
 117    rm -f x.*
 118    cp $TESTSRC/test3 x.in
 119    chmod a+x x.in
 120    ls -l x.in
 121    touch x.out
 122    $N2A -encoding ISO-8859-1 x.in x.out
 123    check 4710890 $TESTSRC/test3 x.out
 124 fi
 125 
 126 rm -rf x.*
 127 $N2A -reverse $TESTSRC/A2N_6247817 x.out
 128 check 4701617 $TESTSRC/A2N_6247817 x.out
 129