Skip to content
This repository was archived by the owner on Aug 11, 2022. It is now read-only.
This repository was archived by the owner on Aug 11, 2022. It is now read-only.

How to best invoke to smoke-test io.js / Node.js #8648

@rvagg

Description

@rvagg

Currently doing this inside a Docker container (https://github.com/rvagg/iojs-smoke-tests/blob/master/tests/npm.sh):

git clone https://github.com/npm/npm.git --depth 1
cd npm
npm install --cache-min=Infinity
npm test

The container has ~/.npm/ mounted for cache usage and also has nodedir set to the source tree for when node-gyp is needed. I'm just not having much success getting a nice test run so perhaps you can clue me in to a better way to run this? Should I be using a specific branch? Should I only be doing npm install --dev? Am I missing dependencies or do you know of any network configuration I should have inside the Docker container to make it more happy?

> [email protected] test /npm
> tap --timeout 240 test/tap/*.js

test/tap/00-check-mock-dep.js ......................... 1/1 865ms
test/tap/00-config-setup.js ........................... 1/1
test/tap/00-verify-bundle-deps.js ................... 70/70
test/tap/00-verify-ls-ok.js ........................... 4/4 1s
test/tap/404-parent.js ................................ 3/3
test/tap/404-private-registry-scoped.js ............... 3/3
test/tap/404-private-registry.js ...................... 3/3
test/tap/access.js .................................. 21/21
test/tap/add-remote-git-fake-windows.js [email protected] node_modules/child
test/tap/add-remote-git-fake-windows.js ............... 3/3 781ms
test/tap/add-remote-git-file.js ....................... 4/4
test/tap/add-remote-git-get-resolved.js ............. 17/17
test/tap/add-remote-git-shrinkwrap.js [email protected] node_modules/child
test/tap/add-remote-git-shrinkwrap.js ............... 11/11
test/tap/add-remote-git.js [email protected] node_modules/child
test/tap/add-remote-git.js ............................ 3/3
test/tap/adduser-always-auth.js ..................... 13/13
test/tap/adduser-legacy-auth.js ....................... 8/8
test/tap/bin.js ....................................... 4/4
test/tap/bitbucket-https-url-with-creds-package.js .... 5/5
test/tap/bitbucket-https-url-with-creds.js ............ 5/5
test/tap/bitbucket-shortcut-package.js ................ 5/5
test/tap/bitbucket-shortcut.js ........................ 5/5
test/tap/bugs.js .................................... 26/26
test/tap/build-already-built.js ..................... 10/10
test/tap/builtin-config.js ./npm/test/tap/builtin-config/first/bin/npm -> /npm/test/tap/builtin-config/first/lib/node_modules/npm/bin/npm-cli.js
[email protected] /npm/test/tap/builtin-config/first/lib/node_modules/npm
test/tap/builtin-config.js .......................... 10/10 14s
test/tap/bundled-dependencies-nonarray.js ............. 8/8
test/tap/cache-add-localdir-fallback.js ............. 12/12
test/tap/cache-add-unpublished.js ..................... 3/3
test/tap/cache-shasum-fork.js ....................... 12/12
test/tap/cache-shasum.js .............................. 4/4
test/tap/circular-dep.js .............................. 9/9
test/tap/config-basic.js .............................. 7/7
test/tap/config-builtin.js ............................ 7/7
test/tap/config-certfile.js ........................... 2/2
test/tap/config-credentials.js ...................... 40/40
test/tap/config-edit.js ............................... 7/7
test/tap/config-malformed.js .......................... 1/1
test/tap/config-meta.js ........................... 838/838
test/tap/config-new-cafile.js ......................... 7/7
test/tap/config-private.js .......................... 11/11
test/tap/config-project.js ............................ 7/7
test/tap/config-save.js ............................... 3/3
test/tap/dedupe-scoped.js ............................. 6/6
test/tap/dedupe.js .................................... 8/8 12s
test/tap/dist-tag.js ................................ 27/27
test/tap/false-name.js ................................ 5/5
test/tap/gently-rm-overeager.js ....................... 4/6
  cache add
  not ok test-whoops install also failed
    at:
      file: test/tap/gently-rm-overeager.js
      line: 34
      column: 7
    source: |
      t.ok(c, "test-whoops install also failed")
    stack: |
      test/tap/gently-rm-overeager.js:34:7
      f (node_modules/once/once.js:17:25)
      ChildProcess.<anonymous> (test/common-tap.js:56:5)
      maybeClose (internal/child_process.js:764:16)
      Socket.<anonymous> (internal/child_process.js:319:11)
      Pipe._onclose (net.js:467:12)

  cache add
  not ok only debug log remains
    +++ found                                                          
    --- wanted                                                         
     [                                                                 
    -  "npm-debug.log"                                                 
    +  "node_modules"                                                  
     ]                                                                 
    at:
      file: test/tap/gently-rm-overeager.js
      line: 37
      column: 9
    source: |
      t.deepEqual(files, ["npm-debug.log"], "only debug log remains")
    stack: |
      test/tap/gently-rm-overeager.js:37:9
      ReaddirReq.Req.done (node_modules/graceful-fs/graceful-fs.js:141:5)
      ReaddirReq.done (node_modules/graceful-fs/graceful-fs.js:88:22)
      FSReqWrap.oncomplete (evalmachine.<anonymous>:82:15)

test/tap/gently-rm-symlink.js ....................... 12/12
test/tap/get.js ..................................... 18/18
test/tap/gist-short-shortcut-package.js ............... 7/7
test/tap/gist-short-shortcut.js ....................... 7/7
test/tap/gist-shortcut-package.js ..................... 7/7
test/tap/gist-shortcut.js ............................. 7/7
test/tap/git-cache-locking.js ......................... 4/4 20s
test/tap/git-cache-no-hooks.js [email protected] node_modules/npm-4503-a
test/tap/git-cache-no-hooks.js ........................ 4/4 7s
test/tap/git-dependency-install-link.js ............. 13/13
test/tap/git-npmignore.js ........................... 18/18
test/tap/git-races.js [email protected] node_modules/dummy-npm-buzz
[email protected] node_modules/dummy-npm-foo
└── [email protected]
[email protected] node_modules/dummy-npm-bar
├── [email protected]
└── [email protected]
test/tap/git-races.js ................................. 4/4 1s
test/tap/github-shortcut-package.js ................... 7/7
test/tap/github-shortcut.js ........................... 7/7
test/tap/gitlab-shortcut-package.js ................... 5/5
test/tap/gitlab-shortcut.js ........................... 5/5
test/tap/global-prefix-set-in-userconfig.js ........... 5/5
test/tap/graceful-restart.js .......................... 8/8
test/tap/ignore-install-link.js ....................... 4/4
test/tap/ignore-scripts.js ........................ 101/102
  ignore-scripts: install NOT using the option
  not ok npm install exited with code
    found: 0
    doNotWant: 0
    compare: '!=='
    at:
      file: test/tap/ignore-scripts.js
      line: 63
      column: 7
    source: |
      t.notEqual(code, 0, 'npm install exited with code')
    stack: |
      test/tap/ignore-scripts.js:63:7
      f (node_modules/once/once.js:17:25)
      ChildProcess.<anonymous> (test/common-tap.js:56:5)
      maybeClose (internal/child_process.js:764:16)
      Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

test/tap/ignore-shrinkwrap.js ....................... 10/10
test/tap/init-interrupt.js ............................ 6/6
test/tap/install-at-locally.js ........................ 8/8
test/tap/install-bad-man.js ........................... 7/7
test/tap/install-cli-production.js .................... 6/6
test/tap/install-cli-unicode.js ....................... 7/7
test/tap/install-from-local.js ........................ 6/6
test/tap/install-man.js ............................... 6/6
test/tap/install-noargs-dev.js ........................ 8/8
test/tap/install-save-exact.js ...................... 10/10
test/tap/install-save-local.js ...................... 10/10
test/tap/install-save-prefix.js ..................... 18/18
test/tap/install-scoped-already-installed.js ........ 12/12
test/tap/install-scoped-link.js ..................... 10/10
test/tap/install-scoped-with-peer-dependency.js ....... 6/6 11s
test/tap/install-with-dev-dep-duplicate.js [email protected] node_modules/underscore
test/tap/install-with-dev-dep-duplicate.js ............ 2/2 699ms
test/tap/invalid-cmd-exit-code.js ..................... 3/3 1s
test/tap/lifecycle-path.js ............................ 4/4
test/tap/lifecycle-signal.js .......................... 2/4
  lifecycle signal abort
  not ok should be equal
    +++ found                                                          
    --- wanted                                                         
    -[null]                                                            
    +0                                                                 
    compare: ===
    at:
      file: test/tap/lifecycle-signal.js
      line: 43
      column: 7
      type: ChildProcess
    stack: |
      ChildProcess.<anonymous> (test/tap/lifecycle-signal.js:43:7)
      maybeClose (internal/child_process.js:764:16)
      Socket.<anonymous> (internal/child_process.js:319:11)
      Pipe._onclose (net.js:467:12)

  lifecycle signal abort
  not ok should be equal
    +++ found                                                          
    --- wanted                                                         
    -"SIGSEGV"                                                         
    +[null]                                                            
    compare: ===
    at:
      file: test/tap/lifecycle-signal.js
      line: 44
      column: 7
      type: ChildProcess
    stack: |
      ChildProcess.<anonymous> (test/tap/lifecycle-signal.js:44:7)
      maybeClose (internal/child_process.js:764:16)
      Socket.<anonymous> (internal/child_process.js:319:11)
      Pipe._onclose (net.js:467:12)

test/tap/lifecycle.js ................................. 1/1 366ms
test/tap/link.js .................................... 16/16
test/tap/locker.js .................................. 10/10
test/tap/logout.js .................................... 5/5
test/tap/ls-depth-cli.js ............................ 15/15 8s
test/tap/ls-depth-unmet.js .......................... 24/24 9s
test/tap/ls-env.js .................................. 12/12 7s
test/tap/ls-l-depth-0.js ............................ 10/10 4s
test/tap/ls-no-results.js ............................. 1/1 3s
test/tap/map-to-registry.js ......................... 17/17
test/tap/nerf-dart.js ................................. 9/9
test/tap/nested-extraneous.js ......................... 5/5 2s
test/tap/noargs-install-config-save.js ................ 3/3 1s
test/tap/npm-api-not-loaded-error.js .................. 8/8
test/tap/optional-metadep-rollback-collision.js ....... 7/7 29s
test/tap/outdated-color.js ............................ 6/6
test/tap/outdated-depth-deep.js [email protected] node_modules/request
[email protected] node_modules/npm-test-peer-deps
[email protected] node_modules/underscore
Package     Current  Wanted  Latest  Location
underscore    1.3.1   1.3.1   1.5.1  underscore
underscore    1.3.1   1.3.1   1.5.1  npm-test-peer-deps > underscore
test/tap/outdated-depth-deep.js ....................... 3/3 2s
test/tap/outdated-depth-integer.js [email protected] node_modules/request
Package     Current  Wanted  Latest  Location
underscore  MISSING   1.3.1   1.5.1  underscore
test/tap/outdated-depth-integer.js .................... 3/3 2s
test/tap/outdated-depth.js [email protected] node_modules/request
[email protected] node_modules/npm-test-peer-deps
[email protected] node_modules/underscore
Package     Current  Wanted  Latest  Location
underscore    1.3.1   1.3.1   1.5.1  underscore
test/tap/outdated-depth.js ............................ 3/3
test/tap/outdated-git.js .Package                  Current  Wanted  Latest  Location
foo-github               MISSING     git     git  foo-github
foo-private              MISSING     git     git  foo-private
foo-private-credentials  MISSING     git     git  foo-private-credentials
test/tap/outdated-git.js .............................. 7/7
test/tap/outdated-include-devdependencies.js .Package     Current  Wanted  Latest  Location
underscore  MISSING   1.5.1   1.5.1  underscore
test/tap/outdated-include-devdependencies.js .......... 3/3 2s
test/tap/outdated-json.js ............................. 8/8 4s
test/tap/outdated-local.js ./npm/test/tap/outdated-local/node_modules/underscore
/npm/test/tap/outdated-local/node_modules/optimist
/npm/test/tap/outdated-local/node_modules/local-module
/npm/test/tap/outdated-local/node_modules/@scoped/another-local-module
./npm/test/tap/outdated-local/node_modules/@scoped/another-local-module:@scoped/[email protected]:@scoped/[email protected]:@scoped/[email protected]
/npm/test/tap/outdated-local/node_modules/local-module:[email protected]:[email protected]:[email protected]
/npm/test/tap/outdated-local/node_modules/optimist:[email protected]:[email protected]:[email protected]
/npm/test/tap/outdated-local/node_modules/underscore:[email protected]:[email protected]:[email protected]
test/tap/outdated-local.js ............................ 6/6 4s
test/tap/outdated-long.js ............................. 6/6 2s
test/tap/outdated-new-versions.js .Package     Current  Wanted  Latest  Location
request     MISSING   0.9.5  2.27.0  request
underscore  MISSING   1.3.3   1.5.1  underscore
test/tap/outdated-new-versions.js ..................... 4/4 3s
test/tap/outdated-notarget.js ......................... 2/2 703ms
test/tap/outdated-private.js ./npm/test/tap/outdated-private/node_modules/underscore
/npm/test/tap/outdated-private/node_modules/local-private
/npm/test/tap/outdated-private/node_modules/@scoped/another-local-private
/npm/test/tap/outdated-private/node_modules/underscore:[email protected]:[email protected]:[email protected]
test/tap/outdated-private.js .......................... 5/5 3s
test/tap/outdated.js .................................. 6/6 3s
test/tap/owner.js ................................... 19/19 8s
test/tap/pack-scoped.js ............................. 10/10
test/tap/peer-deps-invalid.js ......................... 4/4 4s
test/tap/peer-deps-toplevel.js [email protected] node_modules/mkdirp
[email protected] node_modules/request
[email protected] node_modules/npm-test-peer-deps
└── [email protected]
test/tap/peer-deps-toplevel.js ........................ 5/5 4s
test/tap/peer-deps-without-package-json.js [email protected] node_modules/underscore
[email protected] node_modules/npm-test-peer-deps-file
└── [email protected]
test/tap/peer-deps-without-package-json.js ............ 6/6 2s
test/tap/peer-deps.js [email protected] node_modules/request
[email protected] node_modules/npm-test-peer-deps
└── [email protected]
test/tap/peer-deps.js ................................. 2/2 4s
test/tap/prepublish.js ................................ 4/6 2s
  test
  not ok got stderr data:"npm WARN cannot run in wd [email protected] echo ok (wd=/npm/test/tap/prepublish_package)\n"
    at:
      file: test/tap/prepublish.js
      line: 60
      column: 7
    source: |
      t.notOk(stderr, "got stderr data:" + JSON.stringify("" + stderr))
    stack: |
      test/tap/prepublish.js:60:7
      f (node_modules/once/once.js:17:25)
      ChildProcess.<anonymous> (test/common-tap.js:56:5)
      maybeClose (internal/child_process.js:764:16)
      Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

  test
  not ok expect truthy value
    at:
      file: test/tap/prepublish.js
      line: 69
      column: 7
    source: |
      t.ok(c.match(regex))
    stack: |
      test/tap/prepublish.js:69:7
      f (node_modules/once/once.js:17:25)
      ChildProcess.<anonymous> (test/common-tap.js:56:5)
      maybeClose (internal/child_process.js:764:16)
      Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

test/tap/prune.js ................................... 17/17 6s
test/tap/publish-access-scoped.js ....+ @bigco/[email protected]
test/tap/publish-access-scoped.js ..................... 7/7
test/tap/publish-access-unscoped-restricted-fails.js .. 6/6 2s
test/tap/publish-access-unscoped.js ....+ [email protected]
test/tap/publish-access-unscoped.js ................... 7/7
test/tap/publish-config.js ............................ 4/4 1s
test/tap/publish-invalid-semver-tag.js ................ 6/6 2s
test/tap/publish-scoped.js .....+ @bigco/[email protected]
test/tap/publish-scoped.js ............................ 8/8
test/tap/pwd-prefix.js ................................ 8/8 7s
test/tap/referer.js ................................... 2/2 2s
WARNING: need couch to run test: not found: couchdb
test/tap/registry.js .................................. 0/1
  Skipped: 1
    test/tap/registry.js No tests found

test/tap/repo.js .................................... 13/13 9s
test/tap/run-script.js .............................. 35/35 26s
test/tap/scripts-whitespace-windows.js ................ 8/8 4s
test/tap/search.js .................................. 16/16
test/tap/semver-doc.js ................................ 1/1
test/tap/semver-tag.js ................................ 2/2 2s
test/tap/shrinkwrap-dev-dependency.js [email protected] node_modules/request
[email protected] node_modules/underscore
test/tap/shrinkwrap-dev-dependency.js ................. 2/2 3s
test/tap/shrinkwrap-empty-deps.js ..................... 6/6 2s
test/tap/shrinkwrap-local-dependency.js ............. 10/10 5s
test/tap/shrinkwrap-prod-dependency.js [email protected] node_modules/request
[email protected] node_modules/underscore
test/tap/shrinkwrap-prod-dependency.js ................ 2/2 3s
test/tap/shrinkwrap-scoped-auth.js .................... 6/6
test/tap/shrinkwrap-shared-dev-dependency.js [email protected] node_modules/test-package-with-one-dep
[email protected] node_modules/test-package
test/tap/shrinkwrap-shared-dev-dependency.js .......... 2/2 2s
test/tap/sorted-package-json.js ....................... 6/6
test/tap/spawn-enoent-help.js ......................... 3/4 2s
  enoent help
  not ok should match pattern provided
    found: ''
    pattern: "/Check if the file 'emacsclient' is present./"
    match: null
    at:
      file: test/tap/spawn-enoent-help.js
      line: 25
      column: 7
    source: |
      t.similar(serr, /Check if the file 'emacsclient' is present./)
    stack: |
      test/tap/spawn-enoent-help.js:25:7
      f (node_modules/once/once.js:17:25)
      ChildProcess.<anonymous> (test/common-tap.js:56:5)
      maybeClose (internal/child_process.js:764:16)
      Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

test/tap/spawn-enoent.js .............................. 3/3 1s
test/tap/startstop.js ................................. 7/7 5s
test/tap/tag-version-prefix.js ........................ 9/9 4s
test/tap/test-run-ls.js ............................... 6/6 5s
test/tap/umask-lifecycle.js ........................... 4/4 3s
test/tap/uninstall-package.js ......................... 8/8 4s
test/tap/unpack-foreign-tarball.js .................... 7/7 7s
test/tap/unpublish-config.js .......................... 6/6 2s
test/tap/update-examples.js ......................... 12/12
test/tap/update-index.js ............................ 10/10 3s
test/tap/update-save.js ............................. 27/27 10s
test/tap/url-dependencies.js ........................ 10/10 6s
test/tap/version-git-not-clean.js ..................... 4/4 1s
test/tap/version-lifecycle.js v0.0.1
..v0.0.1
test/tap/version-lifecycle.js ......................... 1/5 1s
  npm version <semver> with failing preversion lifecycle script
  not ok expect truthy value
    at:
      file: test/tap/version-lifecycle.js
      line: 30
      column: 9
    stack: |
      test/tap/version-lifecycle.js:30:9
      LOOP (node_modules/slide/lib/chain.js:7:26)
      node_modules/slide/lib/chain.js:18:7
      done (lib/utils/lifecycle.js:105:5)
      LOOP (node_modules/slide/lib/chain.js:7:26)
      node_modules/slide/lib/chain.js:18:7
      lib/utils/lifecycle.js:251:20
      FSReqWrap.oncomplete (evalmachine.<anonymous>:82:15)

  npm version <semver> with failing preversion lifecycle script
  not ok TypeError: Cannot read property 'message' of null
    at:
      file: test/tap/version-lifecycle.js
      line: 31
      column: 15
    test: 'npm version <semver> with failing preversion lifecycle script'
    message: "TypeError: Cannot read property 'message' of null"
    stack: |
      test/tap/version-lifecycle.js:31:15
      LOOP (node_modules/slide/lib/chain.js:7:26)
      node_modules/slide/lib/chain.js:18:7
      done (lib/utils/lifecycle.js:105:5)
      LOOP (node_modules/slide/lib/chain.js:7:26)
      node_modules/slide/lib/chain.js:18:7
      lib/utils/lifecycle.js:251:20
      FSReqWrap.oncomplete (evalmachine.<anonymous>:82:15)

  npm version <semver> with failing postversion lifecycle script
  not ok expect truthy value
    at:
      file: test/tap/version-lifecycle.js
      line: 53
      column: 9
    stack: |
      test/tap/version-lifecycle.js:53:9
      LOOP (node_modules/slide/lib/chain.js:7:26)
      node_modules/slide/lib/chain.js:18:7
      lib/utils/lifecycle.js:46:14
      lib/utils/lifecycle.js:123:12
      FSReqWrap.oncomplete (evalmachine.<anonymous>:82:15)

  npm version <semver> with failing postversion lifecycle script
  not ok TypeError: Cannot read property 'message' of null
    at:
      file: test/tap/version-lifecycle.js
      line: 54
      column: 15
    test: 'npm version <semver> with failing postversion lifecycle script'
    message: "TypeError: Cannot read property 'message' of null"
    stack: |
      test/tap/version-lifecycle.js:54:15
      LOOP (node_modules/slide/lib/chain.js:7:26)
      node_modules/slide/lib/chain.js:18:7
      lib/utils/lifecycle.js:46:14
      lib/utils/lifecycle.js:123:12
      FSReqWrap.oncomplete (evalmachine.<anonymous>:82:15)

test/tap/version-message-config.js .................... 6/6 3s
test/tap/version-no-git.js v0.0.1
test/tap/version-no-git.js ............................ 3/3 1s
test/tap/version-no-package.js ........................ 7/7
test/tap/version-no-tags.js Initialized empty Git repository in /npm/test/tap/version-no-tags/.git/
v0.0.1
test/tap/version-no-tags.js ........................... 6/6
test/tap/version-update-shrinkwrap.js v0.0.1
..v0.0.1
........v0.0.1
test/tap/version-update-shrinkwrap.js ............... 18/18
test/tap/view.js .................................... 46/47 1m
  npm view . with no package.json
  not ok should match pattern provided
    found: "npm ERR! Linux 3.19.0-13-generic\nnpm ERR! argv \"/usr/local/bin/iojs\" \"/npm/bin/npm-cli.js\" \"view\" \".\" \"--registry=http://localhost:1337\"\nnpm ERR! node v2.3.1\nnpm ERR! npm  v2.12.0\nnpm ERR! code ECONNREFUSED\nnpm ERR! errno ECONNREFUSED\nnpm ERR! syscall connect\n\nnpm ERR! Error: connect ECONNREFUSED 127.0.0.1:1337\nnpm ERR!     at Object.exports._errnoException (util.js:814:11)\nnpm ERR!     at exports._exceptionWithHostPort (util.js:837:20)\nnpm ERR!     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1044:14)\nnpm ERR!  { [Error: connect ECONNREFUSED 127.0.0.1:1337]\nnpm ERR!   code: 'ECONNREFUSED',\nnpm ERR!   errno: 'ECONNREFUSED',\nnpm ERR!   syscall: 'connect',\nnpm ERR!   address: '127.0.0.1',\nnpm ERR!   port: 1337 }\nnpm ERR! \nnpm ERR! If you are behind a proxy, please make sure that the\nnpm ERR! 'proxy' config is set properly.  See: 'npm help config'\n\nnpm ERR! Please include the following file with any support request:\nnpm ERR!     /npm/view-local-no-pkg/npm-debug.log\n"
    pattern: /Invalid package.json/m
    match: null
    at:
      file: test/tap/view.js
      line: 80
      column: 7
    stack: |
      test/tap/view.js:80:7
      f (node_modules/once/once.js:17:25)
      ChildProcess.<anonymous> (test/common-tap.js:56:5)
      maybeClose (internal/child_process.js:764:16)
      Socket.<anonymous> (internal/child_process.js:319:11)
      Pipe._onclose (net.js:467:12)

test/tap/whoami.js .................................. 10/10
test/tap/zz-cleanup.js ................................ 1/1 607ms
total ........................................... 2290/2304

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions