26 package jdk.nashorn.internal.parser; 27 28 import java.io.File; 29 import jdk.nashorn.internal.codegen.Compiler; 30 import jdk.nashorn.internal.codegen.CompilerConstants; 31 import jdk.nashorn.internal.runtime.Context; 32 import jdk.nashorn.internal.runtime.ErrorManager; 33 import jdk.nashorn.internal.runtime.ScriptObject; 34 import jdk.nashorn.internal.runtime.Source; 35 import jdk.nashorn.internal.runtime.options.Options; 36 import org.testng.Assert; 37 import org.testng.annotations.Test; 38 39 /** 40 * Run tests to check Nashorn's parser. 41 */ 42 public class ParserTest { 43 private static final boolean VERBOSE = Boolean.valueOf(System.getProperty("parsertest.verbose")); 44 private static final boolean TEST262 = Boolean.valueOf(System.getProperty("parsertest.test262")); 45 46 private static final String ES5CONFORM_DIR = System.getProperty("es5conform.testcases.dir"); 47 private static final String TEST_BASIC_DIR = System.getProperty("test.basic.dir"); 48 private static final String TEST262_SUITE_DIR = System.getProperty("test262.suite.dir"); 49 50 51 interface TestFilter { 52 public boolean exclude(File file, String content); 53 } 54 55 private void log(String msg) { 56 org.testng.Reporter.log(msg, true); 57 } 58 59 private Context context; 60 private ScriptObject global; 61 62 public ParserTest() { 63 final Options options = new Options("nashorn"); 64 options.set("anon.functions", true); 65 options.set("parse.only", true); 66 options.set("scripting", true); 67 68 ErrorManager errors = new ErrorManager(); 69 this.context = new Context(options, errors); 70 this.global = context.createGlobal(); 71 } 72 73 @Test 74 public void parseAllTests() { 75 if (TEST262) { 76 parseTestSet(TEST262_SUITE_DIR, new TestFilter() { 77 @Override 78 public boolean exclude(final File file, final String content) { 79 return content.indexOf("@negative") != -1; 80 } 81 }); 82 } 83 parseTestSet(ES5CONFORM_DIR, null); 84 parseTestSet(TEST_BASIC_DIR, null); 85 } 86 87 private void parseTestSet(final String testSet, final TestFilter filter) { 88 passed = 0; 89 failed = 0; 90 skipped = 0; 91 92 final File testSetDir = new File(testSet); 93 if (! testSetDir.isDirectory()) { 94 log("WARNING: " + testSetDir + " not found or not a directory"); 95 return; 96 } 97 log(testSetDir.getAbsolutePath()); 98 parseJSDirectory(testSetDir, filter); 99 100 log(testSet + " parse done!"); 101 log("parse ok: " + passed); 102 log("parse failed: " + failed); 103 log("parse skipped: " + skipped); | 26 package jdk.nashorn.internal.parser; 27 28 import java.io.File; 29 import jdk.nashorn.internal.codegen.Compiler; 30 import jdk.nashorn.internal.codegen.CompilerConstants; 31 import jdk.nashorn.internal.runtime.Context; 32 import jdk.nashorn.internal.runtime.ErrorManager; 33 import jdk.nashorn.internal.runtime.ScriptObject; 34 import jdk.nashorn.internal.runtime.Source; 35 import jdk.nashorn.internal.runtime.options.Options; 36 import org.testng.Assert; 37 import org.testng.annotations.Test; 38 39 /** 40 * Run tests to check Nashorn's parser. 41 */ 42 public class ParserTest { 43 private static final boolean VERBOSE = Boolean.valueOf(System.getProperty("parsertest.verbose")); 44 private static final boolean TEST262 = Boolean.valueOf(System.getProperty("parsertest.test262")); 45 46 private static final String TEST_BASIC_DIR = System.getProperty("test.basic.dir"); 47 private static final String TEST262_SUITE_DIR = System.getProperty("test262.suite.dir"); 48 49 50 interface TestFilter { 51 public boolean exclude(File file, String content); 52 } 53 54 private void log(String msg) { 55 org.testng.Reporter.log(msg, true); 56 } 57 58 private Context context; 59 private ScriptObject global; 60 61 public ParserTest() { 62 final Options options = new Options("nashorn"); 63 options.set("anon.functions", true); 64 options.set("parse.only", true); 65 options.set("scripting", true); 66 67 ErrorManager errors = new ErrorManager(); 68 this.context = new Context(options, errors); 69 this.global = context.createGlobal(); 70 } 71 72 @Test 73 public void parseAllTests() { 74 if (TEST262) { 75 parseTestSet(TEST262_SUITE_DIR, new TestFilter() { 76 @Override 77 public boolean exclude(final File file, final String content) { 78 return content.indexOf("@negative") != -1; 79 } 80 }); 81 } 82 parseTestSet(TEST_BASIC_DIR, null); 83 } 84 85 private void parseTestSet(final String testSet, final TestFilter filter) { 86 passed = 0; 87 failed = 0; 88 skipped = 0; 89 90 final File testSetDir = new File(testSet); 91 if (! testSetDir.isDirectory()) { 92 log("WARNING: " + testSetDir + " not found or not a directory"); 93 return; 94 } 95 log(testSetDir.getAbsolutePath()); 96 parseJSDirectory(testSetDir, filter); 97 98 log(testSet + " parse done!"); 99 log("parse ok: " + passed); 100 log("parse failed: " + failed); 101 log("parse skipped: " + skipped); |