:	'(c) Copyright	Empress Software Inc.	1983, 2003'

:	'expect PATH EMPRESSPATH MSTSRCPATH MSTDBSPATH MSTESTPATH'
:	'expect MSNETTESTDBPATH MSNETTESTDB'
:	'expect MSTESTDBPATH MSTESTDB MSTESTLOGDB MSTESTUSER'
:	'expect MSTMAJOR MSTMINOR MSTITEM MSTSRCMAJOR MSTDBSMAJOR MSTSRCMINOR'
:	'expect MSTESTNOTIFY MSTESTSHCHECK MSTESTCOPY MSTESTRMCORE'
:	'PATH is set to run emp...'
:	'the current directory is the item test directory'

. $EMPRESSPATH/config/options

SHMEM_FAILED=0
NLSECHO="$EMPRESSPATH/common/nls/nlsecho"
ES_E0_TESTFAIL=10121
UI_E0_TESTSUCC=10120

FIND="false"
case "$MSNETTEST" in
	"") cd $MSTESTDBPATH/testdir ;;
	* ) cd $MSNETTESTDBPATH/testdir ;;
esac

:	Do an actual remove of any test databases left from
:	previous tests

case "$MSNETTEST" in
	"") rm -rf $MSTESTDB ;;
	* ) $EXEC "rm -rf $MSNETTESTDB";;
esac

rm -rf * .*.sw*

TESTMINOR=$MSTESTPATH/$MSTCODESET/$MSTMAJOR/$MSTMINOR
TESTITEM=$TESTMINOR/$MSTITEM

test "$CLEAN_TESTWORK" = "true"  && rm -fr $TESTITEM

if test -d $TESTITEM
then

	if test -f $TESTITEM/testout
	then
		mv $TESTITEM/testout $TESTITEM/testout.lastfail
	fi

	rm -f $TESTITEM/testout $TESTITEM/core $TESTITEM/core.* $TESTITEM/TAR* \
		$TESTITEM/this_test_*
	$EMPRESSPATH/common/sys_bin/cpdir $TESTITEM . .

	rm -f testout.lastfail
else
	sh $MSTSRCMINOR/$MSTITEM
fi

cat tag | sed -e 's;^;+ ;'

test -f $MSTSRCPATH/$MSTMAJOR/_no_db || USE_DB=true

case $USE_DB$MSTESTCOPY in
 truetrue)
	case "$MSNETTEST" in
		"")
			$EMPRESSPATH/common/sys_bin/cpdir \
				$MSTDBSMAJOR $MSTESTDBPATH _db
			mv $MSTESTDBPATH/_db $MSTESTDB
			;;
		*)
			$EXEC "$EMPRESSRMTPATH/common/sys_bin/cpdir $MSRMTTDBSMAJOR $MSRMTNETTESTDBPATH _db"
			$EXEC "mv $MSRMTNETTESTDBPATH/_db $MSNETTESTDB"
			;;
	esac
	$EMPRESSPATH/bin/empadm $MSTESTDB shmrefresh
	if test $? -ne 0
	then
		SHMEM_FAILED=1
	fi
	;;

 truefalse)
	$EMPRESSPATH/bin/empadm $MSTDBSMAJOR/_db shmrefresh
	if test $? -ne 0
	then
		SHMEM_FAILED=1
	fi
	
	;;
esac

if test -f $TESTMINOR/_test
then
	TESTPROC=$TESTMINOR/_test
else
	TESTPROC=$MSTSRCMINOR/_test
fi

case $MSTESTPOSTTIME in
  true) 
	MSTIME=time

	echo "Test start:" `date` '(' `date "+%Y %j %H %M %S"` ')'

	case $MSSYS_PLATFORM in
	  SYS_OS_WIN32)
		# Korn shell will crash on first
		# command substitution like `uname` in
		# $w/sys_bin/cpdir. To prevent this, call
		# next script without sh.
		
		$MSTIME $TESTPROC
		;;
	  *) case $MSTESTSHCHECK in
		true)	$MSTIME sh -x $TESTPROC;;
		false)	$MSTIME sh $TESTPROC;;
	     esac
		;;
	esac

	echo "Test end  :" `date` '(' `date "+%Y %j %H %M %S"` ')' ;;
   *)
	case $MSTESTSHCHECK in
	 true)	sh -x $TESTPROC;;
	 false)	sh $TESTPROC;;
	esac
	;;
esac

case $USE_DB$MSTESTCOPY in
 truetrue)
	case "$MSNETTEST" in
	    "")
		if test -d $MSTESTDB
		then
			$EMPRESSPATH/bin/empadm $MSTESTDB shmrmall
		fi
		;;
	    *) 
		if $EMPRESSPATH/bin/empcmd $MSTESTDB 'display db' > $MSFILENULL 2>&1
		then
			$EMPRESSPATH/bin/empadm $MSTESTDB shmrmall
		fi
		;;
	esac
	;;
 truefalse)
	$EMPRESSPATH/bin/empadm $MSTDBSMAJOR/_db shmrmall
	;;
esac

test "$MSSYS_PLATFORM" = "SYS_OS_WIN32" && SYSID=win32
test "$SYSID" = "" && SYSID=`$EMPRESSPATH/rdbms/exec/emputil -SYSID`
STDOUT=stdout

X=`echo core*`

if test -f core || test "$X" != 'core*' || test $SHMEM_FAILED -eq 1
then
	TESTSUCCESS=false
else
	X=`$EMPRESSPATH/bin/empvers -langid`
	Y=`$EMPRESSPATH/bin/empvers -sizeoflong`

	rm -fr $STDOUT.$X.cnv

	if test "$X" = "jp_sjis" 
	then
		if test ! -f $STDOUT.jp_sjis && \
		   test -f $STDOUT.jp_euc
		then
			if test "$EUC2SJIS_IS_SETUP" != "true"
			then
				. $EMPRESSPATH/common/sys_bin/euc2sjis
			fi
			convert_euc2sjis -f -s $STDOUT.jp_euc $STDOUT.$X.cnv
		fi
	fi

	LIST="
		stdout
		stdout2
		stdout.$SYSID
		stdout2.$SYSID
		stdout.$X
		stdout2.$X
		stdout.$X.$SYSID
		$STDOUT.$X.cnv
	"
	LIST64="
		stdout.64
		stdout.$X.64
	"
		
	test "$Y" = "8" && LIST="$LIST $LIST64"

	TESTSUCCESS=false

	for I in $LIST
	do
		test ! -f $I && continue

		if cmp -s $I testout
		then
			TESTSUCCESS=true
			break
		fi
	done
fi

COPYFILES=false
test "$SAVE_TEST" = "true" && COPYFILES=true

if test "$TESTSUCCESS" = "true"
then
	$NLSECHO "	TEST SUCCESSFUL" $UI_E0_TESTSUCC
	
	if test "$SAVE_TEST" = "true"
	then
		echo "  (test is forced to copy to testwork)"
	else
		case "$MSNETTEST" in
			"") rm -rf $MSTESTDB ;;
			* ) $EXEC "rm -rf $MSNETTESTDB";;
		esac
	fi
else
	F=`echo core*`
	if test -f $F
	then
		strings $F | head -50 > this_test_core_dump
		echo "this test core dump ..."
	fi

	if test $SHMEM_FAILED -ne 0
	then
		touch this_test_shmem_failed
		echo "this test failed to create shared memory"
	fi

	COPYFILES=true

	CONSOLE=/dev/tty
	test "$MSSYS_PLATFORM" = "SYS_OS_WIN32" && CONSOLE=con:

	$NLSECHO "	INCOMPATIBLE RESULTS -- PLEASE NOTIFY EMPRESS" $ES_E0_TESTFAIL
	test "$MSTESTNOTIFY" = "true" && \
	echo "$MSTMAJOR/$MSTMINOR/$MSTITEM: INCOMPATIBLE RESULTS" > $CONSOLE

	FAILURE_FILE=$EMPRESSPATH/rdbms/local/failure_list

	if test -f $FAILURE_FILE && \
	   egrep "^$MSTMAJOR/$MSTMINOR/$MSTITEM\$" $FAILURE_FILE > $MSFILENULL
	then
		MSG="	(This test is in the failure list)"
		echo "$MSG"
		test "$MSTESTNOTIFY" = "true" && echo "$MSG" > $CONSOLE
	elif test "$MSRUNTEST_ABORT_IF_FAIL" != ""
	then
		touch "$ABORTFILE"
		cat <<EOM

***** RUNTEST IS ABORTED BECAUSE OF FAILURE WITH -abort OPTION IS USED ***

EOM
	elif test "$ONETEST_ABORT_IF_FAIL" != ""
	then
		touch "$ABORTFILE"
	fi

fi

if test "$COPYFILES" = "true"
then
	case $MSTESTRMCORE in
	 true)	rm -f core core.*;;
	esac

	I=$MSTESTPATH/$MSTCODESET/$MSTMAJOR/$MSTMINOR/$MSTITEM
	if test ! -d $I
	then
		mkdir -p $I
	fi

	if test -f core
	then
		mv core $I
	fi
	rm -rf .*.sw* > $MSFILENULL 2>&1
	$EMPRESSPATH/common/sys_bin/cpdir . $I . > $MSFILENULL 2>&1
fi

rm -rf * .*.sw*
