#
# Copyright (c) 2014, 2017, 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.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#

#----------------------------------------------------------------------


NATIVEPATH := $(call FullPath, $(shell cd $(BUILDDIR); pwd))

$(BUILDTESTDIR)/TestNativePath.agentvm.ok \
$(BUILDTESTDIR)/TestNativePath.othervm.ok: \
                $(JTREG_IMAGEDIR)/lib/javatest.jar \
		$(JTREG_IMAGEDIR)/lib/jtreg.jar \
		$(JTREG_IMAGEDIR)/bin/jtreg

	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-nativepath:$(NATIVEPATH) \
		-vmoption:-Dcorrect.nativepath=$(NATIVEPATH) \
		-w:$(BUILDTESTDIR)/nativepath.othervm/work \
		-r:$(BUILDTESTDIR)/nativepath.othervm/report \
		-verbose:fail \
		$(@:$(BUILDTESTDIR)/TestNativePath.%.ok=-%) \
		$(TESTDIR)/nativepath/NativesOK.java

	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-w:$(BUILDTESTDIR)/nativepath.othervm2/work \
		-r:$(BUILDTESTDIR)/nativepath.othervm2/report \
		-verbose:fail \
		$(@:$(BUILDTESTDIR)/TestNativePath.%.ok=-%) \
		$(TESTDIR)/nativepath/NativesEmpty.java

	echo "$@ test passed at `date`" > $@


$(BUILDTESTDIR)/TestNativePath.ok: \
                $(JTREG_IMAGEDIR)/lib/javatest.jar \
		$(JTREG_IMAGEDIR)/lib/jtreg.jar \
		$(JTREG_IMAGEDIR)/bin/jtreg

	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-nativepath:/this/path/does/not/exist \
		$(TESTDIR)/nativepath \
		2>&1 | grep -q "The -nativepath path does not exist"

	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-nativepath:$(JTREG_IMAGEDIR)/bin/jtreg \
		$(TESTDIR)/nativepath \
		2>&1 | grep -q "The -nativepath path is not a directory"

	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-nativepath:"$(JTREG_IMAGEDIR)/bin/jtreg$(PS)$(JDK6HOME)" \
		$(TESTDIR)/nativepath \
		2>&1 | grep -q "The argument to -nativepath cannot be more than one path."

        # Run a test with native code without the -nativepath option
        # should yield an error
	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-w:$(BUILDTESTDIR)/nativepath.othervm2/work \
		-r:$(BUILDTESTDIR)/nativepath.othervm2/report \
		-verbose:fail \
		$(TESTDIR)/nativepath/NativesOK.java \
		2>&1 | grep -q "Use -nativepath to specify the location of native code"

        # Exclude all tests with native code
	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-w:$(BUILDTESTDIR)/nativepath.othervm2/work \
		-r:$(BUILDTESTDIR)/nativepath.othervm2/report \
                -k:!native \
		-verbose:fail \
		$(TESTDIR)/nativepath/NativesOK.java \
		2>&1 | grep -q "no tests selected"

	# Shell tests
	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-nativepath:$(NATIVEPATH) \
		-e:CORRECTNATIVEPATH=$(NATIVEPATH) \
		-w:$(BUILDTESTDIR)/nativepath.shell/work \
		-r:$(BUILDTESTDIR)/nativepath.shell/report \
		-verbose:fail \
		$(TESTDIR)/nativepath/NativesOKShell.sh

	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-jdk:$(JDKHOME) \
		-w:$(BUILDTESTDIR)/nativepath.shell/work \
		-r:$(BUILDTESTDIR)/nativepath.shell/report \
		-verbose:fail \
		$(TESTDIR)/nativepath/NativesEmptyShell.sh

	echo "$@ test passed at `date`" > $@


TESTS.jtreg += \
    $(BUILDTESTDIR)/TestNativePath.ok \
    $(BUILDTESTDIR)/TestNativePath.agentvm.ok \
    $(BUILDTESTDIR)/TestNativePath.othervm.ok

testnativepath: \
    $(BUILDTESTDIR)/TestNativePath.ok \
    $(BUILDTESTDIR)/TestNativePath.agentvm.ok \
    $(BUILDTESTDIR)/TestNativePath.othervm.ok

