#
# Copyright (c) 2010, 2015, 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.
#

application.title=nashorn

# location of JDK embedded ASM sources
jdk.asm.src.dir=../jdk/src/java.base/share/classes/jdk/internal/org/objectweb/asm

# location of JDK embedded jline sources
jdk.jline.src.dir=../jdk/src/jdk.internal.le/share/classes

# source and target levels
build.compiler=modern
javac.source=1.8
javac.target=1.8

# nashorn version information
nashorn.version=0.1
nashorn.fullversion=0.1
nashorn.product.name=Oracle Nashorn

# This directory is removed when the project is cleaned:
build.dir=build
build.classes.dir=${build.dir}/classes
build.zip=${build.dir}/nashorn.zip
build.gzip=${build.dir}/nashorn.tar.gz

# nashorn Shell tool
nashorn.shell.tool=jdk.nashorn.tools.Shell

# nasgen tool
nasgen.tool=jdk.nashorn.internal.tools.nasgen.Main

# parallel test runner tool
parallel.test.runner=jdk.nashorn.internal.test.framework.ParallelTestRunner

# test classes directory
build.test.classes.dir=${build.dir}/test/classes

# nashorn test jar - internal tests jar and api tests jar
nashorn.internal.tests.jar=${build.dir}/nashorn-internal-tests.jar
nashorn.api.tests.jar=${build.dir}/nashorn-api-tests.jar

# test results directory
build.test.results.dir=${build.dir}/test/reports
build.nosecurity.test.results.dir=${build.dir}/test/nosecurity/reports
build.nooptimistic.test.results.dir=${build.dir}/test/nooptimistic/reports

# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/nashorn.jar
dist.javadoc.dir=${dist.dir}/javadoc

# nashorn javafx shell
fxshell.tool = jdk.nashorn.tools.FXShell
fxshell.classes.dir = ${build.dir}/fxshell/classes
fxshell.dir = tools/fxshell
fxshell.jar = ${dist.dir}/nashornfx.jar

# configuration for java flight recorder
run.test.jvmargs.jfr=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,dumponexit=true,dumponexitpath=${build.dir},stackdepth=128

# test library location
test.lib=${basedir}${file.separator}test${file.separator}lib

# jars refererred
file.reference.testng.jar=${test.lib}${file.separator}testng.jar

# Set testng verbose level
# From TestNG docs: "the verbosity level (0 to 10 where 10 is most detailed)
# Actually, this is a lie: you can specify -1 and this will put TestNG in
# debug mode (no longer slicing off stack traces and all)."

testng.verbose=2

# TestNG listeners - we want to replace TestNG's own JUnit
# reporter, but want everything else provided by default
# Unfortunately, we've to clone the other default reporters here.

testng.listeners=\
 org.testng.reporters.SuiteHTMLReporter, \
 org.testng.reporters.TestHTMLReporter, \
 org.testng.reporters.jq.Main, \
 org.testng.reporters.FailedReporter, \
 org.testng.reporters.XMLReporter \
 org.testng.reporters.EmailableReporter, \
 jdk.nashorn.internal.test.framework.JSJUnitReportReporter

javac.debug=true
javac.encoding=ascii
javac.classpath=\
    ${build.classes.dir}
javac.test.classpath=\
    ${build.classes.dir}${path.separator}\
    ${build.test.classes.dir}${path.separator}\
    ${file.reference.testng.jar}

meta.inf.dir=${nashorn.module.src.dir}/META-INF

run.classpath=\
    ${build.classes.dir}

# test scripts to run
test.dir=test
test.nosecurity.dir=test/script/nosecurity
test.script.dir=test/script
test.basic.dir=test/script/basic
test.maptests.dir=test/script/maptests
test.error.dir=test/script/error
test.sandbox.dir=test/script/sandbox
test.trusted.dir=test/script/trusted
test.external.dir=test/script/external
test262.dir=${test.external.dir}/test262
test262.suite.dir=${test262.dir}/test/suite
testjfx.dir=${test.script.dir}/jfx
testmarkdown.dir=${test.script.dir}/markdown

test-sys-prop.test.dir=${test.dir}
test-sys-prop.test.js.roots=${test.basic.dir} ${test.maptests.dir} ${test.error.dir} ${test.sandbox.dir} ${test.trusted.dir}
test-sys-prop.test262.suite.dir=${test262.suite.dir}
test-sys-prop.es5conform.testcases.dir=${test.external.dir}/ES5Conform/TestCases
test-sys-prop.test.basic.dir=${test.basic.dir}
test-sys-prop.test.external.dir=${test.external.dir}
test-sys-prop.test.maptests.dir=${test.maptests.dir}
test-sys-prop.test.sandbox.dir=${test.sandbox.dir}
test-sys-prop.test.trusted.dir=${test.trusted.dir}

test-sys-prop-no-security.test.dir=${test.dir}
test-sys-prop-no-security.test.js.roots=${test.nosecurity.dir}

# framework root for our script tests
test-sys-prop.test.js.framework=${test.script.dir}/assert.js
test-sys-prop-no-security.test.js.framework=${test.script.dir}/assert.js

# Control the verbosity of ParserTest
test-sys-prop.parsertest.verbose=false

# turn on/off scripting mode for parser tests
test-sys-prop.parsertest.scripting=true
test-sys-prop.parserapitest.verbose=false

# turn on/off test262 scripts for parser tests
test-sys-prop.parsertest.test262=false
test-sys-prop.parserapitest.test262=false

# Control the verbosity of the CompilerTest
test-sys-prop.compilertest.verbose=false

# turn on/off scripting mode for compiler tests
test-sys-prop.compilertest.scripting=true

# turn on/off test262 scripts for compiler tests
test-sys-prop.compilertest.test262=false

# test directory to be excluded.
test-sys-prop.test.js.exclude.dir=${test.script.dir}/currently-failing ${test.external.dir}

# run everything that's js in here, without checking file headers for test annotations
test-sys-prop.test.js.unchecked.dir=${test262.dir}

# test root for octane
octane-test-sys-prop.test.js.roots=${test.external.dir}/octane/

# run octane benchmars in separate processes? (recommended)
octane-test-sys-prop.separate.process=true

# framework root for octane
octane-test-sys-prop.test.js.framework=${test.basic.dir}/run-octane.js

# test root for sunspider
sunspider-test-sys-prop.test.js.roots=${test.external.dir}/sunspider/tests/sunspider-1.0.2/

# framework root for sunspider
sunspider-test-sys-prop.test.js.framework=${test.basic.dir}/runsunspider.js

# list of tests to be excluded
sunspider-test-sys-prop.test.js.exclude.list=

# execute our script tests in shared nashorn context or not?
test-sys-prop.test.js.shared.context=false

# execute test262 tests in shared nashorn context or not?
test262-test-sys-prop.test.js.shared.context=true

# test262 test root
test262-test-sys-prop.test.js.roots=${test262.suite.dir}

# test262 enable/disable strict mode tests
test262-test-sys-prop.test.js.enable.strict.mode=true

# file containing test262 tests to be excluded
# test262-test-sys-prop.test.js.excludes.file=${test262.dir}/test/config/excludelist.xml

# list of test262 test dirs to be excluded
test262-test-sys-prop.test.js.exclude.dir=\
    ${test262.suite.dir}/intl402/ \
    ${test262.suite.dir}/bestPractice/

test262-test-sys-prop.test.failed.list.file=${build.dir}/test/failedTests

# test262 test frameworks
test262-test-sys-prop.test.js.framework=\
    --class-cache-size=10 \
    --no-java \
    --no-typed-arrays \
    -timezone=PST \
    ${test.script.dir}/test262.js \
    ${test262.dir}/test/harness/framework.js \
    ${test262.dir}/test/harness/sta.js

# testmarkdown test root
testmarkdown-test-sys-prop.test.js.roots=${testmarkdown.dir}

# execute testmarkdown tests in shared nashorn context or not?
testmarkdown-test-sys-prop.test.js.shared.context=false

# framework root for markdown script tests
testmarkdown-test-sys-prop.test.js.framework=\
    ${test.script.dir}${file.separator}markdown.js

# testjfx test root
testjfx-test-sys-prop.test.js.roots=${testjfx.dir}

# execute testjfx tests in shared nashorn context or not?
testjfx-test-sys-prop.test.js.shared.context=false

# framework root for our script tests
testjfx-test-sys-prop.test.js.framework=\
    -fx \
    ${test.script.dir}${file.separator}jfx.js

file.reference.jemmyfx.jar=${test.lib}${file.separator}JemmyFX.jar
file.reference.jemmycore.jar=${test.lib}${file.separator}JemmyCore.jar
file.reference.jemmyawtinput.jar=${test.lib}${file.separator}JemmyAWTInput.jar
file.reference.jfxrt.jar=${java.home}${file.separator}lib${file.separator}ext${file.separator}jfxrt.jar
testjfx.run.test.classpath=\
    ${file.reference.jemmyfx.jar}${path.separator}\
    ${file.reference.jemmycore.jar}${path.separator}\
    ${file.reference.jemmyawtinput.jar}${path.separator}\
    ${file.reference.testng.jar}${path.separator}\
    ${nashorn.internal.tests.jar}${path.separator}\
    ${nashorn.api.tests.jar}

# testjfx VM options for script tests with @fork option
testjfx-test-sys-prop.test.fork.jvm.options=${run.test.jvmargs.main} -Xmx${run.test.xmx} -cp ${testjfx.run.test.classpath}

run.test.classpath=\
    ${file.reference.testng.jar}${path.separator}\
    ${nashorn.internal.tests.jar}${path.separator}\
    ${nashorn.api.tests.jar}

nashorn.module.src.dir=src/jdk.scripting.nashorn/share/classes
nashorn.shell.module.src.dir=src/jdk.scripting.nashorn.shell/share/classes

src.dir=${nashorn.module.src.dir}${path.separator}\
        ${nashorn.shell.module.src.dir}${path.separator}\
        ${jdk.jline.src.dir}

test.src.dir=test/src

# -Xmx is used for all tests, -Xms only for octane benchmark
run.test.xmx=2G
run.test.xms=2G

# uncomment this jfr.args to enable light recordings. the stack needs to be cranked up to 1024 frames,
# or everything will as of the now drown in lambda forms and be cut off.
#
#jfr.args=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,dumponexit=true,dumponexitpath="test_suite.jfr",stackdepth=1024 \

jfr.args=

run.test.user.language=tr
run.test.user.country=TR

run.test.jvmargs.common=\
  -server \
  -Dfile.encoding=UTF-8 \
  -Duser.language=${run.test.user.language} \
  -Duser.country=${run.test.user.country} \
  -Dnashorn.typeInfo.cacheDir=${build.dir}${file.separator}test${file.separator}type_info_cache \
  ${jfr.args} \
  -XX:+HeapDumpOnOutOfMemoryError

# turn on assertions for tests
run.test.jvmargs.main=${run.test.jvmargs.common} -esa -ea -da:java.lang.invoke.LambdaFormEditor

# Extra jvmargs that might be useful for debugging
# and performance improvements/monitoring
#
# -XX:+UnlockDiagnosticVMOptions
#
# turn off compressed class pointers in metaspace
# -XX:-UseCompressedKlassPointers
#
# dump the heap after every GC
# -XX:+PrintHeapAtGC
#
# manually set a metaspace size for class data
# -XX:ClassMetaspaceSize=300M
#
# print out methods compiled
# -XX:+PrintCompilation
#
# print all compiled nmethods with oopmaps and lots of other info
# -XX:+PrintNMethods
#
# activate the generic "UseNewCode" flag to test whatever functionality
# lies behind it. This is the preferred way to test a, yet flagless,
# feature in HotSpot - for example, the uncommon trap placement fix
# was hidden behind this flag before it became the default
#
# -XX:+UnlockDiagnosticVMOptions -XX:+UseNewCode
#
# Crank up the type profile level to 222, which has some warmup
# penalties, but produces much better code for JavaScript, where better
# and more intrusive type profiling is required to get rid of
# a large amount of unnecessary guard code, that could not otherwise
# be eliminated
#
# -XX:TypeProfileLevel=222
#

# Use best known performance options for octane
run.test.jvmargs.octane.main=${run.test.jvmargs.common} -XX:TypeProfileLevel=222

# Security manager args - make sure that we run with the nashorn.policy that the build creates
run.test.jvmsecurityargs=-Xverify:all -Djava.security.manager -Djava.security.policy=${build.dir}/nashorn.policy

# VM options for script tests with @fork option
test-sys-prop.test.fork.jvm.options=${run.test.jvmargs.main} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs} -cp ${run.test.classpath}
# VM options for no-security script tests with @fork option - same as above but without jvmsecurityargs
test-sys-prop-no-security.test.fork.jvm.options=${run.test.jvmargs.main} -Xmx${run.test.xmx} -cp ${run.test.classpath}

# path of rhino.jar for benchmarks
rhino.dir=
rhino.jar=${rhino.dir}/js.jar

v8.shell=d8

# How many iterations should 'ant octane' run for each
# benchmark
octane.iterations=25

# List of octane tests to run, as properties prefixed with
# "octane.benchmark." mapping to the benchmark name in
# the test harness
#
# Octane tests that are disabled should have their entire line
# commented out  Tests may be disabled for functionality reasons when
# they have bugs or when the runtime doesn't handle them (yet)
octane.benchmark.box2d=box2d
#octane.benchmark.code-load=code-load
octane.benchmark.crypto=crypto
octane.benchmark.deltablue=deltablue
octane.benchmark.earley-boyer=earley-boyer
octane.benchmark.gbemu=gbemu
octane.benchmark.navier-stokes=navier-stokes
octane.benchmark.mandreel=mandreel
octane.benchmark.pdfjs=pdfjs
octane.benchmark.raytrace=raytrace
octane.benchmark.regexp=regexp
octane.benchmark.richards=richards
octane.benchmark.splay=splay
#octane.benchmark.typescript=typescript
#octane.benchmark.zlib=zlib

#path to rhino jar file
octaneperf-sys-prop.rhino.jar=${rhino.jar}

#timeout for performance tests in minutes
octaneperf-sys-prop.timeout.value=10

#how many iterations to run sunspider after warmup
sunspider.iterations=3000

#################
# code coverage #
#################

#enable/disable code coverage; please redifine in the ${user.home}/.nashorn.project.local.properties
make.code.coverage=false

#type of codecoverage; one of static or dynamic. Now only dynamic is supported
jcov=dynamic

#naming of CC results
#NB directory specified in the cc.dir will be cleaned up!!!
cc.dir=${basedir}/../Codecoverage_Nashorn
cc.result.file.name=CC_${jcov}_nashorn.xml

#dynamic CC parameters; please redefine in the ${user.home}/.nashorn.project.local.properties
jcov2.lib.dir=${basedir}/../jcov2/lib
jcov.jar=${jcov2.lib.dir}/jcov.jar
cc.include=jdk\.nashorn\.*
cc.exclude=jdk\.nashorn\.internal\.scripts\.*
cc.dynamic.genereate.template=true
cc.template=${cc.dir}/CC_template.xml
cc.dynamic.args=-javaagent:${jcov.jar}=include=${cc.include},exclude=${cc.exclude},type=all,verbose=0,file=${cc.dir}/${cc.result.file.name}
