Home | History | Annotate | Download | only in testrunner
      1 // Copyright 2018 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 
      6 // Wrapper loading javascript tests passed as arguments used by gc fuzzer.
      7 // It ignores all exceptions and run tests in a separate namespaces.
      8 //
      9 // It can't prevent %AbortJS function from aborting execution, so it should be
     10 // used with d8's --disable-abortjs flag to ignore all possible errors inside
     11 // tests.
     12 
     13 // We use -- as an additional separator for test preamble files and test files.
     14 // The preamble files (before --) will be loaded in each realm before each
     15 // test.
     16 var separator = arguments.indexOf("--")
     17 var preamble = arguments.slice(0, separator)
     18 var tests = arguments.slice(separator + 1)
     19 
     20 var preambleString = ""
     21 for (let jstest of preamble) {
     22   preambleString += "load(\"" + jstest + "\");"
     23 }
     24 
     25 for (let jstest of tests) {
     26   print("Loading " + jstest);
     27   let start = performance.now();
     28 
     29   // anonymous function to not populate global namespace.
     30   (function () {
     31     let realm = Realm.create();
     32     try {
     33       Realm.eval(realm, preambleString + "load(\"" + jstest + "\");");
     34     } catch (err) {
     35       // ignore all errors
     36     }
     37     Realm.dispose(realm);
     38   })();
     39 
     40   let durationSec = ((performance.now() - start) / 1000.0).toFixed(2);
     41   print("Duration " + durationSec + "s");
     42 }
     43