Skip to content

Commit

Permalink
feat: npm repo support repository.directory field
Browse files Browse the repository at this point in the history
See #140

PR-URL: #163
Credit: @ybiquitous
Close: #163
Reviewed-by: @mikemimik
  • Loading branch information
ybiquitous authored and Michael Perrotte committed Dec 2, 2019
1 parent 8676429 commit 980200b
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/repo.js
Expand Up @@ -27,7 +27,7 @@ function getUrlAndOpen (d, cb) {
// XXX remove this when npm@v1.3.10 from node 0.10 is deprecated
// from https://github.com/npm/npm-www/issues/418
const info = hostedGitInfo.fromUrl(r.url)
const url = info ? info.browse() : unknownHostedUrl(r.url)
const url = info ? info.browse(d.repository.directory) : unknownHostedUrl(r.url)

if (!url) return cb(new Error('no repository: could not get url'))

Expand Down
73 changes: 73 additions & 0 deletions test/tap/repo.js
Expand Up @@ -168,6 +168,79 @@ test('npm repo test-repo-url-ssh - non-github (ssh://)', function (t) {
})
})

/* ----- Test by new mock registry: BEGIN ----- */

const Tacks = require('tacks')
const mockTar = require('../util/mock-tarball.js')

const { Dir, File } = Tacks
const testDir = path.join(__dirname, path.basename(__filename, '.js'))

let server
test('setup mocked registry', t => {
common.fakeRegistry.compat({}, (err, s) => {
t.ifError(err, 'registry mocked successfully')
server = s
t.end()
})
})

test('npm repo test-repo-with-directory', t => {
const fixture = new Tacks(Dir({
'package.json': File({})
}))
fixture.create(testDir)
const packument = {
name: 'test-repo-with-directory',
'dist-tags': { latest: '1.2.3' },
versions: {
'1.2.3': {
name: 'test-repo-with-directory',
version: '1.2.3',
dist: {
tarball: `${server.registry}/test-repo-with-directory/-/test-repo-with-directory-1.2.3.tgz`
},
repository: {
type: 'git',
url: 'git+https://github.com/foo/test-repo-with-directory.git',
directory: 'some/directory'
}
}
}
}
server.get('/test-repo-with-directory').reply(200, packument)
return mockTar({
'package.json': JSON.stringify({
name: 'test-repo-with-directory',
version: '1.2.3'
})
}).then(tarball => {
server.get('/test-repo-with-directory/-/test-repo-with-directory-1.2.3.tgz').reply(200, tarball)
return common.npm([
'repo', 'test-repo-with-directory',
'--registry=' + server.registry,
'--loglevel=silent',
'--browser=' + fakeBrowser
])
}).then(([code, stdout, stderr]) => {
t.equal(code, 0)
t.comment(stdout)
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some/directory\n')
rimraf.sync(outFile)
})
})

test('cleanup mocked registry', t => {
server.close()
rimraf.sync(testDir)
t.end()
})

/* ----- Test by new mock registry: END ----- */

test('cleanup', function (t) {
fs.unlinkSync(fakeBrowser)
t.pass('cleaned up')
Expand Down

0 comments on commit 980200b

Please sign in to comment.