Nashorn tests are TestNG based. Running tests requires downloading the TestNG library and placing its jar file into the lib subdirectory: # download and install TestNG wget http://testng.org/testng-x.y.z.zip unzip testng-x.y.z.zip cp testng-x.y.z/testng-x.y.z.jar lib/testng.jar # run tests cd .. ant test This will fail with a message like taskdef class org.testng.TestNGAntTask cannot be found if the TestNG jar file is not installed properly or if the wrong version is present. (Check build.xml to find the version of TestNG that is required.) Only the jar file is necessary. The unzipped hierarchy can be removed. We have tested using TestNG 6.7 as well ad TestNG 6.8. TestNG 6.7's jar file is also available as part of jtreg 4.1 b05 which can be downloaded at http://download.java.net/openjdk/jtreg/ ECMAScript script test framework: * Test tags for test framework: The test runner crawls these directories for .js files and looks for JTReg-style @foo comments to identify tests. * @test - A test is tagged with @test. * @test/fail - Tests that are supposed to fail (compiling, see @run/fail for runtime) are tagged with @test/fail. * @test/compile-error - Test expects compilation to fail, compares output. * @test/warning - Test expects compiler warnings, compares output. * @test/nocompare - Test expects to compile [and/or run?] successfully(may be warnings), does not compare output. * @subtest - denotes necessary file for a main test file; itself is not a test. * @run - A test that should be run is also tagged with @run (otherwise the test runner only compiles the test). * @runif - A test that should be run only if a specific System property is defined (Example: @runif external.v8) * @run/fail - A test that should compile but fail with a runtime error. * @run/param - specify runtime arguments to script. * @run/ignore-std-error - script may produce output on stderr, ignore this output. * @compilearg \ - pass arg to compiler, sample. /** * @compilearg --dump-ir-graph * @test/warning */ * @compilefirst foo.js - foo.js being a necessary file for a test; it may or may not itself be a test. These are compiled separately before main test file. * @compile/fail foo.js - foo.js being a necessary file for a test; it may or may not itself be a test, compile should fail. These are compile with main file. * @compile bar.js - bar.js being a necessary file for a test; it may or may not itself be a test. These are compiled with main file.