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 2293acf
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
50 changes: 50 additions & 0 deletions __tests__/package-request.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/* @flow */

import PackageRequest from '../src/package-request.js';
import * as reporters from '../src/reporters/index.js';
import PackageResolver from '../src/package-resolver.js';
import Lockfile from '../src/lockfile/wrapper.js';
import Config from '../src/config.js';

async function prepareRequest(pattern, version, resolved): Object {
const privateDepCache = {[pattern]: {version, resolved}};
const lockfile = new Lockfile(privateDepCache);
const reporter = new reporters.NoopReporter({});
const depRequestPattern = {
pattern,
registry: 'npm',
hint: null,
optional: false,
};
const config = await Config.create({}, reporter);
const resolver = new PackageResolver(config, lockfile);
const request = new PackageRequest(depRequestPattern, resolver);

return {request, reporter};
}

test('Produce valid remote type for a git private dep', async () => {
const {request, reporter} = await prepareRequest(
'private-dep@github:yarnpkg/private-dep#1.0.0',
'1.0.0',
'git+ssh://git@github.com/yarnpkg/private-dep.git#d6c57894210c52be02da7859dbb5205feb85d8b0'
);

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

await reporter.close();
});

test('Produce valid remote type for a git public dep', async () => {
const {request, reporter} = await prepareRequest(
'public-dep@yarnpkg/public-dep#1fde368',
'1.0.0',
'https://codeload.github.com/yarnpkg/public-dep/tar.gz/1fde368'
);

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

await reporter.close();
});
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 2293acf

Please sign in to comment.