d61c0c79cf
Reviewed-by: sspitsyn, cjplummer, amenkov
247 lines
5.6 KiB
Bash
247 lines
5.6 KiB
Bash
#!/bin/sh
|
|
|
|
#
|
|
# Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved.
|
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
#
|
|
# This code is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License version 2 only, as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# version 2 for more details (a copy is included in the LICENSE file that
|
|
# accompanied this code).
|
|
#
|
|
# You should have received a copy of the GNU General Public License version
|
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
#
|
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
# or visit www.oracle.com if you need additional information or have any
|
|
# questions.
|
|
#
|
|
|
|
#
|
|
# @test
|
|
# @bug 4981536
|
|
# @summary TTY: .jdbrc is read twice if jdb is run in the user's home dir
|
|
# @author jjh
|
|
# @run shell JdbReadTwiceTest.sh
|
|
|
|
#Set appropriate jdk
|
|
if [ ! -z "$TESTJAVA" ] ; then
|
|
jdk="$TESTJAVA"
|
|
else
|
|
echo "--Error: TESTJAVA must be defined as the pathname of a jdk to test."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$TESTCLASSES" ] ; then
|
|
echo "--Error: TESTCLASSES must be defined."
|
|
exit 1
|
|
fi
|
|
|
|
case `uname -s` in
|
|
Linux)
|
|
# Need this to convert to the /.automount/... form which
|
|
# is what jdb will report when it reads an init file.
|
|
echo TESTCLASSES=$TESTCLASSES
|
|
TESTCLASSES=`(cd $TESTCLASSES; /bin/pwd)`
|
|
echo TESTCLASSES=$TESTCLASSES
|
|
;;
|
|
esac
|
|
|
|
# All output will go under this dir. We define HOME to
|
|
# be under here too, and pass it into jdb, to avoid problems
|
|
# with java choosing a value of HOME.
|
|
baseDir="$TESTCLASSES/jdbRead$$"
|
|
HOME="$baseDir/home"
|
|
mkdir -p "$HOME"
|
|
|
|
tmpResult="$baseDir/result"
|
|
fred="$baseDir/fred"
|
|
here="$baseDir"
|
|
jdbFiles="$HOME/jdb.ini $HOME/.jdbrc $here/jdb.ini $here/.jdbrc $tmpResult $fred"
|
|
|
|
cd $here
|
|
failed=
|
|
|
|
|
|
mkFiles()
|
|
{
|
|
touch "$@"
|
|
}
|
|
|
|
doit()
|
|
{
|
|
echo quit | $TESTJAVA/bin/jdb -J-Duser.language=en -J-Duser.country=US -J-Duser.home=$HOME > $tmpResult 2>&1
|
|
}
|
|
|
|
failIfNot()
|
|
{
|
|
# $1 is the expected number of occurances of $2 in the jdb output.
|
|
count=$1
|
|
shift
|
|
if [ -r c:/ ] ; then
|
|
sed -e 's@\\@/@g' $tmpResult > $tmpResult.1
|
|
mv $tmpResult.1 $tmpResult
|
|
fi
|
|
xx=`fgrep -i "$*" $tmpResult | wc -l`
|
|
if [ $xx != $count ] ; then
|
|
echo "Failed: Expected $count, got $xx: $*"
|
|
echo "-----"
|
|
cat $tmpResult
|
|
echo "-----"
|
|
failed=1
|
|
else
|
|
echo "Passed: Expected $count, got $xx: $*"
|
|
fi
|
|
}
|
|
|
|
clean()
|
|
{
|
|
rm -f $jdbFiles
|
|
}
|
|
|
|
# Note: If jdb reads a file, it outputs a message containing
|
|
# from: filename
|
|
# If jdb can't read a file, it outputs a message containing
|
|
# open: filename
|
|
|
|
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "Verify each individual file is read"
|
|
mkFiles $HOME/jdb.ini
|
|
doit
|
|
failIfNot 1 "from $HOME/jdb.ini"
|
|
clean
|
|
|
|
mkFiles $HOME/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $HOME/.jdbrc"
|
|
clean
|
|
|
|
mkFiles $here/jdb.ini
|
|
doit
|
|
failIfNot 1 "from $here/jdb.ini"
|
|
clean
|
|
|
|
mkFiles $here/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $here/.jdbrc"
|
|
clean
|
|
|
|
|
|
cd $HOME
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "Verify files are not read twice if cwd is ~"
|
|
mkFiles $HOME/jdb.ini
|
|
doit
|
|
failIfNot 1 "from $HOME/jdb.ini"
|
|
clean
|
|
|
|
mkFiles $HOME/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $HOME/.jdbrc"
|
|
clean
|
|
cd $here
|
|
|
|
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "If jdb.ini and both .jdbrc exist, don't read .jdbrc"
|
|
mkFiles $HOME/jdb.ini $HOME/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $HOME/jdb.ini"
|
|
failIfNot 0 "from $HOME/.jdbrc"
|
|
clean
|
|
|
|
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "If files exist in both ~ and ., read both"
|
|
mkFiles $HOME/jdb.ini $here/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $HOME/jdb.ini"
|
|
failIfNot 1 "from $here/.jdbrc"
|
|
clean
|
|
|
|
mkFiles $HOME/.jdbrc $here/jdb.ini
|
|
doit
|
|
failIfNot 1 "from $HOME/.jdbrc"
|
|
failIfNot 1 "from $here/jdb.ini"
|
|
clean
|
|
|
|
|
|
if [ ! -r c:/ ] ; then
|
|
# No symlinks on windows.
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "Don't read a . file that is a symlink to a ~ file"
|
|
mkFiles $HOME/jdb.ini
|
|
ln -s $HOME/jdb.ini $here/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $HOME/jdb.ini"
|
|
failIfNot 0 "from $here/.jdbrc"
|
|
clean
|
|
fi
|
|
|
|
|
|
if [ ! -r c:/ ] ; then
|
|
# No symlinks on windows.
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "Don't read a . file that is a target symlink of a ~ file"
|
|
mkFiles $here/jdb.ini
|
|
ln -s $here/jdbini $HOME/.jdbrc
|
|
doit
|
|
failIfNot 1 "from $here/jdb.ini"
|
|
failIfNot 0 "from $HOME/.jdbrc"
|
|
clean
|
|
fi
|
|
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "Read a directory - verify the read fails"
|
|
# If the file (IE. directory) exists, we try to read it. The
|
|
# read will fail.
|
|
mkdir $HOME/jdb.ini
|
|
doit
|
|
failIfNot 1 "open: $HOME/jdb.ini"
|
|
rmdir $HOME/jdb.ini
|
|
|
|
|
|
echo "read $fred" > $here/jdb.ini
|
|
echo
|
|
echo "+++++++++++++++++++++++++++++++++++"
|
|
echo "Verify the jdb read command still works"
|
|
touch $fred
|
|
doit
|
|
failIfNot 1 "from $fred"
|
|
|
|
if [ "$canMakeUnreadable" = "Yes" ]
|
|
then
|
|
chmod a-r $fred
|
|
doit
|
|
failIfNot 1 "open: $fred"
|
|
fi
|
|
rm -f $fred
|
|
mkdir $fred
|
|
doit
|
|
failIfNot 1 "open: $fred"
|
|
rmdir $fred
|
|
|
|
clean
|
|
|
|
|
|
if [ "$failed" = 1 ] ; then
|
|
echo "One or more tests failed"
|
|
exit 1
|
|
fi
|
|
|
|
echo "All tests passed"
|