1 #!/bin/sh
   2 
   3 #
   4 # Copyright (c) 2005, 2009, 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 #
  27 # @test
  28 # @bug     4164450
  29 # @summary Ensure that javah/javadoc doesn't try to read (new) source files
  30 # @author  Peter von der Ah\u00e9
  31 # @run shell ReadOldClass.sh
  32 #
  33 
  34 TS=${TESTSRC-.}
  35 TC=${TESTCLASSES-.}
  36 
  37 if [ "${TESTJAVA}" = "" ]
  38 then
  39   echo "TESTJAVA not set.  Test cannot execute.  Failed."
  40   exit 1
  41 fi
  42 
  43 # set platform-dependent variables
  44 OS=`uname -s`
  45 case "$OS" in
  46   SunOS | Linux | Darwin | CYGWIN* )
  47     PS=":"
  48     FS="/"
  49     ;;
  50   Windows* )
  51     PS=";"
  52     FS="\\"
  53     ;;
  54   * )
  55     echo "Unrecognized system!"
  56     exit 1;
  57     ;;
  58 esac
  59 
  60 cat > "${TC}/ReadOldClass.java" <<EOF
  61 public class ReadOldClass {
  62     public static void main(String[] args) {
  63     }
  64 }
  65 EOF
  66 
  67 rm -f ${TC}/ReadOldClass.h
  68 
  69 set -e
  70 
  71 # compile the file
  72 "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TC}" "${TC}/ReadOldClass.java"
  73 # ensure the source file is newer than the class file
  74 touch "${TC}/ReadOldClass.java"
  75 "${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} -jni -classpath "${TC}" -d "${TC}" ReadOldClass
  76 
  77 test -f "${TC}/ReadOldClass.h"