source: frontend/node_modules/jake/test/integration/jakefile.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 9.4 KB
RevLine 
[9af201e]1let fs = require('fs');
2let Q = require('q');
3
4desc('The default t.');
5task('default', function () {
6 console.log('default task');
7});
8
9desc('No action.');
10task({'noAction': ['default']});
11
12desc('No action, no prereqs.');
13task('noActionNoPrereqs');
14
15desc('Top-level zerbofrangazoomy task');
16task('zerbofrangazoomy', function () {
17 console.log('Whaaaaaaaa? Ran the zerbofrangazoomy task!');
18});
19
20desc('Task that throws');
21task('throwy', function () {
22 let errorListener = function (err) {
23 console.log('Emitted');
24 console.log(err.toString());
25
26 jake.removeListener('error', errorListener);
27 };
28
29 jake.on('error', errorListener);
30
31 throw new Error('I am bad');
32});
33
34desc('Task that rejects a Promise');
35task('promiseRejecter', function () {
36 const originalOption = jake.program.opts['allow-rejection'];
37
38 const errorListener = function (err) {
39 console.log(err.toString());
40 jake.removeListener('error', errorListener);
41 jake.program.opts['allow-rejection'] = originalOption; // Restore original 'allow-rejection' option
42 };
43 jake.on('error', errorListener);
44
45 jake.program.opts['allow-rejection'] = false; // Do not allow rejection so the rejection is passed to error handlers
46
47 Promise.reject('<promise rejected on purpose>');
48});
49
50desc('Accepts args and env vars.');
51task('argsEnvVars', function () {
52 let res = {
53 args: arguments
54 , env: {
55 foo: process.env.foo
56 , baz: process.env.baz
57 }
58 };
59 console.log(JSON.stringify(res));
60});
61
62namespace('foo', function () {
63 desc('The foo:bar t.');
64 task('bar', function () {
65 if (arguments.length) {
66 console.log('foo:bar[' +
67 Array.prototype.join.call(arguments, ',') +
68 '] task');
69 }
70 else {
71 console.log('foo:bar task');
72 }
73 });
74
75 desc('The foo:baz task, calls foo:bar as a prerequisite.');
76 task('baz', ['foo:bar'], function () {
77 console.log('foo:baz task');
78 });
79
80 desc('The foo:qux task, calls foo:bar with cmdline args as a prerequisite.');
81 task('qux', ['foo:bar[asdf,qwer]'], function () {
82 console.log('foo:qux task');
83 });
84
85 desc('The foo:frang task,`invokes` foo:bar with passed args as a prerequisite.');
86 task('frang', function () {
87 let t = jake.Task['foo:bar'];
88 // Do args pass-through
89 t.invoke.apply(t, arguments);
90 t.on('complete', () => {
91 console.log('foo:frang task');
92 });
93 });
94
95 desc('The foo:zerb task, `executes` foo:bar with passed args as a prerequisite.');
96 task('zerb', function () {
97 let t = jake.Task['foo:bar'];
98 // Do args pass-through
99 t.execute.apply(t, arguments);
100 t.on('complete', () => {
101 console.log('foo:zerb task');
102 });
103 });
104
105 desc('The foo:zoobie task, has no prerequisites.');
106 task('zoobie', function () {
107 console.log('foo:zoobie task');
108 });
109
110 desc('The foo:voom task, run the foo:zoobie task repeatedly.');
111 task('voom', function () {
112 let t = jake.Task['foo:bar'];
113 t.on('complete', function () {
114 console.log('complete');
115 });
116 t.execute.apply(t);
117 t.execute.apply(t);
118 });
119
120 desc('The foo:asdf task, has the same prereq twice.');
121 task('asdf', ['foo:bar', 'foo:baz'], function () {
122 console.log('foo:asdf task');
123 });
124
125});
126
127namespace('bar', function () {
128 desc('The bar:foo task, has no prerequisites, is async, returns Promise which resolves.');
129 task('foo', async function () {
130 return new Promise((resolve, reject) => {
131 console.log('bar:foo task');
132 resolve();
133 });
134 });
135
136 desc('The bar:promise task has no prerequisites, is async, returns Q-based promise.');
137 task('promise', function () {
138 return Q()
139 .then(function () {
140 console.log('bar:promise task');
141 return 123654;
142 });
143 });
144
145 desc('The bar:dependOnpromise task waits for a promise based async test');
146 task('dependOnpromise', ['promise'], function () {
147 console.log('bar:dependOnpromise task saw value', jake.Task["bar:promise"].value);
148 });
149
150 desc('The bar:brokenPromise task is a failing Q-promise based async task.');
151 task('brokenPromise', function () {
152 return Q()
153 .then(function () {
154 throw new Error("nom nom nom");
155 });
156 });
157
158 desc('The bar:bar task, has the async bar:foo task as a prerequisite.');
159 task('bar', ['bar:foo'], function () {
160 console.log('bar:bar task');
161 });
162
163});
164
165namespace('hoge', function () {
166 desc('The hoge:hoge task, has no prerequisites.');
167 task('hoge', function () {
168 console.log('hoge:hoge task');
169 });
170
171 desc('The hoge:piyo task, has no prerequisites.');
172 task('piyo', function () {
173 console.log('hoge:piyo task');
174 });
175
176 desc('The hoge:fuga task, has hoge:hoge and hoge:piyo as prerequisites.');
177 task('fuga', ['hoge:hoge', 'hoge:piyo'], function () {
178 console.log('hoge:fuga task');
179 });
180
181 desc('The hoge:charan task, has hoge:fuga as a prerequisite.');
182 task('charan', ['hoge:fuga'], function () {
183 console.log('hoge:charan task');
184 });
185
186 desc('The hoge:gero task, has hoge:fuga as a prerequisite.');
187 task('gero', ['hoge:fuga'], function () {
188 console.log('hoge:gero task');
189 });
190
191 desc('The hoge:kira task, has hoge:charan and hoge:gero as prerequisites.');
192 task('kira', ['hoge:charan', 'hoge:gero'], function () {
193 console.log('hoge:kira task');
194 });
195
196});
197
198namespace('fileTest', function () {
199 directory('foo');
200
201 desc('File task, concatenating two files together');
202 file('foo/concat.txt', ['fileTest:foo', 'fileTest:foo/src1.txt', 'fileTest:foo/src2.txt'], function () {
203 console.log('fileTest:foo/concat.txt task');
204 let data1 = fs.readFileSync('foo/src1.txt');
205 let data2 = fs.readFileSync('foo/src2.txt');
206 fs.writeFileSync('foo/concat.txt', data1 + data2);
207 });
208
209 desc('File task, async creation with writeFile');
210 file('foo/src1.txt', function () {
211 return new Promise(function (resolve, reject) {
212 fs.writeFile('foo/src1.txt', 'src1', function (err) {
213 if (err) {
214 reject(err);
215 }
216 else {
217 console.log('fileTest:foo/src1.txt task');
218 resolve();
219 }
220 });
221 });
222 });
223
224 desc('File task, sync creation with writeFileSync');
225 file('foo/src2.txt', ['default'], function () {
226 fs.writeFileSync('foo/src2.txt', 'src2');
227 console.log('fileTest:foo/src2.txt task');
228 });
229
230 desc('File task, do not run unless the prereq file changes');
231 file('foo/from-src1.txt', ['fileTest:foo', 'fileTest:foo/src1.txt'], function () {
232 let data = fs.readFileSync('foo/src1.txt').toString();
233 fs.writeFileSync('foo/from-src1.txt', data);
234 console.log('fileTest:foo/from-src1.txt task');
235 });
236
237 desc('File task, run if the prereq file changes');
238 task('touch-prereq', function () {
239 fs.writeFileSync('foo/prereq.txt', 'UPDATED');
240 });
241
242 desc('File task, has a preexisting file (with no associated task) as a prereq');
243 file('foo/from-prereq.txt', ['fileTest:foo', 'foo/prereq.txt'], function () {
244 let data = fs.readFileSync('foo/prereq.txt');
245 fs.writeFileSync('foo/from-prereq.txt', data);
246 console.log('fileTest:foo/from-prereq.txt task');
247 });
248
249 directory('foo/bar/baz');
250
251 desc('Write a file in a nested subdirectory');
252 file('foo/bar/baz/bamf.txt', ['foo/bar/baz'], function () {
253 fs.writeFileSync('foo/bar/baz/bamf.txt', 'w00t');
254 });
255
256 file('foo/output1.txt', ['foo'], () => {
257 fs.writeFileSync('foo/output1.txt', 'Contents of foo/output1.txt');
258 });
259
260 file('foo/output2a.txt', ['foo/output1.txt'], () => {
261 fs.writeFileSync('foo/output2a.txt', 'Contents of foo/output2a.txt');
262 });
263
264 file('foo/output2b.txt', ['foo/output1.txt'], () => {
265 fs.writeFileSync('foo/output2b.txt', 'Contents of foo/output2b.txt');
266 });
267
268 file('foo/output3.txt', [ 'foo/output2a.txt', 'foo/output2b.txt'], () => {
269 fs.writeFileSync('foo/output3.txt', 'w00t');
270 });
271});
272
273task('blammo');
274// Define task
275task('voom', ['blammo'], function () {
276 console.log(this.prereqs.length);
277});
278
279// Modify, add a prereq
280task('voom', ['noActionNoPrereqs']);
281
282namespace('vronk', function () {
283 task('groo', function () {
284 let t = jake.Task['vronk:zong'];
285 t.addListener('error', function (e) {
286 console.log(e.message);
287 });
288 t.invoke();
289 });
290 task('zong', function () {
291 throw new Error('OMFGZONG');
292 });
293});
294
295// define namespace
296namespace('one', function () {
297 task('one', function () {
298 console.log('one:one');
299 });
300});
301
302// modify namespace (add task)
303namespace('one', function () {
304 task('two', ['one:one'], function () {
305 console.log('one:two');
306 });
307});
308
309task('selfdepconst', [], function () {
310 task('selfdep', ['selfdep'], function () {
311 console.log("I made a task that depends on itself");
312 });
313});
314task('selfdepdyn', function () {
315 task('selfdeppar', [], {concurrency: 2}, function () {
316 console.log("I will depend on myself and will fail at runtime");
317 });
318 task('selfdeppar', ['selfdeppar']);
319 jake.Task['selfdeppar'].invoke();
320});
321
322namespace("large", function () {
323 task("leaf", function () {
324 console.log("large:leaf");
325 });
326
327 const same = [];
328 for (let i = 0; i < 2000; i++) {
329 same.push("leaf");
330 }
331
332 desc("Task with a large number of same prereqs");
333 task("same", same, { concurrency: 2 }, function () {
334 console.log("large:same");
335 });
336
337 const different = [];
338 for (let i = 0; i < 2000; i++) {
339 const name = "leaf-" + i;
340 task(name, function () {
341 if (name === "leaf-12" || name === "leaf-123") {
342 console.log(name);
343 }
344 });
345 different.push(name);
346 }
347
348 desc("Task with a large number of different prereqs");
349 task("different", different, { concurrency: 2 } , function () {
350 console.log("large:different");
351 });
352});
Note: See TracBrowser for help on using the repository browser.