diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-04-30 12:30:56 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-04-30 12:30:56 +0200 |
commit | fbe028273828bc8518e92e87fcbd2a6718dc91e2 (patch) | |
tree | 3d081fd460f5c6fd9f1722ee5c4c3537fc763b1d /lib/utils | |
parent | 5bad08b9a0756c46eebf6d8460c959ec388d7e74 (diff) | |
download | gitbook-fbe028273828bc8518e92e87fcbd2a6718dc91e2.zip gitbook-fbe028273828bc8518e92e87fcbd2a6718dc91e2.tar.gz gitbook-fbe028273828bc8518e92e87fcbd2a6718dc91e2.tar.bz2 |
Add tests for git utility
Diffstat (limited to 'lib/utils')
-rw-r--r-- | lib/utils/__tests__/git.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/utils/__tests__/git.js b/lib/utils/__tests__/git.js new file mode 100644 index 0000000..6eed81e --- /dev/null +++ b/lib/utils/__tests__/git.js @@ -0,0 +1,58 @@ +var should = require('should'); +var path = require('path'); +var os = require('os'); + +var Git = require('../git'); + +describe('Git', function() { + + describe('URL parsing', function() { + + it('should correctly validate git urls', function() { + // HTTPS + expect(Git.isUrl('git+https://github.com/Hello/world.git')).toBeTruthy(); + + // SSH + expect(Git.isUrl('git+git@github.com:GitbookIO/gitbook.git/directory/README.md#e1594cde2c32e4ff48f6c4eff3d3d461743d74e1')).toBeTruthy(); + + // Non valid + expect(Git.isUrl('https://github.com/Hello/world.git')).not.toBeTruthy(); + expect(Git.isUrl('README.md')).not.toBeTruthy(); + }); + + it('should parse HTTPS urls', function() { + var parts = Git.parseUrl('git+https://gist.github.com/69ea4542e4c8967d2fa7.git/test.md'); + + expect(parts.host).toBe('https://gist.github.com/69ea4542e4c8967d2fa7.git'); + expect(parts.ref).toBe(null); + expect(parts.filepath).toBe('test.md'); + }); + + 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'); + + expect(parts.host).toBe('https://gist.github.com/69ea4542e4c8967d2fa7.git'); + expect(parts.ref).toBe('1.0.0'); + expect(parts.filepath).toBe('test.md'); + }); + + it('should parse SSH urls', function() { + var parts = Git.parseUrl('git+git@github.com:GitbookIO/gitbook.git/directory/README.md#e1594cde2c32e4ff48f6c4eff3d3d461743d74e1'); + + expect(parts.host).toBe('git@github.com:GitbookIO/gitbook.git'); + expect(parts.ref).toBe('e1594cde2c32e4ff48f6c4eff3d3d461743d74e1'); + expect(parts.filepath).toBe('directory/README.md'); + }); + }); + + describe('Cloning and resolving', function() { + pit('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) { + expect(path.extname(filename)).toBe('.md'); + }); + }); + }); + +}); |