Now with Partition Management

    test262-integrator

    1.2.0 • Public • Published

    Test262-Integrator

    Integrates any project the test262-stream API with any ES host execution applying filters from a JS object.

    Install

    npm install --save-dev test262-integrator

    Usage

    const Integrator = require('test262-integrator');
     
    Integrator({
      testDir, // String: the path where Test262 is located.
      execute, // (Async/Sync) Function: this function is called for 
               // every non-skipped test file, the return should be a 
               // result object.
      filters, // (Optional) Object: a list of filters, see 'test/filters.yml' 
               //  for an example.
      paths: ['test/built-ins/Array/from'] // (Optional) Array of Strings: 
                                           // specifies exclusive paths to
                                           // run the test.
      verbose: // (Optional) Boolean: toggles a verbose mode for files 
               // execution (experimental).
    }).then(results => {
      // `results` is an Array of objects. Each object contains all 
      // relevant information for a given test produced by the test stream, with
      // an additional `result` property which contains the results of
      // the execution. If a test was skipped via filtering parameters, the
      // value of result property is { skip: true }.
     
      // Anything returned from the `execute` method will be stored in the 
      // result property.
    }, err => {
      // Any execution error will be available here
    });
     
    // The execute function signature:
    function execute(test) {
      // `test` has the same properties used in test262-stream*
     
      // This function can return a promise for async operations.
    }

    ** test262-stream

    Filters

    The filters object can include any properties known to Test262, as well as a special paths property whose value is an array of string paths relative to test262. All test file paths that match entries in paths will be skipped.

    All tests that are matched by the filter object will have a property results whose value is { skip: true }.

    Test262-Integrator recommends using a YAML file to store filters, as it's the most readable and maintainable format.

    Examples

    (See test/filters.yml for an extensive example)

    YAML Filter File

    features:
      - tail-call-optimization
      - generators
      - default-parameters
    

    JSON Filter File

    {
      "features": [
        "tail-call-optimization",
        "generators",
        "default-parameters"
      ]
    }
    

    JavaScript Object Filter

    const filters = {
      features: [
        'tail-call-optimization',
        'generators',
        'default-parameters'
      ]
    };

    More Extensive Example

    const filters = {
      // Filters by metadata:
      features: [
        'tail-call-optimization',
        'SharedArrayBuffer',
      ],
      esid: ['pending'],
      es5id: ['15.1.2.2_A8', '15.1.2.3_A6'],
      es6id: ['22.1.3.1_3'],
      flags: ['module', 'async'],
     
      // Filters by path location:
      paths: [
        // filters will apply to any match, as long as the path contains the string from any index.
        // In this example, any file path containing `harness` will be skipped.
        'harness',
        'intl402',
        'built-ins/Function/prototype/toString/',
        'built-ins/SharedArrayBuffer/',
        'built-ins/Atomics/',
        'annexB/',
      ],
     
      // Filter negative tests by any matching phases and type
      negative: {
        type: ['SyntaxError'],
        phase: [
          'early',
          'runtime',
        ],
      },
    };

    Keywords

    none

    Install

    npm i test262-integrator

    DownloadsWeekly Downloads

    0

    Version

    1.2.0

    License

    BSD-3-Clause

    Last publish

    Collaborators

    • leobalter