diff options
author | Forrest L Norvell <forrest@npmjs.com> | 2015-04-15 21:10:28 +0300 |
---|---|---|
committer | Forrest L Norvell <forrest@npmjs.com> | 2015-04-16 04:03:45 +0300 |
commit | 387f889c0e8fb617d9cc9a42ed0a3ec49424ab5d (patch) | |
tree | c974e2594c2f50316921a975a4619007babc7dcc /test | |
parent | 4a97339a9bade6cc8e63ea69a52af204d082a17e (diff) |
git: resolved git URLs should be in normal form
Diffstat (limited to 'test')
-rw-r--r-- | test/tap/add-remote-git-get-resolved.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/test/tap/add-remote-git-get-resolved.js b/test/tap/add-remote-git-get-resolved.js new file mode 100644 index 000000000..4a4f0a5fe --- /dev/null +++ b/test/tap/add-remote-git-get-resolved.js @@ -0,0 +1,101 @@ +'use strict' +var test = require('tap').test + +var npm = require('../../lib/npm.js') +var common = require('../common-tap.js') + +test('setup', function (t) { + var opts = { + registry: common.registry, + loglevel: 'silent' + } + npm.load(opts, function (er) { + t.ifError(er, 'npm loaded without error') + + t.end() + }) +}) + +test('add-remote-git#get-resolved git: passthru', function (t) { + var getResolved = require('../../lib/cache/add-remote-git.js').getResolved + + verify('git:github.com/foo/repo') + verify('git:github.com/foo/repo.git') + verify('git://github.com/foo/repo#decadacefadabade') + verify('git://github.com/foo/repo.git#decadacefadabade') + + function verify (uri) { + t.equal( + getResolved(uri, 'decadacefadabade'), + 'git://github.com/foo/repo.git#decadacefadabade', + uri + ' normalized to canonical form git://github.com/foo/repo.git#decadacefadabade' + ) + } + t.end() +}) + +test('add-remote-git#get-resolved SSH', function (t) { + var getResolved = require('../../lib/cache/add-remote-git.js').getResolved + + t.comment('tests for https://github.com/npm/npm/issues/7961') + verify('git@github.com:foo/repo') + verify('git@github.com:foo/repo#master') + verify('git+ssh://git@github.com/foo/repo#master') + verify('git+ssh://git@github.com/foo/repo#decadacefadabade') + + function verify (uri) { + t.equal( + getResolved(uri, 'decadacefadabade'), + 'git+ssh://git@github.com/foo/repo.git#decadacefadabade', + uri + ' normalized to canonical form git+ssh://git@github.com/foo/repo.git#decadacefadabade' + ) + } + t.end() +}) + +test('add-remote-git#get-resolved HTTPS', function (t) { + var getResolved = require('../../lib/cache/add-remote-git.js').getResolved + + verify('https://github.com/foo/repo') + verify('https://github.com/foo/repo#master') + verify('git+https://github.com/foo/repo.git#master') + verify('git+https://github.com/foo/repo#decadacefadabade') + + function verify (uri) { + t.equal( + getResolved(uri, 'decadacefadabade'), + 'git+https://github.com/foo/repo.git#decadacefadabade', + uri + ' normalized to canonical form git+https://github.com/foo/repo.git#decadacefadabade' + ) + } + t.end() +}) + +test('add-remote-git#get-resolved edge cases', function (t) { + var getResolved = require('../../lib/cache/add-remote-git.js').getResolved + + t.notOk( + getResolved('git@bananaboat.com:galbi.git', 'decadacefadabade'), + 'non-hosted Git SSH non-URI strings are invalid' + ) + + t.equal( + getResolved('git+ssh://git.bananaboat.net/foo', 'decadacefadabade'), + 'git+ssh://git.bananaboat.net/foo#decadacefadabade', + 'don\'t break non-hosted SSH URLs' + ) + + t.equal( + getResolved('git://gitbub.com/foo/bar.git', 'decadacefadabade'), + 'git://gitbub.com/foo/bar.git#decadacefadabade', + 'don\'t break non-hosted git: URLs' + ) + + t.comment('test for https://github.com/npm/npm/issues/3224') + t.equal( + getResolved('git+ssh://git@git.example.com:my-repo.git#9abe82cb339a70065e75300f62b742622774693c', 'decadacefadabade'), + 'git+ssh://git@git.example.com:my-repo.git#decadacefadabade', + 'preserve weird colon in semi-standard ssh:// URLs' + ) + t.end() +}) |