mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-16 07:35:16 +00:00
Add tests for git utility
This commit is contained in:
@@ -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');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user