typings-core
Version:
The logic of Typings
317 lines • 12.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var test = require("blue-tape");
var path_1 = require("path");
var parse_1 = require("./parse");
var config_1 = require("./config");
test('parse', function (t) {
t.test('parse dependency', function (t) {
t.test('parse filename', function (t) {
var actual = parse_1.parseDependency('file:./foo/bar.d.ts');
var expected = {
raw: 'file:./foo/bar.d.ts',
location: path_1.normalize('foo/bar.d.ts'),
meta: {
name: 'bar',
path: path_1.normalize('foo/bar.d.ts')
},
type: 'file'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse filename relative', function (t) {
var actual = parse_1.parseDependency('file:foo/bar.d.ts');
var expected = {
raw: 'file:foo/bar.d.ts',
location: path_1.normalize('foo/bar.d.ts'),
meta: {
name: 'bar',
path: path_1.normalize('foo/bar.d.ts')
},
type: 'file'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse npm', function (t) {
var actual = parse_1.parseDependency('npm:foobar');
var expected = {
raw: 'npm:foobar',
type: 'npm',
meta: {
name: 'foobar',
path: 'package.json'
},
location: path_1.normalize('foobar/package.json')
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse scoped npm packages', function (t) {
var actual = parse_1.parseDependency('npm:@foo/bar');
var expected = {
raw: 'npm:@foo/bar',
type: 'npm',
meta: {
name: '@foo/bar',
path: 'package.json'
},
location: path_1.normalize('@foo/bar/package.json')
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse npm filename', function (t) {
var actual = parse_1.parseDependency('npm:typescript/bin/lib.es6.d.ts');
var expected = {
raw: 'npm:typescript/bin/lib.es6.d.ts',
type: 'npm',
meta: {
name: 'typescript',
path: path_1.normalize('bin/lib.es6.d.ts')
},
location: path_1.normalize('typescript/bin/lib.es6.d.ts')
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse bower', function (t) {
var actual = parse_1.parseDependency('bower:foobar');
var expected = {
raw: 'bower:foobar',
type: 'bower',
meta: {
name: 'foobar',
path: 'bower.json'
},
location: path_1.normalize('foobar/bower.json')
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse bower filename', function (t) {
var actual = parse_1.parseDependency('bower:foobar/' + config_1.CONFIG_FILE);
var expected = {
raw: 'bower:foobar/' + config_1.CONFIG_FILE,
type: 'bower',
meta: {
name: 'foobar',
path: config_1.CONFIG_FILE
},
location: path_1.normalize('foobar/' + config_1.CONFIG_FILE)
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse github', function (t) {
var actual = parse_1.parseDependency('github:foo/bar');
var expected = {
raw: 'github:foo/bar',
type: 'github',
meta: {
name: undefined,
org: 'foo',
path: config_1.CONFIG_FILE,
repo: 'bar',
sha: 'master'
},
location: 'https://raw.githubusercontent.com/foo/bar/master/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse github with sha and append config file', function (t) {
var actual = parse_1.parseDependency('github:foo/bar#test');
var expected = {
raw: 'github:foo/bar#test',
type: 'github',
meta: {
name: undefined,
org: 'foo',
path: config_1.CONFIG_FILE,
repo: 'bar',
sha: 'test'
},
location: 'https://raw.githubusercontent.com/foo/bar/test/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse github paths to `.d.ts` files', function (t) {
var actual = parse_1.parseDependency('github:foo/bar/typings/file.d.ts');
var expected = {
raw: 'github:foo/bar/typings/file.d.ts',
type: 'github',
meta: {
name: 'file',
org: 'foo',
path: 'typings/file.d.ts',
repo: 'bar',
sha: 'master'
},
location: 'https://raw.githubusercontent.com/foo/bar/master/typings/file.d.ts'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse github paths to config file', function (t) {
var actual = parse_1.parseDependency('github:foo/bar/src/' + config_1.CONFIG_FILE);
var expected = {
raw: 'github:foo/bar/src/' + config_1.CONFIG_FILE,
type: 'github',
meta: {
name: undefined,
org: 'foo',
path: "src/" + config_1.CONFIG_FILE,
repo: 'bar',
sha: 'master'
},
location: 'https://raw.githubusercontent.com/foo/bar/master/src/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse bitbucket', function (t) {
var actual = parse_1.parseDependency('bitbucket:foo/bar');
var expected = {
raw: 'bitbucket:foo/bar',
type: 'bitbucket',
meta: {
name: undefined,
org: 'foo',
path: config_1.CONFIG_FILE,
repo: 'bar',
sha: 'master'
},
location: 'https://bitbucket.org/foo/bar/raw/master/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse bitbucket and append config file to path', function (t) {
var actual = parse_1.parseDependency('bitbucket:foo/bar/dir');
var expected = {
raw: 'bitbucket:foo/bar/dir',
type: 'bitbucket',
meta: {
name: undefined,
org: 'foo',
path: "dir/" + config_1.CONFIG_FILE,
repo: 'bar',
sha: 'master'
},
location: 'https://bitbucket.org/foo/bar/raw/master/dir/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse bitbucket with sha', function (t) {
var actual = parse_1.parseDependency('bitbucket:foo/bar#abc');
var expected = {
raw: 'bitbucket:foo/bar#abc',
type: 'bitbucket',
meta: {
name: undefined,
org: 'foo',
path: config_1.CONFIG_FILE,
repo: 'bar',
sha: 'abc'
},
location: 'https://bitbucket.org/foo/bar/raw/abc/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse url', function (t) {
var actual = parse_1.parseDependency('http://example.com/foo/' + config_1.CONFIG_FILE);
var expected = {
raw: 'http://example.com/foo/' + config_1.CONFIG_FILE,
type: 'http',
meta: {},
location: 'http://example.com/foo/' + config_1.CONFIG_FILE
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse registry', function (t) {
var actual = parse_1.parseDependency('registry:dt/node');
var expected = {
raw: 'registry:dt/node',
type: 'registry',
meta: { name: 'node', source: 'dt', tag: undefined, version: undefined },
location: 'https://api.typings.org/entries/dt/node/versions/latest'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse registry with scoped package', function (t) {
var actual = parse_1.parseDependency('registry:npm/@scoped/npm');
var expected = {
raw: 'registry:npm/@scoped/npm',
type: 'registry',
meta: { name: '@scoped/npm', source: 'npm', tag: undefined, version: undefined },
location: 'https://api.typings.org/entries/npm/%40scoped%2Fnpm/versions/latest'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse registry with tag', function (t) {
var actual = parse_1.parseDependency('registry:npm/dep#3.0.0-2016');
var expected = {
raw: 'registry:npm/dep#3.0.0-2016',
type: 'registry',
meta: { name: 'dep', source: 'npm', tag: '3.0.0-2016', version: undefined },
location: 'https://api.typings.org/entries/npm/dep/tags/3.0.0-2016'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse registry with version', function (t) {
var actual = parse_1.parseDependency('registry:npm/dep@^4.0');
var expected = {
raw: 'registry:npm/dep@^4.0',
type: 'registry',
meta: { name: 'dep', source: 'npm', tag: undefined, version: '^4.0' },
location: 'https://api.typings.org/entries/npm/dep/versions/%5E4.0/latest'
};
t.deepEqual(actual, expected);
t.end();
});
t.test('parse jspm', function (t) {
var actual = parse_1.parseDependency('jspm:domready');
var expected = {
raw: 'jspm:domready',
type: 'jspm',
location: 'domready',
meta: {
name: 'domready'
}
};
t.deepEqual(actual, expected);
t.end();
});
t.test('expand registry with default source', function (t) {
var actual = parse_1.expandRegistry('domready');
var expected = 'registry:npm/domready';
t.deepEqual(actual, expected);
t.end();
});
t.test('expand registry with provided source', function (t) {
var actual = parse_1.expandRegistry('env~atom');
var expected = 'registry:env/atom';
t.deepEqual(actual, expected);
t.end();
});
t.test('unknown scheme', function (t) {
t.throws(function () { return parse_1.parseDependency('random:fake/dep'); }, /Unknown dependency: /);
t.end();
});
});
t.test('resolve dependency', function (t) {
t.equal(parse_1.resolveDependency('github:foo/bar/baz/x.d.ts', '../lib/test.d.ts'), 'github:foo/bar/lib/test.d.ts');
t.equal(parse_1.resolveDependency('http://example.com/foo/bar.d.ts', 'x.d.ts'), 'http://example.com/foo/x.d.ts');
t.end();
});
});
//# sourceMappingURL=parse.spec.js.map