UNPKG

7.3 kBJavaScriptView Raw
1'use strict';
2
3var _ava = require('ava');
4
5var _ava2 = _interopRequireDefault(_ava);
6
7var _execa = require('execa');
8
9var _execa2 = _interopRequireDefault(_execa);
10
11var _test = require('@commitlint/test');
12
13var _sander = require('@marionebl/sander');
14
15var sander = _interopRequireWildcard(_sander);
16
17var _ = require('.');
18
19var _2 = _interopRequireDefault(_);
20
21function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
22
23function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
25var id = function id(_id) {
26 return _id;
27};
28
29(0, _ava2.default)('returns empty object when called without params', function (t) {
30 var actual = (0, _2.default)();
31 t.deepEqual(actual, {});
32});
33
34(0, _ava2.default)('returns an equivalent object as passed in', function (t) {
35 var expected = { foo: 'bar' };
36 var actual = (0, _2.default)(expected);
37 t.deepEqual(actual, expected);
38});
39
40_ava2.default.serial('falls back to global install', function (t) {
41 return new Promise(function ($return, $error) {
42 var prev, cwd, prefix, npm, expected;
43
44 prev = process.env.PREFIX;
45
46 return Promise.resolve(_test.fix.bootstrap('fixtures/global-install')).then(function ($await_1) {
47 try {
48 cwd = $await_1;
49 prefix = `${cwd}/commitlint-npm-packages`;
50
51 npm = function npm(args) {
52 return (0, _execa2.default)('npm', args, { cwd });
53 };
54
55 return Promise.resolve(sander.mkdir(cwd, 'commitlint-npm-packages')).then(function ($await_2) {
56 try {
57
58 process.env.PREFIX = prefix;
59
60 return Promise.resolve(npm(['install', '--global', '@commitlint/config-angular', '--prefix', prefix])).then(function ($await_3) {
61 try {
62
63 expected = { extends: ['@commitlint/config-angular'] };
64 t.notThrows(function () {
65 return (0, _2.default)(expected);
66 });
67
68 process.env.PREFIX = prev;
69 return $return();
70 } catch ($boundEx) {
71 return $error($boundEx);
72 }
73 }.bind(this), $error);
74 } catch ($boundEx) {
75 return $error($boundEx);
76 }
77 }.bind(this), $error);
78 } catch ($boundEx) {
79 return $error($boundEx);
80 }
81 }.bind(this), $error);
82 }.bind(this));
83});
84
85_ava2.default.serial('fails for missing extends', function (t) {
86 return new Promise(function ($return, $error) {
87 var prev, cwd, prefix, input;
88
89 prev = process.env.PREFIX;
90
91 return Promise.resolve(_test.fix.bootstrap('fixtures/missing-install')).then(function ($await_4) {
92 try {
93 cwd = $await_4;
94 prefix = `${cwd}/commitlint-npm-packages`;
95
96 process.env.PREFIX = prefix;
97
98 input = { extends: ['@commitlint/foo-bar'] };
99
100 t.throws(function () {
101 return (0, _2.default)(input, { cwd });
102 }, /Cannot find module "@commitlint\/foo-bar" from/);
103
104 process.env.PREFIX = prev;
105 return $return();
106 } catch ($boundEx) {
107 return $error($boundEx);
108 }
109 }.bind(this), $error);
110 }.bind(this));
111});
112
113(0, _ava2.default)('uses empty prefix by default', function (t) {
114 var input = { extends: ['extender-name'] };
115
116 (0, _2.default)(input, {
117 resolve: id,
118 require(id) {
119 t.is(id, 'extender-name');
120 }
121 });
122});
123
124(0, _ava2.default)('uses prefix as configured', function (t) {
125 var input = { extends: ['extender-name'] };
126
127 (0, _2.default)(input, {
128 prefix: 'prefix',
129 resolve: id,
130 require(id) {
131 t.is(id, 'prefix-extender-name');
132 }
133 });
134});
135
136(0, _ava2.default)('ignores prefix for scoped extends', function (t) {
137 var input = { extends: ['@scope/extender-name'] };
138
139 (0, _2.default)(input, {
140 prefix: 'prefix',
141 resolve: id,
142 require(id) {
143 t.is(id, '@scope/extender-name');
144 }
145 });
146});
147
148(0, _ava2.default)('ignores prefix for relative extends', function (t) {
149 var input = { extends: ['./extender'] };
150
151 (0, _2.default)(input, {
152 prefix: 'prefix',
153 resolve: id,
154 require(id) {
155 t.is(id, './extender');
156 }
157 });
158});
159
160(0, _ava2.default)('propagates return value of require function', function (t) {
161 var input = { extends: ['extender-name'] };
162 var propagated = { foo: 'bar' };
163
164 var actual = (0, _2.default)(input, {
165 resolve: id,
166 require() {
167 return propagated;
168 }
169 });
170
171 t.is(actual.foo, 'bar');
172});
173
174(0, _ava2.default)('resolves extends recursively', function (t) {
175 var input = { extends: ['extender-name'] };
176 var actual = [];
177
178 (0, _2.default)(input, {
179 resolve: id,
180 require(id) {
181 actual.push(id);
182 if (id === 'extender-name') {
183 return { extends: ['recursive-extender-name'] };
184 }
185 if (id === 'recursive-extender-name') {
186 return { foo: 'bar' };
187 }
188 }
189 });
190
191 t.deepEqual(actual, ['extender-name', 'recursive-extender-name']);
192});
193
194(0, _ava2.default)('uses prefix key recursively', function (t) {
195 var input = { extends: ['extender-name'] };
196 var actual = [];
197
198 (0, _2.default)(input, {
199 prefix: 'prefix',
200 resolve: id,
201 require(id) {
202 actual.push(id);
203 if (id === 'prefix-extender-name') {
204 return { extends: ['recursive-extender-name'] };
205 }
206 if (id === 'prefix-recursive-extender-name') {
207 return { foo: 'bar' };
208 }
209 }
210 });
211
212 t.deepEqual(actual, ['prefix-extender-name', 'prefix-recursive-extender-name']);
213});
214
215(0, _ava2.default)('propagates contents recursively', function (t) {
216 var input = { extends: ['extender-name'] };
217
218 var actual = (0, _2.default)(input, {
219 resolve: id,
220 require(id) {
221 if (id === 'extender-name') {
222 return { extends: ['recursive-extender-name'], foo: 'bar' };
223 }
224 if (id === 'recursive-extender-name') {
225 return { baz: 'bar' };
226 }
227 }
228 });
229
230 var expected = {
231 extends: ['extender-name'],
232 foo: 'bar',
233 baz: 'bar'
234 };
235
236 t.deepEqual(actual, expected);
237});
238
239(0, _ava2.default)('extending contents should take precedence', function (t) {
240 var input = { extends: ['extender-name'], zero: 'root' };
241
242 var actual = (0, _2.default)(input, {
243 resolve: id,
244 require(id) {
245 if (id === 'extender-name') {
246 return { extends: ['recursive-extender-name'], zero: id, one: id };
247 }
248 if (id === 'recursive-extender-name') {
249 return {
250 extends: ['second-recursive-extender-name'],
251 zero: id,
252 one: id,
253 two: id
254 };
255 }
256 if (id === 'second-recursive-extender-name') {
257 return { zero: id, one: id, two: id, three: id };
258 }
259 }
260 });
261
262 var expected = {
263 extends: ['extender-name'],
264 zero: 'root',
265 one: 'extender-name',
266 two: 'recursive-extender-name',
267 three: 'second-recursive-extender-name'
268 };
269
270 t.deepEqual(actual, expected);
271});
272
273(0, _ava2.default)('should fall back to conventional-changelog-lint-config prefix', function (t) {
274 var input = { extends: ['extender-name'] };
275
276 var actual = (0, _2.default)(input, {
277 prefix: 'prefix',
278 resolve(id) {
279 if (id === 'conventional-changelog-lint-config-extender-name') {
280 return 'conventional-changelog-lint-config-extender-name';
281 }
282 throw new Error(`Could not find module "*${id}"`);
283 },
284 require(id) {
285 if (id === 'conventional-changelog-lint-config-extender-name') {
286 return {
287 rules: {
288 fallback: true
289 }
290 };
291 }
292 }
293 });
294
295 t.deepEqual(actual, {
296 extends: ['extender-name'],
297 rules: {
298 fallback: true
299 }
300 });
301});
302//# sourceMappingURL=index.test.js.map
\No newline at end of file