From b3df135f0de6acd26b98964b46dfb41e03366aad Mon Sep 17 00:00:00 2001 From: Yuichi Tanikawa Date: Fri, 25 Nov 2016 19:21:43 +0900 Subject: [PATCH] Fix for GitHub custom domain --- package.json | 1 + src/gitProvider.js | 2 +- test/gitProvider.test.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 58e33b7..c1c922c 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ }, "devDependencies": { "chai": "^3.5.0", + "proxyquire": "^1.7.10", "typescript": "^1.6.2", "vscode": "0.11.13" }, diff --git a/src/gitProvider.js b/src/gitProvider.js index e021d5c..f4b6b3e 100644 --- a/src/gitProvider.js +++ b/src/gitProvider.js @@ -81,7 +81,7 @@ const providers = { function gitProvider(remoteUrl) { const gitUrl = gitUrlParse(remoteUrl); for (const domain of Object.keys(providers)) { - if (domain === gitUrl.source) { + if (domain === gitUrl.resource || domain === gitUrl.source) { return new providers[domain](gitUrl); } } diff --git a/test/gitProvider.test.js b/test/gitProvider.test.js index ca10ccb..c07a1a0 100644 --- a/test/gitProvider.test.js +++ b/test/gitProvider.test.js @@ -2,6 +2,7 @@ const querystring = require('querystring'); const expect = require('chai').expect; +const proxyquire = require('proxyquire'); const gitProvider = require('../src/gitProvider'); @@ -52,6 +53,33 @@ suite('gitProvider', function () { }); }); }); + + suite('with custom domain', function () { + const testDomain = 'github.testdomain.com'; + const remoteUrl = `https://${testDomain}/${userName}/${repoName}.git`; + + const fakeVscode = { + workspace: { + getConfiguration: function () { + return { + get: function () { + return testDomain; + }, + }; + }, + }, + }; + const gitProvider = proxyquire('../src/gitProvider.js', { vscode: fakeVscode }); + const provider = gitProvider(remoteUrl); + + suite('#webUrl(branch, filePath)', function () { + test('should return custom domain URL', function () { + const expectedUrl = `https://${testDomain}/${userName}/${repoName}/blob/${branch}${filePath}`; + const webUrl = provider.webUrl(branch, filePath); + expect(webUrl).to.equal(expectedUrl); + }); + }); + }); }); suite('Bitbucket', function () {