Skip to content

Commit

Permalink
Fix support for private git repos when using shorted repo syntax and …
Browse files Browse the repository at this point in the history
…lock file exists

Force git remote type if the resolved url it's a git private url.
  • Loading branch information
ramasilveyra committed May 17, 2017
1 parent 25890c8 commit 3977ebd
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
34 changes: 34 additions & 0 deletions __tests__/package-request.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/* @flow */

import PackageRequest from '../src/package-request.js';
import Lockfile from '../src/lockfile/wrapper.js';

test('Produce valid remote type for a git private dep', () => {
const pattern = 'private-dep@github:yarnpkg/private-dep#1.0.0';
const privateDepCache = {
[pattern]: {
version: '1.0.0',
resolved: 'git+ssh://git@github.com/yarnpkg/private-dep.git#d6c57894210c52be02da7859dbb5205feb85d8b0',
},
};
const lockfile = new Lockfile(privateDepCache);
const request = new PackageRequest({pattern}, {lockfile, usedRegistries: {add: () => {}}});

expect(request.getLocked('git')._remote.type).toBe('git');
expect(request.getLocked('tarball')._remote.type).toBe('git');
});

test('Produce valid remote type for a git public dep', () => {
const pattern = 'private-dep@yarnpkg/private-dep#1fde368';
const privateDepCache = {
[pattern]: {
version: '1.0.0',
resolved: 'https://codeload.github.com/yarnpkg/public-dep/tar.gz/1fde368',
},
};
const lockfile = new Lockfile(privateDepCache);
const request = new PackageRequest({pattern}, {lockfile, usedRegistries: {add: () => {}}});

expect(request.getLocked('git')._remote.type).toBe('git');
expect(request.getLocked('tarball')._remote.type).toBe('tarball');
});
4 changes: 3 additions & 1 deletion src/package-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,16 @@ export default class PackageRequest {

if (shrunk && shrunk.resolved) {
const resolvedParts = versionUtil.explodeHashedUrl(shrunk.resolved);
// If it's a private git url set remote to 'git'.
const preferredRemoteType = resolvedParts.url.startsWith('git+ssh://') ? 'git' : remoteType;

return {
name: shrunk.name,
version: shrunk.version,
_uid: shrunk.uid,
_remote: {
resolved: shrunk.resolved,
type: remoteType,
type: preferredRemoteType,
reference: resolvedParts.url,
hash: resolvedParts.hash,
registry: shrunk.registry,
Expand Down

0 comments on commit 3977ebd

Please sign in to comment.