Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
outdated: fix special 'remote' deps
Add a special case for 'remote' deps (tarballs). Before 
b7b54f2 the package names were possibly 
just looked up in the registry instead.

See https://npm.community/t/6187
  • Loading branch information
larsgw committed Mar 23, 2019
commit 9e97f7b9ed4e92c75a57f131dba5ec1d8b209917
2 changes: 2 additions & 0 deletions lib/outdated.js
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,8 @@ function shouldUpdate (args, tree, dep, has, req, depth, pkgpath, opts, cb, type
return doIt('git', 'git')
} else if (parsed.type === 'file') {
return updateLocalDeps()
} else if (parsed.type === 'remote') {
return doIt('remote', 'remote')
} else {
return packument(parsed, opts.concat({
'prefer-online': true
Expand Down
96 changes: 96 additions & 0 deletions test/tap/outdated-remote.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
'use strict'
const path = require('path')
const test = require('tap').test
const Tacks = require('tacks')
const File = Tacks.File
const Symlink = Tacks.Symlink
const Dir = Tacks.Dir
const common = require('../common-tap.js')

const basedir = path.join(__dirname, path.basename(__filename, '.js'))
const testdir = path.join(basedir, 'testdir')
const cachedir = path.join(basedir, 'cache')
const globaldir = path.join(basedir, 'global')
const tmpdir = path.join(basedir, 'tmp')

const conf = {
cwd: testdir,
env: common.newEnv().extend({
npm_config_cache: cachedir,
npm_config_tmp: tmpdir,
npm_config_prefix: globaldir,
npm_config_registry: common.registry,
npm_config_loglevel: 'warn'
})
}

const fixture = new Tacks(Dir({
cache: Dir(),
global: Dir(),
tmp: Dir(),
testdir: Dir({
node_modules: Dir({
'foo-http': Dir({
'package.json': File({
name: 'foo-http',
version: '1.0.0'
})
}),
'foo-https': Dir({
'package.json': File({
name: 'foo-https',
version: '1.0.0'
})
})
}),
'package.json': File({
name: 'outdated-remote',
version: '1.0.0',
dependencies: {
'foo-http': 'http://example.com/foo.tar.gz',
'foo-https': 'https://example.com/foo.tar.gz'
}
})
})
}))

function setup () {
cleanup()
fixture.create(basedir)
}

function cleanup () {
fixture.remove(basedir)
}

test('setup', t => {
setup()
return common.fakeRegistry.listen()
})

test('discovers new versions in outdated', t => {
return common.npm(['outdated', '--json'], conf).then(([code, stdout, stderr]) => {
t.is(code, 1, 'npm outdated completed successfully')
t.comment(stdout.trim())
t.comment(stderr.trim())
const data = JSON.parse(stdout)
t.same(data['foo-http'], {
current: '1.0.0',
wanted: 'remote',
latest: 'remote',
location: ''
})
t.same(data['foo-https'], {
current: '1.0.0',
wanted: 'remote',
latest: 'remote',
location: ''
})
})
})

test('cleanup', t => {
common.fakeRegistry.close()
cleanup()
t.done()
})