180 lines
5.1 KiB
JavaScript
180 lines
5.1 KiB
JavaScript
'use strict';
|
|
|
|
const {expect} = require(`chai`);
|
|
const {describe, it} = require(`mocha`);
|
|
const getPkgRepo = require(`../`);
|
|
|
|
describe(`get-pkg-repo`, () => {
|
|
it(`should error if cannot get repository`, () => {
|
|
expect(() => getPkgRepo()).to.throw(
|
|
Error,
|
|
`No valid "repository" data found in package metadata. Please see https://docs.npmjs.com/files/package.json#repository for proper syntax.`);
|
|
expect(() => getPkgRepo({})).to.throw(
|
|
Error,
|
|
`No valid "repository" data found in package metadata. Please see https://docs.npmjs.com/files/package.json#repository for proper syntax.`);
|
|
expect(() => getPkgRepo({repository: {type: `git`}})).to.throw(
|
|
Error,
|
|
`No valid "repository" data found in package metadata. Please see https://docs.npmjs.com/files/package.json#repository for proper syntax.`);
|
|
});
|
|
|
|
it(`should parse github http when it's just a string`, () => {
|
|
const repository = getPkgRepo({repository: `http://github.com/a/b`});
|
|
expect(repository).to.contain({
|
|
domain: `github.com`,
|
|
type: `github`,
|
|
user: `a`,
|
|
project: `b`,
|
|
});
|
|
});
|
|
|
|
it(`should parse github http`, () => {
|
|
const repository = getPkgRepo({repository: {url: `http://github.com/a/b`}});
|
|
expect(repository).to.contain({
|
|
domain: `github.com`,
|
|
type: `github`,
|
|
user: `a`,
|
|
project: `b`,
|
|
});
|
|
});
|
|
|
|
it(`should parse github https`, () => {
|
|
const repository = getPkgRepo({repository: {url: `https://github.com/a/b`}});
|
|
expect(repository).to.contain({
|
|
domain: `github.com`,
|
|
type: `github`,
|
|
user: `a`,
|
|
project: `b`,
|
|
});
|
|
});
|
|
|
|
it(`should parse gitlab https`, () => {
|
|
const repository = getPkgRepo({repository: `https://gitlab.com/hyper-expanse/semantic-release-gitlab-releaser.git`});
|
|
expect(repository).to.contain({
|
|
domain: `gitlab.com`,
|
|
type: `gitlab`,
|
|
user: `hyper-expanse`,
|
|
project: `semantic-release-gitlab-releaser`,
|
|
});
|
|
});
|
|
|
|
it(`should parse github ssh`, () => {
|
|
const repository = getPkgRepo({repository: {url: `git@github.com:joyent/node.git`}});
|
|
expect(repository).to.contain({
|
|
domain: `github.com`,
|
|
type: `github`,
|
|
user: `joyent`,
|
|
project: `node`,
|
|
});
|
|
});
|
|
|
|
it(`should parse private gitlab ssh`, () => {
|
|
const repository = getPkgRepo({repository: {url: `git@gitlab.team.com:username/test.git`}});
|
|
expect(repository).to.contain({
|
|
domain: `gitlab.team.com`,
|
|
type: `gitlab`,
|
|
user: `username`,
|
|
project: `test`,
|
|
});
|
|
});
|
|
|
|
it(`should parse github short`, () => {
|
|
const repository = getPkgRepo({repository: {url: `a/b`}});
|
|
expect(repository).to.contain({
|
|
domain: `github.com`,
|
|
type: `github`,
|
|
user: `a`,
|
|
project: `b`,
|
|
});
|
|
});
|
|
|
|
it(`should parse bitbucket`, () => {
|
|
const repository = getPkgRepo({repository: {url: `https://bitbucket.org/a/b.git`}});
|
|
expect(repository).to.contain({
|
|
domain: `bitbucket.org`,
|
|
type: `bitbucket`,
|
|
user: `a`,
|
|
project: `b`,
|
|
});
|
|
});
|
|
|
|
it(`should parse svn`, () => {
|
|
const repository = getPkgRepo({repository: {url: `svn://a/b`}});
|
|
expect(repository).to.contain({
|
|
domain: `a`,
|
|
project: null,
|
|
type: null,
|
|
user: null,
|
|
});
|
|
});
|
|
|
|
it(`should parse https`, () => {
|
|
const repository = getPkgRepo({repository: {url: `https://a/b`}});
|
|
expect(repository).to.contain({
|
|
domain: `a`,
|
|
project: null,
|
|
type: null,
|
|
user: null,
|
|
});
|
|
});
|
|
|
|
it(`should parse a url with an @`, () => {
|
|
const repository = getPkgRepo({repository: {url: `a@b.com`}});
|
|
expect(repository).to.contain({
|
|
domain: null,
|
|
project: null,
|
|
type: null,
|
|
user: null,
|
|
});
|
|
});
|
|
|
|
it(`should fix bad protocol`, () => {
|
|
const repository = getPkgRepo({repository: {url: `badprotocol://a/b`}});
|
|
expect(repository).to.contain({
|
|
domain: `a`,
|
|
project: null,
|
|
type: null,
|
|
user: null,
|
|
});
|
|
});
|
|
|
|
it(`should parse github enterprise http url`, () => {
|
|
const repository = getPkgRepo({repository: {url: `http://github.mycompany.dev/user/myRepo`}});
|
|
expect(repository).to.contain({
|
|
domain: `github.mycompany.dev`,
|
|
user: `user`,
|
|
project: `myRepo`,
|
|
type: `github`,
|
|
});
|
|
});
|
|
|
|
it(`should parse unknown git URL`, () => {
|
|
const repository = getPkgRepo({repository: {url: `git@git.ourdomain.co:group1/group2/group3/project.git`}});
|
|
expect(repository).to.contain({
|
|
domain: `git.ourdomain.co`,
|
|
user: `group1/group2/group3`,
|
|
project: `project`,
|
|
type: null,
|
|
});
|
|
});
|
|
|
|
it(`should parse simple unknown host`, () => {
|
|
const repository = getPkgRepo({repository: {url: `https://unknown-host/`}});
|
|
expect(repository).to.contain({
|
|
domain: `unknown-host`,
|
|
project: null,
|
|
type: null,
|
|
user: null,
|
|
});
|
|
});
|
|
|
|
it(`should parse weird unknown host`, () => {
|
|
const repository = getPkgRepo({repository: {url: `https://unknown-host/.git`}});
|
|
expect(repository).to.contain({
|
|
domain: `unknown-host`,
|
|
project: null,
|
|
type: null,
|
|
user: null,
|
|
});
|
|
});
|
|
});
|