mediawiki/extensions/BlueSpiceUEModuleDOCX: main (log #958626)

sourcepatches

This run took 29 seconds.

$ date
--- stdout ---
Sat Mar 18 19:18:39 UTC 2023

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-BlueSpiceUEModuleDOCX.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 ---
831f904dcdcaefb095bad1553977cafb11566187 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 285,
      "optional": 0,
      "peer": 0,
      "peerOptional": 0,
      "total": 285
    }
  }
}

--- 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: 20 installs, 0 updates, 0 removals
  - Locking composer/installers (v2.2.0)
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.7)
  - Locking mediawiki/mediawiki-codesniffer (v40.0.1)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.2)
  - Locking psr/container (1.1.2)
  - Locking squizlabs/php_codesniffer (3.7.1)
  - Locking symfony/console (v5.4.21)
  - Locking symfony/deprecation-contracts (v2.5.2)
  - Locking symfony/polyfill-ctype (v1.27.0)
  - Locking symfony/polyfill-intl-grapheme (v1.27.0)
  - Locking symfony/polyfill-intl-normalizer (v1.27.0)
  - Locking symfony/polyfill-mbstring (v1.27.0)
  - Locking symfony/polyfill-php73 (v1.27.0)
  - Locking symfony/polyfill-php80 (v1.27.0)
  - Locking symfony/service-contracts (v2.5.2)
  - Locking symfony/string (v5.4.21)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 20 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Installing composer/installers (v2.2.0): Extracting archive
  - Installing symfony/polyfill-php80 (v1.27.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.7.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.7): Extracting archive
  - Installing composer/semver (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v40.0.1): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
  - Installing symfony/string (v5.4.21): Extracting archive
  - Installing symfony/deprecation-contracts (v2.5.2): Extracting archive
  - Installing psr/container (1.1.2): Extracting archive
  - Installing symfony/service-contracts (v2.5.2): Extracting archive
  - Installing symfony/polyfill-php73 (v1.27.0): Extracting archive
  - Installing symfony/console (v5.4.21): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.2): Extracting archive
  0/10 [>---------------------------]   0%
 10/10 [============================] 100%5 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
13 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
Upgrading n:eslint-config-wikimedia from 0.22.1 -> 0.24.0
Upgrading n:grunt from 1.5.3 -> 1.6.1
$ /usr/bin/npm install
--- stdout ---

added 287 packages, and audited 288 packages in 6s

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

found 0 vulnerabilities

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

--- end ---
$ /usr/bin/npm install grunt-eslint@24.0.0 --save-exact
--- stdout ---

up to date, audited 288 packages in 739ms

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

found 0 vulnerabilities

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

--- end ---
$ ./node_modules/.bin/eslint i18n/lb.json i18n/ti.json i18n/pt-br.json i18n/skr-arab.json Gruntfile.js package-lock.json i18n/de.json i18n/cy.json i18n/lt.json i18n/pt.json i18n/zh-hant.json extension.json i18n/zh-hans.json i18n/sv.json i18n/es.json i18n/nl.json i18n/ar.json i18n/en.json i18n/scn.json i18n/sl.json i18n/xmf.json i18n/it.json i18n/tr.json i18n/he.json i18n/pl.json i18n/qqq.json i18n/ia.json i18n/fr.json composer.json i18n/nb.json i18n/mk.json i18n/roa-tara.json i18n/uk.json i18n/da.json i18n/ko.json package.json --fix
--- stdout ---

/src/repo/Gruntfile.js
   9:3   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  10:11  warning  Object.assign() is not supported in IE 11                compat/compat
  10:11  error    ES2015 'Object.assign' method is forbidden               es-x/no-object-assign

✖ 3 problems (2 errors, 1 warning)


--- end ---
$ ./node_modules/.bin/eslint i18n/lb.json i18n/ti.json i18n/pt-br.json i18n/skr-arab.json Gruntfile.js package-lock.json i18n/de.json i18n/cy.json i18n/lt.json i18n/pt.json i18n/zh-hant.json extension.json i18n/zh-hans.json i18n/sv.json i18n/es.json i18n/nl.json i18n/ar.json i18n/en.json i18n/scn.json i18n/sl.json i18n/xmf.json i18n/it.json i18n/tr.json i18n/he.json i18n/pl.json i18n/qqq.json i18n/ia.json i18n/fr.json composer.json i18n/nb.json i18n/mk.json i18n/roa-tara.json i18n/uk.json i18n/da.json i18n/ko.json package.json -f json
--- stdout ---
[{"filePath":"/src/repo/Gruntfile.js","messages":[{"ruleId":"es/no-object-assign","message":"Definition for rule 'es/no-object-assign' was not found.","line":9,"column":3,"endLine":9,"endColumn":50,"severity":2,"nodeType":null},{"ruleId":"compat/compat","severity":1,"message":"Object.assign() is not supported in IE 11","line":10,"column":11,"nodeType":"MemberExpression","endLine":10,"endColumn":24},{"ruleId":"es-x/no-object-assign","severity":2,"message":"ES2015 'Object.assign' method is forbidden.","line":10,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":10,"endColumn":24}],"suppressedMessages":[],"errorCount":2,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* eslint-env node, es6 */\nmodule.exports = function ( grunt ) {\n\tvar conf = grunt.file.readJSON( 'extension.json' );\n\n\tgrunt.loadNpmTasks( 'grunt-eslint' );\n\tgrunt.loadNpmTasks( 'grunt-banana-checker' );\n\n\tgrunt.initConfig( {\n\t\t// eslint-disable-next-line es/no-object-assign\n\t\tbanana: Object.assign(\n\t\t\tconf.MessagesDirs,\n\t\t\t{\n\t\t\t\toptions: {\n\t\t\t\t\trequireLowerCase: 'initial'\n\t\t\t\t}\n\t\t\t}\n\t\t),\n\t\teslint: {\n\t\t\toptions: {\n\t\t\t\tcache: true\n\t\t\t},\n\t\t\tall: [\n\t\t\t\t'**/*.{js,json}',\n\t\t\t\t'!node_modules/**',\n\t\t\t\t'!vendor/**'\n\t\t\t]\n\t\t}\n\t} );\n\n\tgrunt.registerTask( 'test', [ 'eslint', 'banana' ] );\n\tgrunt.registerTask( 'default', 'test' );\n};\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/da.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/it.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/roa-tara.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/scn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ti.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/xmf.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]}]

--- end ---
$ /usr/bin/npm ci --legacy-peer-deps
--- stdout ---

added 287 packages, and audited 288 packages in 3s

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

found 0 vulnerabilities

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

> test
> grunt test

Running "eslint:all" (eslint) task

/src/repo/Gruntfile.js
   1:1   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
   9:3   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  10:11  warning  Object.assign() is not supported in IE 11                compat/compat
  10:11  warning  ES2015 'Object.assign' method is forbidden               es-x/no-object-assign

/src/repo/composer.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/extension.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ar.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/cy.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/da.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/de.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/en.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/es.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/fr.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/he.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ia.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/it.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ko.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/lb.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/lt.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/mk.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/nb.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/nl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pt-br.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pt.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/qqq.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/roa-tara.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/scn.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/skr-arab.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sv.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ti.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/tr.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/uk.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/xmf.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/zh-hans.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/zh-hant.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/package-lock.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/package.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

✖ 39 problems (37 errors, 2 warnings)

Warning: Task "eslint:all" failed. Use --force to continue.

Aborted due to warnings.

--- end ---
Traceback (most recent call last):
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1400, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1338, in run
    self.npm_upgrade(plan)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1049, in npm_upgrade
    self.npm_test()
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 287, in npm_test
    self.check_call(['npm', 'test'])
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/shell2.py", line 54, in check_call
    res.check_returncode()
  File "/usr/lib/python3.9/subprocess.py", line 460, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 3.
Source code is licensed under the AGPL.