| <?xml version="1.0" encoding="UTF-8"?> |
| |
| <!-- |
| 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. |
| --> |
| |
| <project name="nashorn" default="test" basedir=".."> |
| <import file="build-nasgen.xml"/> |
| <import file="code_coverage.xml"/> |
| |
| <target name="init-conditions"> |
| <!-- loading locally defined resources and properties. NB they owerwrite default ones defined later --> |
| <property file="${user.home}/.nashorn.project.local.properties"/> |
| |
| <loadproperties srcFile="make/project.properties"/> |
| <path id="dist.path"> |
| <pathelement location="${dist.dir}"/> |
| </path> |
| <path id="nashorn.ext.path"> |
| <pathelement location="${dist.dir}"/> |
| <pathelement location="${java.ext.dirs}"/> |
| </path> |
| <property name="ext.class.path" value="-Djava.ext.dirs="${toString:nashorn.ext.path}""/> |
| <condition property="svn.executable" value="/usr/local/bin/svn" else="svn"> |
| <available file="/usr/local/bin/svn"/> |
| </condition> |
| <condition property="hg.executable" value="/usr/local/bin/hg" else="hg"> |
| <available file="/usr/local/bin/hg"/> |
| </condition> |
| <condition property="git.executable" value="/usr/local/bin/git" else="git"> |
| <available file="/usr/local/bin/git"/> |
| </condition> |
| <!-- check if TestNG and dependencies are available, and download them if they aren't --> |
| <antcall target="get-testng"/> |
| <condition property="testng.available" value="true"> |
| <and> |
| <available file="${file.reference.testng.jar}"/> |
| <available file="${file.reference.jcommander.jar}"/> |
| <available file="${file.reference.bsh.jar}"/> |
| <available file="${file.reference.snakeyaml.jar}"/> |
| </and> |
| </condition> |
| <!-- check if Jemmy ang TestNG are avaiable --> |
| <condition property="jemmy.jfx.testng.available" value="true"> |
| <and> |
| <available file="${file.reference.jemmyfx.jar}"/> |
| <available file="${file.reference.jemmycore.jar}"/> |
| <available file="${file.reference.jemmyawtinput.jar}"/> |
| <available file="${file.reference.jfxrt.jar}"/> |
| <isset property="testng.available"/> |
| </and> |
| </condition> |
| |
| <!-- enable/disable make code coverage --> |
| <condition property="cc.enabled"> |
| <istrue value="${make.code.coverage}" /> |
| </condition> |
| |
| <!-- exclude tests in exclude lists --> |
| <condition property="exclude.list" value="./exclude/exclude_list_cc.txt" else="./exclude/exclude_list.txt"> |
| <istrue value="${make.code.coverage}" /> |
| </condition> |
| |
| <condition property="jfr.options" value="${run.test.jvmargs.jfr}" else=""> |
| <istrue value="${jfr}"/> |
| </condition> |
| |
| <condition property="test-sys-prop-no-security.os.not.windows"> |
| <not> |
| <os family="windows"/> |
| </not> |
| </condition> |
| </target> |
| |
| <!-- check minimum ant version required to be 1.8.4 --> |
| <target name="check-ant-version"> |
| <property name="ant.version.required" value="1.8.4"/> |
| <antversion property="ant.current.version" /> |
| <fail message="The current ant version, ${ant.current.version}, is too old. Please use 1.8.4 or above."> |
| <condition> |
| <not> |
| <antversion atleast="${ant.version.required}"/> |
| </not> |
| </condition> |
| </fail> |
| </target> |
| |
| <target name="check-java-version"> |
| <!-- look for a Class that is available only in jdk1.8 or above --> |
| <!-- core/exposed API class is better than an implementation class --> |
| <available property="jdk1.8+" classname="java.util.stream.Stream"/> |
| |
| <!-- need jdk1.8 or above --> |
| <fail message="Unsupported Java version: ${ant.java.version}. Please use Java version 1.8 or greater." unless="jdk1.8+"> |
| </fail> |
| </target> |
| |
| <target name="init" depends="check-ant-version, check-java-version, init-conditions, init-cc"> |
| <!-- extends jvm args --> |
| <property name="run.test.jvmargs" value="${run.test.jvmargs.main} ${run.test.cc.jvmargs} ${jfr.options}"/> |
| <property name="run.test.jvmargs.octane" value="${run.test.jvmargs.octane.main} ${run.test.cc.jvmargs} ${jfr.options}"/> |
| |
| <echo message="run.test.jvmargs=${run.test.jvmargs}"/> |
| <echo message="run.test.jvmargs.octane=${run.test.jvmargs.octane}"/> |
| <echo message="run.test.xms=${run.test.xms}"/> |
| <echo message="run.test.xmx=${run.test.xmx}"/> |
| |
| </target> |
| |
| <target name="prepare" depends="init"> |
| <mkdir dir="${build.dir}"/> |
| <mkdir dir="${build.classes.dir}"/> |
| <mkdir dir="${build.classes.dir}/META-INF/services"/> |
| <mkdir dir="${build.test.classes.dir}"/> |
| <mkdir dir="${dist.dir}"/> |
| <mkdir dir="${dist.javadoc.dir}"/> |
| </target> |
| |
| <target name="clean" depends="init, clean-nasgen, init-cc-cleanup"> |
| <delete includeemptydirs="true"> |
| <fileset dir="${build.dir}" erroronmissingdir="false"/> |
| </delete> |
| <delete dir="${dist.dir}"/> |
| </target> |
| |
| <target name="compile" depends="prepare" description="Compiles nashorn"> |
| <javac srcdir="${src.dir}" |
| destdir="${build.classes.dir}" |
| classpath="${javac.classpath}" |
| source="${javac.source}" |
| target="${javac.target}" |
| debug="${javac.debug}" |
| encoding="${javac.encoding}" |
| includeantruntime="false" fork="true"> |
| <compilerarg value="-J-Djava.ext.dirs="/> |
| <compilerarg value="-Xlint:all"/> |
| <compilerarg value="-XDignore.symbol.file"/> |
| <compilerarg value="-Xdiags:verbose"/> |
| </javac> |
| <copy todir="${build.classes.dir}/META-INF/services"> |
| <fileset dir="${meta.inf.dir}/services/"/> |
| </copy> |
| <copy todir="${build.classes.dir}/jdk/nashorn/api/scripting/resources"> |
| <fileset dir="${src.dir}/jdk/nashorn/api/scripting/resources/"/> |
| </copy> |
| <copy todir="${build.classes.dir}/jdk/nashorn/internal/runtime/resources"> |
| <fileset dir="${src.dir}/jdk/nashorn/internal/runtime/resources/"/> |
| </copy> |
| <copy todir="${build.classes.dir}/jdk/nashorn/tools/resources"> |
| <fileset dir="${src.dir}/jdk/nashorn/tools/resources/"/> |
| </copy> |
| <copy file="${src.dir}/jdk/internal/dynalink/support/messages.properties" todir="${build.classes.dir}/jdk/internal/dynalink/support"/> |
| <copy file="${src.dir}/jdk/nashorn/internal/codegen/anchor.properties" todir="${build.classes.dir}/jdk/nashorn/internal/codegen"/> |
| |
| <echo message="full=${nashorn.fullversion}" file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties"/> |
| <echo file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties" append="true">${line.separator}</echo> |
| <echo message="release=${nashorn.version}" file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties" append="true"/> |
| </target> |
| |
| <target name="jar" depends="compile, run-nasgen, generate-cc-template" description="Creates nashorn.jar" unless="compile.suppress.jar"> |
| <jar jarfile="${dist.jar}" manifest="${meta.inf.dir}/MANIFEST.MF" index="true" filesetmanifest="merge"> |
| <fileset dir="${build.classes.dir}"/> |
| <manifest> |
| <attribute name="Archiver-Version" value="n/a"/> |
| <attribute name="Build-Jdk" value="${java.runtime.version}"/> |
| <attribute name="Built-By" value="n/a"/> |
| <attribute name="Created-By" value="Ant jar task"/> |
| <section name="jdk/nashorn/"> |
| <attribute name="Implementation-Title" value="${nashorn.product.name}"/> |
| <attribute name="Implementation-Version" value="${nashorn.version}"/> |
| </section> |
| </manifest> |
| </jar> |
| </target> |
| |
| <target name="use-promoted-nashorn" depends="init"> |
| <delete file="${dist.dir}/nashorn.jar"/> |
| <copy file="${java.home}/lib/ext/nashorn.jar" todir="${dist.dir}"/> |
| <property name="compile.suppress.jar" value="defined"/> |
| </target> |
| |
| <target name="build-fxshell" depends="jar"> |
| <description>Builds the javafx shell.</description> |
| <mkdir dir="${fxshell.classes.dir}"/> |
| <javac srcdir="${fxshell.dir}" |
| destdir="${fxshell.classes.dir}" |
| classpath="${dist.jar}${path.separator}${javac.classpath}" |
| debug="${javac.debug}" |
| encoding="${javac.encoding}" |
| includeantruntime="false"> |
| </javac> |
| <jar jarfile="${fxshell.jar}" manifest="${meta.inf.dir}/MANIFEST.MF" index="true" filesetmanifest="merge"> |
| <fileset dir="${fxshell.classes.dir}"/> |
| <manifest> |
| <attribute name="Archiver-Version" value="n/a"/> |
| <attribute name="Build-Jdk" value="${java.runtime.version}"/> |
| <attribute name="Built-By" value="n/a"/> |
| <attribute name="Created-By" value="Ant jar task"/> |
| <section name="jdk/nashorn/"> |
| <attribute name="Implementation-Title" value="Oracle Nashorn FXShell"/> |
| <attribute name="Implementation-Version" value="${nashorn.version}"/> |
| </section> |
| </manifest> |
| </jar> |
| </target> |
| |
| <!-- generate javadoc for all Nashorn and ASM classes --> |
| <target name="javadoc" depends="jar"> |
| <javadoc destdir="${dist.javadoc.dir}" use="yes" overview="${src.dir}/overview.html" |
| extdirs="${nashorn.ext.path}" windowtitle="${nashorn.product.name} ${nashorn.version}" |
| additionalparam="-quiet" failonerror="true" useexternalfile="true"> |
| <arg value="${javadoc.option}"/> |
| <classpath> |
| <pathelement location="${build.classes.dir}"/> |
| </classpath> |
| <fileset dir="${src.dir}" includes="**/*.java"/> |
| <fileset dir="${jdk.asm.src.dir}" includes="**/*.java"/> |
| <link href="http://docs.oracle.com/javase/8/docs/api/"/> |
| <!-- The following tags are used only in ASM sources - just ignore these --> |
| <tag name="label" description="label tag in ASM sources" enabled="false"/> |
| <tag name="linked" description="linked tag in ASM sources" enabled="false"/> |
| <tag name="associates" description="associates tag in ASM sources" enabled="false"/> |
| </javadoc> |
| </target> |
| |
| <!-- generate javadoc for Nashorn classes --> |
| <target name="javadocnh" depends="jar"> |
| <javadoc destdir="${dist.javadoc.dir}" use="yes" overview="${src.dir}/overview.html" |
| extdirs="${nashorn.ext.path}" windowtitle="${nashorn.product.name} ${nashorn.version}" |
| additionalparam="-quiet" failonerror="true" useexternalfile="true"> |
| <arg value="${javadoc.option}"/> |
| <classpath> |
| <pathelement location="${build.classes.dir}"/> |
| </classpath> |
| <fileset dir="${src.dir}" includes="**/*.java"/> |
| <link href="http://docs.oracle.com/javase/8/docs/api/"/> |
| </javadoc> |
| </target> |
| |
| <!-- generate javadoc only for nashorn extension api classes --> |
| <target name="javadocapi" depends="jar"> |
| <javadoc destdir="${dist.javadoc.dir}" use="yes" extdirs="${nashorn.ext.path}" |
| windowtitle="${nashorn.product.name}" additionalparam="-quiet" failonerror="true" useexternalfile="true"> |
| <arg value="${javadoc.option}"/> |
| <classpath> |
| <pathelement location="${build.classes.dir}"/> |
| </classpath> |
| <fileset dir="${src.dir}" includes="jdk/nashorn/api/**/*.java"/> |
| <link href="http://docs.oracle.com/javase/8/docs/api/"/> |
| </javadoc> |
| </target> |
| |
| <!-- generate shell.html for shell tool documentation --> |
| <target name="shelldoc" depends="jar"> |
| <java classname="${nashorn.shell.tool}" dir="${basedir}" output="${dist.dir}/shell.html" failonerror="true" fork="true"> |
| <jvmarg line="${ext.class.path}"/> |
| <arg value="-scripting"/> |
| <arg value="docs/genshelldoc.js"/> |
| </java> |
| </target> |
| |
| <!-- generate all docs --> |
| <target name="docs" depends="javadoc, shelldoc"/> |
| |
| <!-- create .zip and .tar.gz for nashorn binaries and scripts. --> |
| <target name="dist" depends="jar"> |
| <zip destfile="${build.zip}" basedir=".." |
| excludes="nashorn/bin/*.sh" includes="nashorn/bin/** nashorn/dist/**"/> |
| <tar destfile="${build.gzip}" basedir=".." compression="gzip" |
| excludes="nashorn/bin/*.sh" includes="nashorn/bin/** nashorn/dist/**"/> |
| </target> |
| |
| <target name="compile-test" depends="compile, run-nasgen" if="testng.available"> |
| <!-- testng task --> |
| <taskdef name="testng" classname="org.testng.TestNGAntTask" |
| classpath="${testng.ant.classpath}"/> |
| |
| <javac srcdir="${test.src.dir}" |
| destdir="${build.test.classes.dir}" |
| classpath="${javac.test.classpath}" |
| source="${test.javac.source}" |
| target="${test.javac.target}" |
| debug="${javac.debug}" |
| encoding="${javac.encoding}" |
| includeantruntime="false" fork="true"> |
| <compilerarg value="-J-Djava.ext.dirs="/> |
| <compilerarg value="-Xlint:unchecked"/> |
| <compilerarg value="-Xlint:deprecation"/> |
| <compilerarg value="-Xdiags:verbose"/> |
| </javac> |
| |
| <copy todir="${build.test.classes.dir}/META-INF/services"> |
| <fileset dir="${test.src.dir}/META-INF/services/"/> |
| </copy> |
| |
| <copy todir="${build.test.classes.dir}/jdk/nashorn/internal/runtime/test/resources"> |
| <fileset dir="${test.src.dir}/jdk/nashorn/internal/runtime/test/resources"/> |
| </copy> |
| |
| <copy todir="${build.test.classes.dir}/jdk/nashorn/api/scripting/test/resources"> |
| <fileset dir="${test.src.dir}/jdk/nashorn/api/scripting/test/resources"/> |
| </copy> |
| |
| <!-- tests that check nashorn internals and internal API --> |
| <jar jarfile="${nashorn.internal.tests.jar}"> |
| <fileset dir="${build.test.classes.dir}" excludes="**/api/**"/> |
| </jar> |
| |
| <!-- tests that check nashorn script engine (jsr-223) API --> |
| <jar jarfile="${nashorn.api.tests.jar}"> |
| <fileset dir="${build.test.classes.dir}" includes="**/api/**"/> |
| <fileset dir="${build.test.classes.dir}" includes="**/META-INF/**"/> |
| <fileset dir="${build.test.classes.dir}" includes="**/resources/*.js"/> |
| </jar> |
| |
| </target> |
| |
| <target name="generate-policy-file" depends="prepare"> |
| <echo file="${build.dir}/nashorn.policy"> |
| |
| grant codeBase "file:/${toString:dist.path}/nashorn.jar" { |
| permission java.security.AllPermission; |
| }; |
| |
| grant codeBase "file:/${basedir}/${nashorn.internal.tests.jar}" { |
| permission java.security.AllPermission; |
| }; |
| |
| grant codeBase "file:/${basedir}/${file.reference.testng.jar}" { |
| permission java.security.AllPermission; |
| }; |
| grant codeBase "file:/${basedir}/${file.reference.jcommander.jar}" { |
| permission java.security.AllPermission; |
| }; |
| grant codeBase "file:/${basedir}/${file.reference.bsh.jar}" { |
| permission java.security.AllPermission; |
| }; |
| grant codeBase "file:/${basedir}/${file.reference.snakeyaml.jar}" { |
| permission java.security.AllPermission; |
| }; |
| //// in case of absolute path: |
| grant codeBase "file:/${nashorn.internal.tests.jar}" { |
| permission java.security.AllPermission; |
| }; |
| |
| grant codeBase "file:/${file.reference.testng.jar}" { |
| permission java.security.AllPermission; |
| }; |
| grant codeBase "file:/${file.reference.jcommander.jar}" { |
| permission java.security.AllPermission; |
| }; |
| grant codeBase "file:/${file.reference.bsh.jar}" { |
| permission java.security.AllPermission; |
| }; |
| grant codeBase "file:/${file.reference.snakeyaml.jar}" { |
| permission java.security.AllPermission; |
| }; |
| |
| |
| grant codeBase "file:/${basedir}/test/script/trusted/*" { |
| permission java.security.AllPermission; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/maptests/*" { |
| permission java.io.FilePermission "${basedir}/test/script/maptests/*","read"; |
| permission java.lang.RuntimePermission "nashorn.debugMode"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/*" { |
| permission java.io.FilePermission "${basedir}/test/script/-", "read"; |
| permission java.io.FilePermission "$${user.dir}", "read"; |
| permission java.util.PropertyPermission "user.dir", "read"; |
| permission java.util.PropertyPermission "nashorn.test.*", "read"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/apply_to_call/*" { |
| permission java.io.FilePermission "${basedir}/test/script/-", "read"; |
| permission java.io.FilePermission "$${user.dir}", "read"; |
| permission java.util.PropertyPermission "user.dir", "read"; |
| permission java.util.PropertyPermission "nashorn.test.*", "read"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/parser/*" { |
| permission java.io.FilePermission "${basedir}/test/script/-", "read"; |
| permission java.io.FilePermission "$${user.dir}", "read"; |
| permission java.util.PropertyPermission "user.dir", "read"; |
| permission java.util.PropertyPermission "nashorn.test.*", "read"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/es6/*" { |
| permission java.io.FilePermission "${basedir}/test/script/-", "read"; |
| permission java.io.FilePermission "$${user.dir}", "read"; |
| permission java.util.PropertyPermission "user.dir", "read"; |
| permission java.util.PropertyPermission "nashorn.test.*", "read"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/JDK-8010946-privileged.js" { |
| permission java.util.PropertyPermission "java.security.policy", "read"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/classloader.js" { |
| permission java.lang.RuntimePermission "nashorn.JavaReflection"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/markdown.js" { |
| permission java.io.FilePermission "${basedir}/test/script/external/showdown/-", "read"; |
| }; |
| |
| grant codeBase "file:/${basedir}/test/script/basic/JDK-8158467.js" { |
| permission java.lang.RuntimePermission "nashorn.setConfig"; |
| }; |
| |
| </echo> |
| |
| <replace file="${build.dir}/nashorn.policy"><replacetoken>\</replacetoken><replacevalue>/</replacevalue></replace> <!--hack for Windows - to make URLs with normal path separators --> |
| <replace file="${build.dir}/nashorn.policy"><replacetoken>//</replacetoken><replacevalue>/</replacevalue></replace> <!--hack for Unix - to avoid leading // in URLs --> |
| |
| </target> |
| |
| <target name="check-external-tests"> |
| <available file="${test.external.dir}/prototype" property="test-sys-prop.external.prototype"/> |
| <available file="${test.external.dir}/sunspider" property="test-sys-prop.external.sunspider"/> |
| <available file="${test.external.dir}/underscore" property="test-sys-prop.external.underscore"/> |
| <available file="${test.external.dir}/octane" property="test-sys-prop.external.octane"/> |
| <available file="${test.external.dir}/yui" property="test-sys-prop.external.yui"/> |
| <available file="${test.external.dir}/jquery" property="test-sys-prop.external.jquery"/> |
| <available file="${test.external.dir}/test262" property="test-sys-prop.external.test262"/> |
| <available file="${test.external.dir}/showdown" property="test-sys-prop.external.markdown"/> |
| </target> |
| |
| <target name="check-testng" unless="testng.available"> |
| <echo message="WARNING: TestNG not available, will not run tests. Please copy TestNG and dependency JARs to the ${test.lib} directory."/> |
| </target> |
| |
| <!-- only to be invoked as dependency of "test" target --> |
| <target name="-test-classes-all" depends="jar" unless="test.class"> |
| <fileset id="test.classes" dir="${build.test.classes.dir}"> |
| <include name="**/api/javaaccess/test/*Test.class"/> |
| <include name="**/api/scripting/test/*Test.class"/> |
| <include name="**/codegen/test/*Test.class"/> |
| <include name="**/parser/test/*Test.class"/> |
| <include name="**/runtime/test/*Test.class"/> |
| <include name="**/runtime/regexp/test/*Test.class"/> |
| <include name="**/runtime/regexp/joni/test/*Test.class"/> |
| <include name="**/framework/*Test.class"/> |
| </fileset> |
| </target> |
| |
| <!-- only to be invoked as dependency of "test" target --> |
| <target name="-test-classes-single" depends="jar" if="test.class"> |
| <fileset id="test.classes" dir="${build.test.classes.dir}"> |
| <include name="${test.class}*"/> |
| </fileset> |
| </target> |
| |
| <!-- only to be invoked as dependency of "test" target --> |
| <target name="-test-nosecurity" unless="test.class"> |
| <fileset id="test.nosecurity.classes" dir="${build.test.classes.dir}"> |
| <include name="**/framework/ScriptTest.class"/> |
| </fileset> |
| <testng outputdir="${build.nosecurity.test.results.dir}/${testResultsSubDir}" classfilesetref="test.nosecurity.classes" |
| verbose="${testng.verbose}" haltonfailure="true" useDefaultListeners="false" listeners="${testng.listeners}" workingDir="${basedir}"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} -Dbuild.dir=${build.dir}"/> |
| <sysproperty key="nashorn.jar" value="${dist.dir}/nashorn.jar"/> |
| <propertyset> |
| <propertyref prefix="nashorn."/> |
| </propertyset> |
| <propertyset> |
| <propertyref prefix="test-sys-prop-no-security."/> |
| <mapper from="test-sys-prop-no-security.*" to="*" type="glob"/> |
| </propertyset> |
| <sysproperty key="optimistic.override" value="${optimistic}"/> |
| <classpath> |
| <pathelement path="${run.test.classpath}"/> |
| </classpath> |
| </testng> |
| </target> |
| |
| <!-- only to be invoked as dependency of "test" target --> |
| <target name="-test-security"> |
| <delete dir="${build.dir}/nashorn_code_cache"/> |
| <property name="debug.test.jvmargs" value=""/> |
| <testng outputdir="${build.test.results.dir}/${testResultsSubDir}" classfilesetref="test.classes" |
| verbose="${testng.verbose}" haltonfailure="true" useDefaultListeners="false" listeners="${testng.listeners}" workingDir="${basedir}"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs} -Dbuild.dir=${build.dir}"/> |
| <jvmarg line="${debug.test.jvmargs}"/> |
| <propertyset> |
| <propertyref prefix="nashorn."/> |
| </propertyset> |
| <propertyset> |
| <propertyref prefix="test-sys-prop."/> |
| <mapper from="test-sys-prop.*" to="*" type="glob"/> |
| </propertyset> |
| <sysproperty key="optimistic.override" value="${optimistic}"/> |
| <sysproperty key="test.js.excludes.file" value="${exclude.list}"/> |
| <classpath> |
| <pathelement path="${run.test.classpath}"/> |
| </classpath> |
| </testng> |
| </target> |
| |
| <target name="test" depends="prepare, javadocnh, test-pessimistic, test-optimistic"/> |
| |
| <target name="test-optimistic" depends="jar, -test-classes-all,-test-classes-single, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available"> |
| <echo message="Running test suite in OPTIMISTIC mode..."/> |
| <antcall target="-test-nosecurity" inheritRefs="true"> |
| <param name="optimistic" value="true"/> |
| <param name="testResultsSubDir" value="optimistic"/> |
| </antcall> |
| <antcall target="-test-security" inheritRefs="true"> |
| <param name="optimistic" value="true"/> |
| <param name="testResultsSubDir" value="optimistic"/> |
| </antcall> |
| </target> |
| |
| <target name="test-pessimistic" depends="jar, -test-classes-all,-test-classes-single, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available"> |
| <echo message="Running test suite in PESSIMISTIC mode..."/> |
| <antcall target="-test-nosecurity" inheritRefs="true"> |
| <param name="optimistic" value="false"/> |
| <param name="testResultsSubDir" value="pessimistic"/> |
| </antcall> |
| <antcall target="-test-security" inheritRefs="true"> |
| <param name="optimistic" value="false"/> |
| <param name="testResultsSubDir" value="pessimistic"/> |
| </antcall> |
| </target> |
| |
| <target name="check-jemmy.jfx.testng" unless="jemmy.jfx.testng.available"> |
| <echo message="WARNING: Jemmy or JavaFX or TestNG not available, will not run tests. Please copy TestNG and dependency JARs, JemmyCore.jar, JemmyFX.jar, JemmyAWTInput.jar to the test${file.separator}lib directory. And make sure you have jfxrt.jar in ${java.home}${file.separator}lib${file.separator}ext dir."/> |
| </target> |
| |
| <target name="testjfx" depends="jar, get-testng, check-jemmy.jfx.testng, compile-test" if="jemmy.jfx.testng.available"> |
| <fileset id="test.classes" dir="${build.test.classes.dir}"> |
| <include name="**/framework/*Test.class"/> |
| </fileset> |
| |
| <copy file="${file.reference.jfxrt.jar}" todir="dist"/> |
| |
| <condition property="jfx.prism.order" value="-Dprism.order=j2d" else=" "> |
| <not> |
| <os family="mac"/> |
| </not> |
| </condition> |
| |
| <testng outputdir="${build.test.results.dir}" classfilesetref="test.classes" |
| verbose="${testng.verbose}" haltonfailure="true" useDefaultListeners="false" listeners="${testng.listeners}" workingDir="${basedir}"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} -Dbuild.dir=${build.dir}"/> |
| <propertyset> |
| <propertyref prefix="testjfx-test-sys-prop."/> |
| <mapper from="testjfx-test-sys-prop.*" to="*" type="glob"/> |
| </propertyset> |
| <sysproperty key="test.fork.jvm.options" value="${testjfx-test-sys-prop.test.fork.jvm.options} ${jfx.prism.order}"/> |
| <classpath> |
| <pathelement path="${testjfx.run.test.classpath}"/> |
| </classpath> |
| </testng> |
| </target> |
| |
| <target name="testmarkdown" depends="jar, get-testng, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available"> |
| <fileset id="test.classes" dir="${build.test.classes.dir}"> |
| <include name="**/framework/*Test.class"/> |
| </fileset> |
| |
| <testng outputdir="${build.test.results.dir}" classfilesetref="test.classes" |
| verbose="${testng.verbose}" haltonfailure="true" useDefaultListeners="false" listeners="${testng.listeners}" workingDir="${basedir}"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs} -Dbuild.dir=${build.dir}"/> |
| <propertyset> |
| <propertyref prefix="testmarkdown-test-sys-prop."/> |
| <mapper from="testmarkdown-test-sys-prop.*" to="*" type="glob"/> |
| </propertyset> |
| <classpath> |
| <pathelement path="${run.test.classpath}"/> |
| </classpath> |
| </testng> |
| </target> |
| |
| <target name="test262" depends="jar, get-testng, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available"> |
| <fileset id="test.classes" dir="${build.test.classes.dir}"> |
| <include name="**/framework/*Test.class"/> |
| </fileset> |
| |
| <testng outputdir="${build.test.results.dir}" classfilesetref="test.classes" |
| verbose="${testng.verbose}" haltonfailure="true" useDefaultListeners="false" listeners="${testng.listeners}" workingDir="${basedir}"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs} -Dbuild.dir=${build.dir}"/> |
| <propertyset> |
| <propertyref prefix="nashorn."/> |
| </propertyset> |
| <propertyset> |
| <propertyref prefix="test262-test-sys-prop."/> |
| <mapper from="test262-test-sys-prop.*" to="*" type="glob"/> |
| </propertyset> |
| <classpath> |
| <pathelement path="${run.test.classpath}"/> |
| </classpath> |
| </testng> |
| </target> |
| |
| <target name="test262parallel" depends="test262-parallel"/> |
| |
| <target name="test262-parallel" depends="jar, get-testng, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available"> |
| <!-- use just build.test.classes.dir to avoid referring to TestNG --> |
| <java classname="${parallel.test.runner}" dir="${basedir}" fork="true"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs} -Dbuild.dir=${build.dir}"/> |
| <!-- avoid too many typeinfo cache files. Each script is run only once anyway --> |
| <jvmarg line="-Dnashorn.typeInfo.disabled=true"/> |
| <classpath> |
| <pathelement path="${run.test.classpath}"/> |
| </classpath> |
| <syspropertyset> |
| <propertyref prefix="test262-test-sys-prop."/> |
| <mapper type="glob" from="test262-test-sys-prop.*" to="*"/> |
| </syspropertyset> |
| </java> |
| </target> |
| |
| <target name="testparallel" depends="test-parallel"/> |
| |
| <target name="test-parallel" depends="jar, get-testng, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available"> |
| <!-- use just build.test.classes.dir to avoid referring to TestNG --> |
| <java classname="${parallel.test.runner}" dir="${basedir}" |
| failonerror="true" |
| fork="true"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs}"/> |
| <classpath> |
| <pathelement path="${run.test.classpath}"/> |
| <pathelement path="${build.test.classes.dir}"/> |
| </classpath> |
| <syspropertyset> |
| <propertyref prefix="test-sys-prop."/> |
| <mapper type="glob" from="test-sys-prop.*" to="*"/> |
| </syspropertyset> |
| </java> |
| </target> |
| |
| <target name="all" depends="test, docs" |
| description="Build, test and generate docs for nashorn"/> |
| |
| <target name="run" depends="jar" |
| description="Run the shell with a sample script"> |
| <java classname="${nashorn.shell.tool}" fork="true" dir="samples"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx}"/> |
| <arg value="-dump-on-error"/> |
| <arg value="test.js"/> |
| </java> |
| </target> |
| |
| <target name="debug" depends="jar" |
| description="Debug the shell with a sample script"> |
| <java classname="${nashorn.shell.tool}" fork="true" dir="samples"> |
| <jvmarg line="${ext.class.path}"/> |
| <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx}"/> |
| <arg value="--print-code"/> |
| <arg value="--verify-code"/> |
| <arg value="--print-symbols"/> |
| <jvmarg value="-Dnashorn.codegen.debug=true"/> |
| <arg value="test.js"/> |
| </java> |
| </target> |
| |
| <!-- targets to get external script tests --> |
| |
| <!-- test262 test suite --> |
| <target name="get-test262" depends="init" unless="${test-sys-prop.external.test262}"> |
| <!-- clone test262 git repo --> |
| <exec executable="${git.executable}"> |
| <arg value="clone"/> |
| <arg value="--branch"/> |
| <arg value="es5-tests"/> |
| <arg value="https://github.com/tc39/test262"/> |
| <arg value="${test.external.dir}/test262"/> |
| </exec> |
| </target> |
| <target name="update-test262" depends="init" if="${test-sys-prop.external.test262}"> |
| <!-- update test262 git repo --> |
| <exec executable="${git.executable}" dir="${test.external.dir}/test262"> |
| <arg value="pull"/> |
| </exec> |
| </target> |
| |
| <!-- octane benchmark --> |
| <target name="get-octane" depends="init" unless="${test-sys-prop.external.octane}"> |
| <!-- checkout octane benchmarks --> |
| <exec executable="${svn.executable}"> |
| <arg value="--non-interactive"/> |
| <arg value="--trust-server-cert"/> |
| <arg value="checkout"/> |
| <arg value="http://octane-benchmark.googlecode.com/svn/trunk/"/> |
| <arg value="${test.external.dir}/octane"/> |
| </exec> |
| </target> |
| <target name="update-octane" depends="init" if="${test-sys-prop.external.octane}"> |
| <!-- update octane benchmarks --> |
| <exec executable="${svn.executable}" dir="${test.external.dir}/octane"> |
| <arg value="--non-interactive"/> |
| <arg value="--trust-server-cert"/> |
| <arg value="update"/> |
| </exec> |
| </target> |
| |
| <!-- sunspider benchmark --> |
| <target name="get-sunspider" depends="init" unless="${test-sys-prop.external.sunspider}"> |
| <!-- checkout sunspider --> |
| <exec executable="${svn.executable}"> |
| <arg value="--non-interactive"/> |
| <arg value="--trust-server-cert"/> |
| <arg value="checkout"/> |
| <arg value="http://svn.webkit.org/repository/webkit/trunk/PerformanceTests/SunSpider"/> |
| <arg value="${test.external.dir}/sunspider"/> |
| </exec> |
| </target> |
| <target name="update-sunspider" depends="init" if="${test-sys-prop.external.sunspider}"> |
| <!-- update sunspider --> |
| <exec executable="${svn.executable}" dir="${test.external.dir}/sunspider"> |
| <arg value="--non-interactive"/> |
| <arg value="--trust-server-cert"/> |
| <arg value="update"/> |
| </exec> |
| </target> |
| |
| <!-- get all external test scripts --> |
| <target name="externals" depends="init, check-external-tests, get-test262, get-octane, get-sunspider, get-testng"> |
| <!-- make external test dir --> |
| <mkdir dir="${test.external.dir}"/> |
| |
| <!-- jquery --> |
| <mkdir dir="${test.external.dir}/jquery"/> |
| <get src="http://code.jquery.com/jquery-1.7.2.js" dest="${test.external.dir}/jquery" skipexisting="true" ignoreerrors="true"/> |
| <get src="http://code.jquery.com/jquery-1.7.2.min.js" dest="${test.external.dir}/jquery" skipexisting="true" ignoreerrors="true"/> |
| |
| <!-- prototype --> |
| <mkdir dir="${test.external.dir}/prototype"/> |
| <get src="http://ajax.googleapis.com/ajax/libs/prototype/1.7.0/prototype.js" dest="${test.external.dir}/prototype" usetimestamp="true" skipexisting="true" ignoreerrors="true"/> |
| |
| <!-- underscorejs --> |
| <mkdir dir="${test.external.dir}/underscore"/> |
| <get src="http://underscorejs.org/underscore.js" dest="${test.external.dir}/underscore" skipexisting="true" ignoreerrors="true"/> |
| <get src="http://underscorejs.org/underscore-min.js" dest="${test.external.dir}/underscore" skipexisting="true" ignoreerrors="true"/> |
| |
| <!-- yui --> |
| <mkdir dir="${test.external.dir}/yui"/> |
| <get src="http://yui.yahooapis.com/3.5.1/build/yui/yui.js" dest="${test.external.dir}/yui" skipexisting="true" ignoreerrors="true"/> |
| <get src="http://yui.yahooapis.com/3.5.1/build/yui/yui-min.js" dest="${test.external.dir}/yui" skipexisting="true" ignoreerrors="true"/> |
| |
| <!-- showdown --> |
| <mkdir dir="${test.external.dir}/showdown"/> |
| <get src="https://raw.githubusercontent.com/showdownjs/showdown/0.5.4/src/showdown.js" dest="${test.external.dir}/showdown" skipexisting="true" ignoreerrors="true"/> |
| <get src="https://raw.githubusercontent.com/showdownjs/showdown/0.5.4/src/extensions/table.js" dest="${test.external.dir}/showdown" skipexisting="true" ignoreerrors="true"/> |
| |
| </target> |
| |
| <!-- update external test suites that are pulled from source control systems --> |
| <target name="update-externals" depends="init, check-external-tests, update-test262, update-octane, update-sunspider"/> |
| |
| <!-- run all perf tests --> |
| <target name="perf" depends="externals, update-externals, sunspider, octane"/> |
| |
| <!-- download and install testng.jar --> |
| <target name="get-testng"> |
| <get dest="${test.lib}" skipexisting="true"> |
| <url url="http://central.maven.org/maven2/org/testng/testng/6.8/testng-6.8.jar"/> |
| <url url="http://central.maven.org/maven2/com/beust/jcommander/1.27/jcommander-1.27.jar"/> |
| <url url="http://central.maven.org/maven2/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/> |
| <url url="http://central.maven.org/maven2/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar"/> |
| </get> |
| </target> |
| |
| <!-- run all tests --> |
| <target name="alltests" depends="get-testng, externals, update-externals, test, test262parallel, testmarkdown, perf"/> |
| |
| <import file="build-benchmark.xml"/> |
| |
| </project> |