summaryrefslogtreecommitdiffstats
path: root/test/git.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/git.js')
-rw-r--r--test/git.js76
1 files changed, 53 insertions, 23 deletions
diff --git a/test/git.js b/test/git.js
index 6fd6b41..9fd7490 100644
--- a/test/git.js
+++ b/test/git.js
@@ -1,31 +1,61 @@
-var should = require("should");
-var git = require("../lib/utils/git");
+var should = require('should');
+var path = require('path');
+var os = require('os');
-describe("GIT parser and getter", function () {
- it("should correctly parse an https url", function() {
- var parts = git.parseUrl("git+https://gist.github.com/69ea4542e4c8967d2fa7.git/test.md");
+var Git = require('../lib/utils/git');
- should.exist(parts);
- parts.host.should.be.equal("https://gist.github.com/69ea4542e4c8967d2fa7.git");
- parts.ref.should.be.equal("master");
- parts.filepath.should.be.equal("test.md");
- });
+describe('Git', function() {
- it("should correctly parse an https url with a reference", function() {
- var parts = git.parseUrl("git+https://gist.github.com/69ea4542e4c8967d2fa7.git/test.md#0.1.2");
+ describe('URL parsing', function() {
- should.exist(parts);
- parts.host.should.be.equal("https://gist.github.com/69ea4542e4c8967d2fa7.git");
- parts.ref.should.be.equal("0.1.2");
- parts.filepath.should.be.equal("test.md");
- });
+ it('should correctly validate git urls', function() {
+ // HTTPS
+ Git.isUrl('git+https://github.com/Hello/world.git').should.be.ok();
+
+ // SSH
+ Git.isUrl('git+git@github.com:GitbookIO/gitbook.git/directory/README.md#e1594cde2c32e4ff48f6c4eff3d3d461743d74e1').should.be.ok;
+
+ // Non valid
+ Git.isUrl('https://github.com/Hello/world.git').should.not.be.ok();
+ Git.isUrl('README.md').should.not.be.ok();
+ });
+
+ it('should parse HTTPS urls', function() {
+ var parts = Git.parseUrl('git+https://gist.github.com/69ea4542e4c8967d2fa7.git/test.md');
+
+ should.exist(parts);
+ parts.host.should.be.equal('https://gist.github.com/69ea4542e4c8967d2fa7.git');
+ should(parts.ref).be.equal(null);
+ parts.filepath.should.be.equal('test.md');
+ });
- it("should correctly parse an ssh url", function() {
- var parts = git.parseUrl("git+git@github.com:GitbookIO/gitbook.git/directory/README.md#e1594cde2c32e4ff48f6c4eff3d3d461743d74e1");
+ it('should parse HTTPS urls with a reference', function() {
+ var parts = Git.parseUrl('git+https://gist.github.com/69ea4542e4c8967d2fa7.git/test.md#1.0.0');
- should.exist(parts);
- parts.host.should.be.equal("git@github.com:GitbookIO/gitbook.git");
- parts.ref.should.be.equal("e1594cde2c32e4ff48f6c4eff3d3d461743d74e1");
- parts.filepath.should.be.equal("directory/README.md");
+ should.exist(parts);
+ parts.host.should.be.equal('https://gist.github.com/69ea4542e4c8967d2fa7.git');
+ parts.ref.should.be.equal('1.0.0');
+ parts.filepath.should.be.equal('test.md');
+ });
+
+ it('should parse SSH urls', function() {
+ var parts = Git.parseUrl('git+git@github.com:GitbookIO/gitbook.git/directory/README.md#e1594cde2c32e4ff48f6c4eff3d3d461743d74e1');
+
+ should.exist(parts);
+ parts.host.should.be.equal('git@github.com:GitbookIO/gitbook.git');
+ parts.ref.should.be.equal('e1594cde2c32e4ff48f6c4eff3d3d461743d74e1');
+ parts.filepath.should.be.equal('directory/README.md');
+ });
});
+
+ describe('Cloning and resolving', function() {
+ it('should clone an HTTPS url', function() {
+ var git = new Git(path.join(os.tmpdir(), 'test-git-'+Date.now()));
+ return git.resolve('git+https://gist.github.com/69ea4542e4c8967d2fa7.git/test.md')
+ .then(function(filename) {
+ path.extname(filename).should.equal('.md');
+ });
+ });
+ });
+
});