1 | 'use strict';
|
2 |
|
3 | var _ava = require('ava');
|
4 |
|
5 | var _ava2 = _interopRequireDefault(_ava);
|
6 |
|
7 | var _execa = require('execa');
|
8 |
|
9 | var _execa2 = _interopRequireDefault(_execa);
|
10 |
|
11 | var _test = require('@commitlint/test');
|
12 |
|
13 | var _sander = require('@marionebl/sander');
|
14 |
|
15 | var sander = _interopRequireWildcard(_sander);
|
16 |
|
17 | var _ = require('.');
|
18 |
|
19 | var _2 = _interopRequireDefault(_);
|
20 |
|
21 | function _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 |
|
23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
24 |
|
25 | var 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 |
|
\ | No newline at end of file |