wikipeg: main (log #573598)

sourcepatches

This run took 20 seconds.

$ date
--- stdout ---
Wed Apr 27 14:11:41 UTC 2022

--- end ---
$ git clone file:///srv/git/wikipeg.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
402607539c8888ddb1994700ae1bd2c5c720c88a refs/heads/master

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "jasmine-node": {
      "name": "jasmine-node",
      "severity": "high",
      "via": [
        "underscore"
      ],
      "effects": [],
      "range": ">=1.16.1",
      "nodes": [
        "node_modules/jasmine-node"
      ],
      "fixAvailable": {
        "name": "jasmine-node",
        "version": "1.16.0",
        "isSemVerMajor": true
      }
    },
    "underscore": {
      "name": "underscore",
      "severity": "high",
      "via": [
        {
          "source": 1068134,
          "name": "underscore",
          "dependency": "underscore",
          "title": "Arbitrary Code Execution in underscore",
          "url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq",
          "severity": "high",
          "range": ">=1.3.2 <1.12.1"
        }
      ],
      "effects": [
        "jasmine-node"
      ],
      "range": "1.3.2 - 1.12.0",
      "nodes": [
        "node_modules/underscore"
      ],
      "fixAvailable": {
        "name": "jasmine-node",
        "version": "1.16.0",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 2,
      "critical": 0,
      "total": 2
    },
    "dependencies": {
      "prod": 1,
      "dev": 95,
      "optional": 0,
      "peer": 0,
      "peerOptional": 0,
      "total": 95
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 65 installs, 0 updates, 0 removals
  - Locking composer/pcre (1.0.1)
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.6)
  - Locking composer/xdebug-handler (2.0.5)
  - Locking doctrine/instantiator (1.4.1)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v38.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.11.1)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking mediawiki/phan-taint-check-plugin (3.3.2)
  - Locking microsoft/tolerant-php-parser (v0.1.1)
  - Locking myclabs/deep-copy (1.11.0)
  - Locking netresearch/jsonmapper (v4.0.0)
  - Locking nikic/php-parser (v4.13.2)
  - Locking ockcyp/covers-validator (v1.4.0)
  - Locking phan/phan (5.2.0)
  - Locking phar-io/manifest (2.0.3)
  - Locking phar-io/version (3.2.1)
  - Locking php-parallel-lint/php-console-color (v0.3)
  - Locking php-parallel-lint/php-console-highlighter (v0.5)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.1)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.3.0)
  - Locking phpdocumentor/type-resolver (1.6.1)
  - Locking phpspec/prophecy (v1.15.0)
  - Locking phpunit/php-code-coverage (9.2.15)
  - Locking phpunit/php-file-iterator (3.0.6)
  - Locking phpunit/php-invoker (3.1.1)
  - Locking phpunit/php-text-template (2.0.4)
  - Locking phpunit/php-timer (5.0.3)
  - Locking phpunit/phpunit (9.5.20)
  - Locking psr/container (1.1.2)
  - Locking psr/log (1.1.4)
  - Locking sabre/event (5.1.4)
  - Locking sebastian/cli-parser (1.0.1)
  - Locking sebastian/code-unit (1.0.8)
  - Locking sebastian/code-unit-reverse-lookup (2.0.3)
  - Locking sebastian/comparator (4.0.6)
  - Locking sebastian/complexity (2.0.2)
  - Locking sebastian/diff (4.0.4)
  - Locking sebastian/environment (5.1.4)
  - Locking sebastian/exporter (4.0.4)
  - Locking sebastian/global-state (5.0.5)
  - Locking sebastian/lines-of-code (1.0.3)
  - Locking sebastian/object-enumerator (4.0.4)
  - Locking sebastian/object-reflector (2.0.4)
  - Locking sebastian/recursion-context (4.0.4)
  - Locking sebastian/resource-operations (3.0.3)
  - Locking sebastian/type (3.0.0)
  - Locking sebastian/version (3.0.2)
  - Locking squizlabs/php_codesniffer (3.6.1)
  - Locking symfony/console (v5.4.7)
  - Locking symfony/deprecation-contracts (v2.5.1)
  - Locking symfony/polyfill-ctype (v1.25.0)
  - Locking symfony/polyfill-intl-grapheme (v1.25.0)
  - Locking symfony/polyfill-intl-normalizer (v1.25.0)
  - Locking symfony/polyfill-mbstring (v1.25.0)
  - Locking symfony/polyfill-php73 (v1.25.0)
  - Locking symfony/polyfill-php80 (v1.25.0)
  - Locking symfony/service-contracts (v2.5.1)
  - Locking symfony/string (v5.4.3)
  - Locking theseer/tokenizer (1.2.1)
  - Locking tysonandre/var_representation_polyfill (0.1.1)
  - Locking webmozart/assert (1.10.0)
  - Locking wikimedia/update-history (1.0.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 65 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Installing composer/pcre (1.0.1): Extracting archive
  - Installing squizlabs/php_codesniffer (3.6.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.25.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.6): Extracting archive
  - Installing composer/semver (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v38.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.1): Extracting archive
  - Installing symfony/polyfill-php80 (v1.25.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.25.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.25.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.25.0): Extracting archive
  - Installing symfony/string (v5.4.3): Extracting archive
  - Installing symfony/deprecation-contracts (v2.5.1): Extracting archive
  - Installing psr/container (1.1.2): Extracting archive
  - Installing symfony/service-contracts (v2.5.1): Extracting archive
  - Installing symfony/polyfill-php73 (v1.25.0): Extracting archive
  - Installing symfony/console (v5.4.7): Extracting archive
  - Installing sabre/event (5.1.4): Extracting archive
  - Installing netresearch/jsonmapper (v4.0.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.1): Extracting archive
  - Installing webmozart/assert (1.10.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.6.1): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing composer/xdebug-handler (2.0.5): Extracting archive
  - Installing phan/phan (5.2.0): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.11.1): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing sebastian/version (3.0.2): Extracting archive
  - Installing sebastian/type (3.0.0): Extracting archive
  - Installing sebastian/resource-operations (3.0.3): Extracting archive
  - Installing sebastian/recursion-context (4.0.4): Extracting archive
  - Installing sebastian/object-reflector (2.0.4): Extracting archive
  - Installing sebastian/object-enumerator (4.0.4): Extracting archive
  - Installing sebastian/global-state (5.0.5): Extracting archive
  - Installing sebastian/exporter (4.0.4): Extracting archive
  - Installing sebastian/environment (5.1.4): Extracting archive
  - Installing sebastian/diff (4.0.4): Extracting archive
  - Installing sebastian/comparator (4.0.6): Extracting archive
  - Installing sebastian/code-unit (1.0.8): Extracting archive
  - Installing sebastian/cli-parser (1.0.1): Extracting archive
  - Installing phpunit/php-timer (5.0.3): Extracting archive
  - Installing phpunit/php-text-template (2.0.4): Extracting archive
  - Installing phpunit/php-invoker (3.1.1): Extracting archive
  - Installing phpunit/php-file-iterator (3.0.6): Extracting archive
  - Installing theseer/tokenizer (1.2.1): Extracting archive
  - Installing nikic/php-parser (v4.13.2): Extracting archive
  - Installing sebastian/lines-of-code (1.0.3): Extracting archive
  - Installing sebastian/complexity (2.0.2): Extracting archive
  - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
  - Installing phpunit/php-code-coverage (9.2.15): Extracting archive
  - Installing doctrine/instantiator (1.4.1): Extracting archive
  - Installing phpspec/prophecy (v1.15.0): Extracting archive
  - Installing phar-io/version (3.2.1): Extracting archive
  - Installing phar-io/manifest (2.0.3): Extracting archive
  - Installing myclabs/deep-copy (1.11.0): Extracting archive
  - Installing phpunit/phpunit (9.5.20): Extracting archive
  - Installing ockcyp/covers-validator (v1.4.0): Extracting archive
  - Installing php-parallel-lint/php-console-color (v0.3): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v0.5): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.1): Extracting archive
  - Installing wikimedia/update-history (1.0.1): Extracting archive
  0/56 [>---------------------------]   0%
 10/56 [=====>----------------------]  17%
 19/56 [=========>------------------]  33%
 29/56 [==============>-------------]  51%
 39/56 [===================>--------]  69%
 48/56 [========================>---]  85%
 55/56 [===========================>]  98%
 56/56 [============================] 100%12 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
39 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "jasmine-node": {
      "name": "jasmine-node",
      "severity": "high",
      "via": [
        "underscore"
      ],
      "effects": [],
      "range": ">=1.16.1",
      "nodes": [
        "node_modules/jasmine-node"
      ],
      "fixAvailable": {
        "name": "jasmine-node",
        "version": "1.16.0",
        "isSemVerMajor": true
      }
    },
    "underscore": {
      "name": "underscore",
      "severity": "high",
      "via": [
        {
          "source": 1068134,
          "name": "underscore",
          "dependency": "underscore",
          "title": "Arbitrary Code Execution in underscore",
          "url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq",
          "severity": "high",
          "range": ">=1.3.2 <1.12.1"
        }
      ],
      "effects": [
        "jasmine-node"
      ],
      "range": "1.3.2 - 1.12.0",
      "nodes": [
        "node_modules/underscore"
      ],
      "fixAvailable": {
        "name": "jasmine-node",
        "version": "1.16.0",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 2,
      "critical": 0,
      "total": 2
    },
    "dependencies": {
      "prod": 1,
      "dev": 95,
      "optional": 0,
      "peer": 0,
      "peerOptional": 0,
      "total": 95
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json --legacy-peer-deps
--- stdout ---
{
  "added": 95,
  "removed": 0,
  "changed": 0,
  "audited": 96,
  "funding": 10,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "jasmine-node": {
        "name": "jasmine-node",
        "severity": "high",
        "via": [
          "underscore"
        ],
        "effects": [],
        "range": ">=1.16.1",
        "nodes": [
          "node_modules/jasmine-node"
        ],
        "fixAvailable": {
          "name": "jasmine-node",
          "version": "1.16.0",
          "isSemVerMajor": true
        }
      },
      "underscore": {
        "name": "underscore",
        "severity": "high",
        "via": [
          {
            "source": 1068134,
            "name": "underscore",
            "dependency": "underscore",
            "title": "Arbitrary Code Execution in underscore",
            "url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq",
            "severity": "high",
            "range": ">=1.3.2 <1.12.1"
          }
        ],
        "effects": [
          "jasmine-node"
        ],
        "range": "1.3.2 - 1.12.0",
        "nodes": [
          "node_modules/underscore"
        ],
        "fixAvailable": {
          "name": "jasmine-node",
          "version": "1.16.0",
          "isSemVerMajor": true
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 0,
        "moderate": 0,
        "high": 2,
        "critical": 0,
        "total": 2
      },
      "dependencies": {
        "prod": 1,
        "dev": 95,
        "optional": 0,
        "peer": 0,
        "peerOptional": 0,
        "total": 95
      }
    }
  }
}

--- end ---
{"added": 95, "removed": 0, "changed": 0, "audited": 96, "funding": 10, "audit": {"auditReportVersion": 2, "vulnerabilities": {"jasmine-node": {"name": "jasmine-node", "severity": "high", "via": ["underscore"], "effects": [], "range": ">=1.16.1", "nodes": ["node_modules/jasmine-node"], "fixAvailable": {"name": "jasmine-node", "version": "1.16.0", "isSemVerMajor": true}}, "underscore": {"name": "underscore", "severity": "high", "via": [{"source": 1068134, "name": "underscore", "dependency": "underscore", "title": "Arbitrary Code Execution in underscore", "url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq", "severity": "high", "range": ">=1.3.2 <1.12.1"}], "effects": ["jasmine-node"], "range": "1.3.2 - 1.12.0", "nodes": ["node_modules/underscore"], "fixAvailable": {"name": "jasmine-node", "version": "1.16.0", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 0, "moderate": 0, "high": 2, "critical": 0, "total": 2}, "dependencies": {"prod": 1, "dev": 95, "optional": 0, "peer": 0, "peerOptional": 0, "total": 95}}}}
$ /usr/bin/npm audit fix --only=dev --legacy-peer-deps
--- stdout ---

added 95 packages, and audited 96 packages in 2s

10 packages are looking for funding
  run `npm fund` for details

# npm audit report

underscore  1.3.2 - 1.12.0
Severity: high
Arbitrary Code Execution in underscore - https://github.com/advisories/GHSA-cf4h-3jhx-xvhq
fix available via `npm audit fix --force`
Will install jasmine-node@1.16.0, which is a breaking change
node_modules/underscore
  jasmine-node  >=1.16.1
  Depends on vulnerable versions of underscore
  node_modules/jasmine-node

2 high severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stdout ---

added 95 packages, and audited 96 packages in 2s

10 packages are looking for funding
  run `npm fund` for details

2 high severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stdout ---

> wikipeg@2.0.6-git test
> make eslint && make test


generated parser API - 17 ms

    parse - 17 ms
        parses input - 5 ms
        throws an exception on syntax error - 3 ms

        start rule - 1 ms

            when |startRule| is not set - 1 ms
                starts parsing from the first allowed rule - 1 ms

            when |startRule| is set to an allowed rule - 0 ms
                starts parsing from specified rule - 0 ms

            when |startRule| is set to a disallowed start rule - 0 ms
                throws an exception - 0 ms

        tracing - 6 ms

            default tracer - 3 ms
                traces using console.log - 3 ms

            custom tracers - 3 ms

                trace - 3 ms
                    receives tracing events - 3 ms
        accepts custom options - 2 ms

PEG.js API - 47 ms

    buildParser - 47 ms
        builds a parser - 1 ms
        throws an exception on syntax error - 1 ms
        throws an exception on semantic error - 0 ms

        allowed start rules - 14 ms

            when optimizing for parsing speed - 6 ms

                when |allowedStartRules| is not set - 3 ms
                    generated parser can start only from the first rule - 3 ms

                when |allowedStartRules| is set - 3 ms
                    generated parser can start only from specified rules - 3 ms

            when optimizing for code size - 8 ms

                when |allowedStartRules| is not set - 3 ms
                    generated parser can start only from the first rule - 3 ms

                when |allowedStartRules| is set - 5 ms
                    generated parser can start only from specified rules - 5 ms

        intermediate results caching - 12 ms

            when |cache| is not set - 4 ms
                generated parser doesn't cache intermediate parse results - 4 ms

            when |cache| is set to |false| - 4 ms
                generated parser doesn't cache intermediate parse results - 4 ms

            when |cache| is set to |true| - 4 ms
                generated parser caches intermediate parse results - 4 ms

        tracing - 7 ms

            when |trace| is not set - 2 ms
                generated parser doesn't trace - 2 ms

            when |trace| is set to |false| - 2 ms
                generated parser doesn't trace - 2 ms

            when |trace| is set to |true| - 3 ms
                generated parser traces - 3 ms

        output - 11 ms

            when |output| is not set - 2 ms
                returns generated parser object - 2 ms

            when |output| is set to |"parser"| - 2 ms
                returns generated parser object - 2 ms

            when |output| is set to |"source"| - 3 ms
                returns generated parser source code - 3 ms

            when |headerComment| is set to |/*
 * some comment
 */| - 2 ms
                returns generated parser source code with that comment - 2 ms

            when |headerComment| is set to |/*
 * some comment
 */| and |language| is set to |php| - 2 ms
                returns generated php parser source code with that comment - 2 ms
        accepts custom options - 1 ms

plugin API - 16 ms

    use - 16 ms
        is called for each plugin - 3 ms
        receives configuration - 2 ms
        receives options - 3 ms
        can replace parser - 5 ms
        can change compiler passes - 1 ms
        can change options - 2 ms

generated parser behavior - 267 ms

    with options { cache : false } - 130 ms

        initializer - 7 ms
            executes the code before parsing starts - 2 ms

            available variables and functions - 5 ms
                |parser| contains the parser object - 3 ms
                |options| contains options - 2 ms

        rule - 15 ms
            doesn't cache rule match results - 4 ms

            when the expression matches - 2 ms
                returns its match result - 2 ms

            when the expression doesn't match - 9 ms

                without display name - 2 ms
                    reports match failure and doesn't record any expectation - 2 ms

                with display name - 7 ms
                    reports match failure and records an expectation of type "other" - 4 ms
                    discards any expectations recorded when matching the expression - 3 ms

        positive semantic predicate - 20 ms

            initializer variables & functions - 5 ms
                can access variables defined in the initializer - 2 ms
                can access functions defined in the initializer - 3 ms

            available variables & functions - 15 ms
                |parser| contains the parser object - 3 ms
                |options| contains options - 4 ms
                |location| returns current location info - 8 ms

        negative semantic predicate - 15 ms

            initializer variables & functions - 5 ms
                can access variables defined in the initializer - 2 ms
                can access functions defined in the initializer - 3 ms

            available variables & functions - 10 ms
                |parser| contains the parser object - 2 ms
                |options| contains options - 2 ms
                |location| returns current location info - 6 ms

        action - 26 ms

            initializer variables & functions - 5 ms
                can access variables defined in the initializer - 2 ms
                can access functions defined in the initializer - 3 ms

            available variables & functions - 21 ms
                |parser| contains the parser object - 2 ms
                |options| contains options - 3 ms
                |text| returns text matched by the expression - 2 ms
                |location| returns location info of the expression - 8 ms
                |expected| terminates parsing and throws an exception - 3 ms
                |error| terminates parsing and throws an exception - 3 ms

        error reporting - 24 ms

            found string reporting - 3 ms
                reports found string correctly at the end of input - 2 ms
                reports found string correctly in the middle of input - 1 ms

            message building - 10 ms
                builds message correctly with no alternative - 2 ms
                builds message correctly with one alternative - 2 ms
                builds message correctly with multiple alternatives - 3 ms
                builds message correctly at the end of input - 1 ms
                builds message correctly in the middle of input - 2 ms

            position reporting - 11 ms
                reports position correctly at the end of input - 2 ms
                reports position correctly in the middle of input - 2 ms
                reports position correctly with trailing input - 1 ms
                reports position correctly in complex cases - 5 ms

        complex examples - 23 ms
            handles arithmetics example correctly - 10 ms
            handles non-context-free language correctly - 8 ms
            handles nested comments example correctly - 5 ms

    with options { cache : true } - 137 ms

        initializer - 8 ms
            executes the code before parsing starts - 2 ms

            available variables and functions - 6 ms
                |parser| contains the parser object - 3 ms
                |options| contains options - 3 ms

        rule - 12 ms
            caches rule match results - 3 ms

            when the expression matches - 2 ms
                returns its match result - 2 ms

            when the expression doesn't match - 7 ms

                without display name - 1 ms
                    reports match failure and doesn't record any expectation - 1 ms

                with display name - 6 ms
                    reports match failure and records an expectation of type "other" - 4 ms
                    discards any expectations recorded when matching the expression - 2 ms

        positive semantic predicate - 15 ms

            initializer variables & functions - 4 ms
                can access variables defined in the initializer - 2 ms
                can access functions defined in the initializer - 2 ms

            available variables & functions - 11 ms
                |parser| contains the parser object - 3 ms
                |options| contains options - 2 ms
                |location| returns current location info - 6 ms

        negative semantic predicate - 16 ms

            initializer variables & functions - 4 ms
                can access variables defined in the initializer - 2 ms
                can access functions defined in the initializer - 2 ms

            available variables & functions - 12 ms
                |parser| contains the parser object - 4 ms
                |options| contains options - 2 ms
                |location| returns current location info - 6 ms

        action - 31 ms

            initializer variables & functions - 12 ms
                can access variables defined in the initializer - 10 ms
                can access functions defined in the initializer - 2 ms

            available variables & functions - 19 ms
                |parser| contains the parser object - 3 ms
                |options| contains options - 2 ms
                |text| returns text matched by the expression - 3 ms
                |location| returns location info of the expression - 6 ms
                |expected| terminates parsing and throws an exception - 2 ms
                |error| terminates parsing and throws an exception - 3 ms

        error reporting - 31 ms

            found string reporting - 7 ms
                reports found string correctly at the end of input - 3 ms
                reports found string correctly in the middle of input - 4 ms

            message building - 10 ms
                builds message correctly with no alternative - 1 ms
                builds message correctly with one alternative - 2 ms
                builds message correctly with multiple alternatives - 3 ms
                builds message correctly at the end of input - 2 ms
                builds message correctly in the middle of input - 2 ms

            position reporting - 14 ms
                reports position correctly at the end of input - 3 ms
                reports position correctly in the middle of input - 2 ms
                reports position correctly with trailing input - 2 ms
                reports position correctly in complex cases - 7 ms

        complex examples - 24 ms
            handles arithmetics example correctly - 9 ms
            handles non-context-free language correctly - 8 ms
            handles nested comments example correctly - 7 ms

compiler pass |removeProxyRules| - 2 ms

    when a proxy rule isn't listed in |allowedStartRules| - 1 ms
        updates references and removes it - 1 ms

    when a proxy rule is listed in |allowedStartRules| - 1 ms
        updates references but doesn't remove it - 1 ms

compiler pass |reportLeftRecursion| - 26 ms
    reports infinite loops for zero_or_more - 1 ms
    reports infinite loops for one_or_more - 0 ms
    computes empty string matching correctly - 25 ms

compiler pass |reportLeftRecursion| - 13 ms
    reports direct left recursion - 1 ms
    reports indirect left recursion - 0 ms

    in sequences - 12 ms
        reports left recursion if all preceding elements match empty string - 1 ms
        doesn't report left recursion if some preceding element doesn't match empty string - 1 ms
        computes empty string matching correctly - 10 ms

compiler pass |reportMissingRules| - 2 ms
    reports missing rules - 2 ms

PEG.js grammar parser - 72 ms
    parses Grammar - 3 ms
    parses Initializer - 1 ms
    parses Rule - 1 ms
    parses Expression - 2 ms
    parses ChoiceExpression - 2 ms
    parses ActionExpression - 1 ms
    parses SequenceExpression - 3 ms
    parses LabeledExpression - 1 ms
    parses PrefixedExpression - 1 ms
    parses PrefixedOperator - 1 ms
    parses SuffixedExpression - 1 ms
    parses SuffixedOperator - 1 ms
    parses PrimaryExpression - 6 ms
    parses RuleReferenceExpression - 0 ms
    parses SemanticPredicateExpression - 1 ms
    parses SemanticPredicateOperator - 1 ms
    parses WhiteSpace - 1 ms
    parses LineTerminator - 0 ms
    parses LineTerminatorSequence - 2 ms
    parses Comment - 0 ms
    parses MultiLineComment - 1 ms
    parses MultiLineCommentNoLineTerminator - 2 ms
    parses SingleLineComment - 1 ms
    parses Identifier - 0 ms
    parses IdentifierName - 1 ms
    parses IdentifierStart - 1 ms
    parses IdentifierPart - 2 ms
    parses LiteralMatcher - 1 ms
    parses StringLiteral - 11 ms
    parses DoubleStringCharacter - 1 ms
    parses SingleStringCharacter - 1 ms
    parses CharacterClassMatcher - 2 ms
    parses ClassCharacterRange - 1 ms
    parses ClassCharacter - 1 ms
    parses LineContinuation - 0 ms
    parses EscapeSequence - 1 ms
    parses CharacterEscapeSequence - 1 ms
    parses SingleEscapeCharacter - 2 ms
    parses NonEscapeCharacter - 0 ms
    parses HexEscapeSequence - 2 ms
    parses UnicodeEscapeSequence - 0 ms
    parses AnyMatcher - 0 ms
    parses CodeBlock - 0 ms
    parses Code - 1 ms
    parses __ - 1 ms
    parses _ - 2 ms
    parses EOS - 4 ms
    parses EOF - 0 ms

Finished in 0.472 seconds
172 tests, 477 assertions, 0 failures, 0 skipped


Running language-independent tests against PHP
SUCCESS: 608 / 608 assertions were successful
node tests/javascript/runCommonTests.js
Running language-independent tests against JavaScript
SUCCESS: 608 / 608 assertions were successful

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
[DNM] there are no updates
$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmpy22q_wa1
--- stdout ---
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

--- end ---
Source code is licensed under the AGPL.