test/src/jdk/nashorn/internal/parser/ParserTest.java

Print this page




  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);