UNPKG

6.37 kBJavaScriptView Raw
1var assert = require('assert')
2var download = require('..')
3var read = require('fs-readdir-recursive')
4var rm = require('rimraf').sync
5
6describe('download-git-repo', function () {
7 this.timeout(20000)
8
9 beforeEach(function () {
10 rm('test/tmp')
11 })
12
13 var filter = function (x) {
14 return x[0] !== '.' || x === '.git'
15 }
16
17 var runStyle = function (type, style) {
18 var clone = false
19 if (style === 'clones') {
20 clone = true
21 }
22
23 it(style + ' master branch by default', function (done) {
24 download(type + ':flipxfx/download-git-repo-fixture', 'test/tmp', { clone: clone }, function (err) {
25 if (err) return done(err)
26 var actual = read('test/tmp', filter)
27 var expected = read('test/fixtures/' + type + '/master')
28 assert.deepEqual(actual, expected)
29 done()
30 })
31 })
32
33 it(style + ' a branch', function (done) {
34 download(type + ':flipxfx/download-git-repo-fixture#my-branch', 'test/tmp', { clone: clone }, function (err) {
35 if (err) return done(err)
36 var actual = read('test/tmp', filter)
37 var expected = read('test/fixtures/' + type + '/my-branch')
38 assert.deepEqual(actual, expected)
39 done()
40 })
41 })
42
43 it(style + ' a branch with slashes', function (done) {
44 download(type + ':flipxfx/download-git-repo-fixture#my/branch/with/slashes', 'test/tmp', { clone: clone }, function (err) {
45 if (err) return done(err)
46 var actual = read('test/tmp', filter)
47 var expected = read('test/fixtures/' + type + '/my-branch-with-slashes')
48 assert.deepEqual(actual, expected)
49 done()
50 })
51 })
52
53 it(style + ' master branch with specific origin', function (done) {
54 download(type + ':' + type + '.com:flipxfx/download-git-repo-fixture', 'test/tmp', { clone: clone }, function (err) {
55 if (err) return done(err)
56 var actual = read('test/tmp', filter)
57 var expected = read('test/fixtures/' + type + '/master')
58 assert.deepEqual(actual, expected)
59 done()
60 })
61 })
62
63 it(style + ' master branch with specific origin and protocol', function (done) {
64 download(type + ':https://' + type + '.com:flipxfx/download-git-repo-fixture', 'test/tmp', { clone: clone }, function (err) {
65 if (err) return done(err)
66 var actual = read('test/tmp', filter)
67 var expected = read('test/fixtures/' + type + '/master')
68 assert.deepEqual(actual, expected)
69 done()
70 })
71 })
72 }
73
74 var runType = function (type) {
75 runStyle(type, 'downloads')
76
77 runStyle(type, 'clones')
78
79 it('clones master branch with specific origin without type', function (done) {
80 download(type + '.com:flipxfx/download-git-repo-fixture', 'test/tmp', { clone: true }, function (err) {
81 if (err) return done(err)
82 var actual = read('test/tmp', filter)
83 var expected = read('test/fixtures/' + type + '/master')
84 assert.deepEqual(actual, expected)
85 done()
86 })
87 })
88
89 it('clones master branch with specific origin and protocol without type', function (done) {
90 download('https://' + type + '.com:flipxfx/download-git-repo-fixture', 'test/tmp', { clone: true }, function (err) {
91 if (err) return done(err)
92 var actual = read('test/tmp', filter)
93 var expected = read('test/fixtures/' + type + '/master')
94 assert.deepEqual(actual, expected)
95 done()
96 })
97 })
98 }
99
100 describe('via github', function () {
101 runType('github')
102
103 it('downloads from github by default', function (done) {
104 download('flipxfx/download-git-repo-fixture', 'test/tmp', function (err) {
105 if (err) return done(err)
106 var actual = read('test/tmp', filter)
107 var expected = read('test/fixtures/github/master')
108 assert.deepEqual(actual, expected)
109 done()
110 })
111 })
112 })
113
114 describe('via gitlab', function () {
115 runType('gitlab')
116 })
117
118 describe('via bitbucket', function () {
119 runType('bitbucket')
120 })
121
122 describe('via direct', function () {
123 it('downloads master branch', function (done) {
124 download('direct:https://gitlab.com/flipxfx/download-git-repo-fixture/repository/archive.zip', 'test/tmp', function (err) {
125 var actual = read('test/tmp', filter)
126 var expected = read('test/fixtures/gitlab/master')
127 assert.deepEqual(actual, expected)
128 done()
129 })
130 })
131
132 it('downloads master branch file filter', function (done) {
133 download('direct:https://gitlab.com/flipxfx/download-git-repo-fixture/repository/archive.zip', 'test/tmp', { filter: file => file.path.slice(-3) === '.md' }, function (err) {
134 var actual = read('test/tmp', filter)
135 var expected = read('test/fixtures/gitlab/master-only-md')
136 assert.deepEqual(actual, expected)
137 done()
138 })
139 })
140
141 it('downloads a branch', function (done) {
142 download('direct:https://gitlab.com/flipxfx/download-git-repo-fixture/repository/archive.zip?ref=my-branch', 'test/tmp', function (err) {
143 var actual = read('test/tmp', filter)
144 var expected = read('test/fixtures/gitlab/my-branch')
145 assert.deepEqual(actual, expected)
146 done()
147 })
148 })
149
150 it('clones master branch', function (done) {
151 download('direct:https://gitlab.com/flipxfx/download-git-repo-fixture.git', 'test/tmp', { clone: true }, function (err) {
152 var actual = read('test/tmp', filter)
153 var expected = read('test/fixtures/gitlab/master')
154 assert.deepEqual(actual, expected)
155 done()
156 })
157 })
158
159 it('clones a branch', function (done) {
160 download('direct:https://gitlab.com/flipxfx/download-git-repo-fixture.git#my-branch', 'test/tmp', { clone: true }, function (err) {
161 var actual = read('test/tmp', filter)
162 var expected = read('test/fixtures/gitlab/my-branch')
163 assert.deepEqual(actual, expected)
164 done()
165 })
166 })
167
168 it('clones a branch because options', function (done) {
169 download('direct:https://gitlab.com/flipxfx/download-git-repo-fixture.git', 'test/tmp', { clone: true, checkout: 'my-branch', shallow: false }, function (err) {
170 var actual = read('test/tmp', filter)
171 var expected = read('test/fixtures/gitlab/my-branch')
172 assert.deepEqual(actual, expected)
173 done()
174 })
175 })
176 })
177})