UNPKG

13.7 kBJavaScriptView Raw
1/* @flow */
2
3import 'babel-polyfill'
4
5import File from '../../src/File'
6import ParseLaTeXLog from '../../src/Rules/ParseLaTeXLog'
7import { initializeRule } from '../helpers'
8
9import type { RuleDefinition } from '../helpers'
10
11async function initialize ({
12 RuleClass = ParseLaTeXLog,
13 filePath = 'error-warning.tex',
14 parameters = [{
15 filePath: 'error-warning.log'
16 }],
17 ...rest }: RuleDefinition = {}) {
18 return initializeRule({ RuleClass, filePath, parameters, ...rest })
19}
20
21describe('ParseLaTeXLog', () => {
22 it('verifies that all log messages are successfully parsed.', async (done) => {
23 const sourceName = 'error-warning.tex'
24 const logName = 'error-warning.log'
25 const { rule } = await initialize()
26 const messages = [{
27 name: 'pdfTeX',
28 severity: 'info',
29 text: 'expl3 2017/05/29 L3 programming layer (loader)',
30 source: {
31 file: sourceName
32 },
33 log: {
34 file: logName,
35 range: {
36 start: 27,
37 end: 27
38 }
39 }
40 }, {
41 name: 'pdfTeX',
42 severity: 'info',
43 text: 'expl3 2017/05/29 L3 programming layer (code)',
44 source: {
45 file: sourceName
46 },
47 log: {
48 file: logName,
49 range: {
50 start: 29,
51 end: 29
52 }
53 }
54 }, {
55 severity: 'info',
56 name: 'pdfTeX',
57 category: 'LaTeX Font',
58 text: 'Checking defaults for OML/cmm/m/it',
59 source: {
60 file: sourceName,
61 range: {
62 start: 5,
63 end: 5
64 }
65 },
66 log: {
67 file: logName,
68 range: {
69 start: 177,
70 end: 177
71 }
72 }
73 }, {
74 severity: 'info',
75 name: 'pdfTeX',
76 category: 'LaTeX Font',
77 text: '... okay',
78 source: {
79 file: sourceName,
80 range: {
81 start: 5,
82 end: 5
83 }
84 },
85 log: {
86 file: logName,
87 range: {
88 start: 178,
89 end: 178
90 }
91 }
92 }, {
93 severity: 'info',
94 name: 'pdfTeX',
95 category: 'LaTeX Font',
96 text: 'Checking defaults for T1/cmr/m/n',
97 source: {
98 file: sourceName,
99 range: {
100 start: 5,
101 end: 5
102 }
103 },
104 log: {
105 file: logName,
106 range: {
107 start: 179,
108 end: 179
109 }
110 }
111 }, {
112 severity: 'info',
113 name: 'pdfTeX',
114 category: 'LaTeX Font',
115 text: '... okay',
116 source: {
117 file: sourceName,
118 range: {
119 start: 5,
120 end: 5
121 }
122 },
123 log: {
124 file: logName,
125 range: {
126 start: 180,
127 end: 180
128 }
129 }
130 }, {
131 severity: 'info',
132 name: 'pdfTeX',
133 category: 'LaTeX Font',
134 text: 'Checking defaults for OT1/cmr/m/n',
135 source: {
136 file: sourceName,
137 range: {
138 start: 5,
139 end: 5
140 }
141 },
142 log: {
143 file: logName,
144 range: {
145 start: 181,
146 end: 181
147 }
148 }
149 }, {
150 severity: 'info',
151 name: 'pdfTeX',
152 category: 'LaTeX Font',
153 text: '... okay',
154 source: {
155 file: sourceName,
156 range: {
157 start: 5,
158 end: 5
159 }
160 },
161 log: {
162 file: logName,
163 range: {
164 start: 182,
165 end: 182
166 }
167 }
168 }, {
169 severity: 'info',
170 name: 'pdfTeX',
171 category: 'LaTeX Font',
172 text: 'Checking defaults for OMS/cmsy/m/n',
173 source: {
174 file: sourceName,
175 range: {
176 start: 5,
177 end: 5
178 }
179 },
180 log: {
181 file: logName,
182 range: {
183 start: 183,
184 end: 183
185 }
186 }
187 }, {
188 severity: 'info',
189 name: 'pdfTeX',
190 category: 'LaTeX Font',
191 text: '... okay',
192 source: {
193 file: sourceName,
194 range: {
195 start: 5,
196 end: 5
197 }
198 },
199 log: {
200 file: logName,
201 range: {
202 start: 184,
203 end: 184
204 }
205 }
206 }, {
207 severity: 'info',
208 name: 'pdfTeX',
209 category: 'LaTeX Font',
210 text: 'Checking defaults for OMX/cmex/m/n',
211 source: {
212 file: sourceName,
213 range: {
214 start: 5,
215 end: 5
216 }
217 },
218 log: {
219 file: logName,
220 range: {
221 start: 185,
222 end: 185
223 }
224 }
225 }, {
226 severity: 'info',
227 name: 'pdfTeX',
228 category: 'LaTeX Font',
229 text: '... okay',
230 source: {
231 file: sourceName,
232 range: {
233 start: 5,
234 end: 5
235 }
236 },
237 log: {
238 file: logName,
239 range: {
240 start: 186,
241 end: 186
242 }
243 }
244 }, {
245 severity: 'info',
246 name: 'pdfTeX',
247 category: 'LaTeX Font',
248 text: 'Checking defaults for U/cmr/m/n',
249 source: {
250 file: sourceName,
251 range: {
252 start: 5,
253 end: 5
254 }
255 },
256 log: {
257 file: logName,
258 range: {
259 start: 187,
260 end: 187
261 }
262 }
263 }, {
264 severity: 'info',
265 name: 'pdfTeX',
266 category: 'LaTeX Font',
267 text: '... okay',
268 source: {
269 file: sourceName,
270 range: {
271 start: 5,
272 end: 5
273 }
274 },
275 log: {
276 file: logName,
277 range: {
278 start: 188,
279 end: 188
280 }
281 }
282 }, {
283 severity: 'error',
284 name: 'pdfTeX',
285 category: 'LaTeX',
286 text: 'There\'s no line here to end',
287 log: {
288 file: logName,
289 range: {
290 start: 190,
291 end: 190
292 }
293 },
294 source: {
295 file: sourceName,
296 range: {
297 start: 12,
298 end: 12
299 }
300 }
301 }, {
302 severity: 'info',
303 name: 'pdfTeX',
304 category: 'LaTeX Font',
305 text: 'External font `cmex10\' loaded for size <14.4>.',
306 source: {
307 file: sourceName,
308 range: {
309 start: 17,
310 end: 17
311 }
312 },
313 log: {
314 file: logName,
315 range: {
316 start: 202,
317 end: 203
318 }
319 }
320 }, {
321 severity: 'info',
322 name: 'pdfTeX',
323 category: 'LaTeX Font',
324 text: 'External font `cmex10\' loaded for size <7>.',
325 source: {
326 file: sourceName,
327 range: {
328 start: 17,
329 end: 17
330 }
331 },
332 log: {
333 file: logName,
334 range: {
335 start: 204,
336 end: 205
337 }
338 }
339 }, {
340 severity: 'info',
341 name: 'pdfTeX',
342 category: 'LaTeX Font',
343 text: 'External font `cmex10\' loaded for size <8>.',
344 source: {
345 file: sourceName,
346 range: {
347 start: 17,
348 end: 17
349 }
350 },
351 log: {
352 file: logName,
353 range: {
354 start: 206,
355 end: 207
356 }
357 }
358 }, {
359 severity: 'info',
360 name: 'pdfTeX',
361 category: 'LaTeX Font',
362 text: 'External font `cmex10\' loaded for size <6>.',
363 source: {
364 file: sourceName,
365 range: {
366 start: 17,
367 end: 17
368 }
369 },
370 log: {
371 file: logName,
372 range: {
373 start: 208,
374 end: 209
375 }
376 }
377 }, {
378 severity: 'info',
379 name: 'pdfTeX',
380 category: 'LaTeX Font',
381 text: 'External font `cmex10\' loaded for size <5>.',
382 source: {
383 file: sourceName,
384 range: {
385 start: 17,
386 end: 17
387 }
388 },
389 log: {
390 file: logName,
391 range: {
392 start: 210,
393 end: 211
394 }
395 }
396 }, {
397 severity: 'error',
398 name: 'pdfTeX',
399 text: 'Argument of \\@sect has an extra }',
400 log: {
401 file: logName,
402 range: {
403 start: 212,
404 end: 212
405 }
406 },
407 source: {
408 file: sourceName,
409 range: {
410 start: 17,
411 end: 17
412 }
413 }
414 }, {
415 severity: 'error',
416 name: 'pdfTeX',
417 text: 'Paragraph ended before \\@sect was complete',
418 log: {
419 file: logName,
420 range: {
421 start: 227,
422 end: 227
423 }
424 },
425 source: {
426 file: sourceName,
427 range: {
428 start: 17,
429 end: 17
430 }
431 }
432 }, {
433 severity: 'error',
434 name: 'pdfTeX',
435 text: 'Extra alignment tab has been changed to \\cr',
436 log: {
437 file: logName,
438 range: {
439 start: 236,
440 end: 236
441 }
442 },
443 source: {
444 file: sourceName,
445 range: {
446 start: 26,
447 end: 26
448 }
449 }
450 }, {
451 severity: 'error',
452 name: 'pdfTeX',
453 category: 'Class foo',
454 text: 'Significant class issue',
455 log: {
456 file: logName,
457 range: {
458 start: 246,
459 end: 246
460 }
461 },
462 source: {
463 file: sourceName,
464 range: {
465 start: 30,
466 end: 30
467 }
468 }
469 }, {
470 severity: 'warning',
471 name: 'pdfTeX',
472 category: 'Class foo',
473 text: 'Class issue',
474 source: {
475 file: sourceName,
476 range: {
477 start: 31,
478 end: 31
479 }
480 },
481 log: {
482 file: logName,
483 range: {
484 start: 257,
485 end: 257
486 }
487 }
488 }, {
489 severity: 'warning',
490 name: 'pdfTeX',
491 category: 'Class foo',
492 text: 'Nebulous class issue.',
493 source: {
494 file: sourceName
495 },
496 log: {
497 file: logName,
498 range: {
499 start: 260,
500 end: 260
501 }
502 }
503 }, {
504 severity: 'info',
505 name: 'pdfTeX',
506 category: 'Class foo',
507 text: 'Insignificant class issue',
508 source: {
509 file: sourceName,
510 range: {
511 start: 33,
512 end: 33
513 }
514 },
515 log: {
516 file: logName,
517 range: {
518 start: 262,
519 end: 262
520 }
521 }
522 }, {
523 severity: 'error',
524 name: 'pdfTeX',
525 category: 'Package bar',
526 text: 'Significant package issue',
527 log: {
528 file: logName,
529 range: {
530 start: 264,
531 end: 264
532 }
533 },
534 source: {
535 file: sourceName,
536 range: {
537 start: 36,
538 end: 36
539 }
540 }
541 }, {
542 severity: 'warning',
543 name: 'pdfTeX',
544 category: 'Package bar',
545 text: 'Package issue',
546 source: {
547 file: sourceName,
548 range: {
549 start: 37,
550 end: 37
551 }
552 },
553 log: {
554 file: logName,
555 range: {
556 start: 275,
557 end: 275
558 }
559 }
560 }, {
561 severity: 'warning',
562 name: 'pdfTeX',
563 category: 'Package bar',
564 text: 'Nebulous package issue.',
565 source: {
566 file: sourceName
567 },
568 log: {
569 file: logName,
570 range: {
571 start: 278,
572 end: 278
573 }
574 }
575 }, {
576 severity: 'info',
577 name: 'pdfTeX',
578 category: 'Package bar',
579 text: 'Insignificant package issue',
580 source: {
581 file: sourceName,
582 range: {
583 start: 39,
584 end: 39
585 }
586 },
587 log: {
588 file: logName,
589 range: {
590 start: 280,
591 end: 280
592 }
593 }
594 }, {
595 severity: 'error',
596 name: 'pdfTeX',
597 category: 'foo',
598 source: {
599 file: sourceName,
600 range: {
601 start: 47,
602 end: 47
603 }
604 },
605 text: '"bar"\nThe blind spot behind a submarine which makes a good hidding spot for other submarines.\nSee the foo documentation for further information.',
606 log: {
607 file: logName,
608 range: {
609 start: 282,
610 end: 292
611 }
612 }
613 }, {
614 severity: 'warning',
615 name: 'pdfTeX',
616 category: 'foo',
617 source: {
618 file: sourceName,
619 range: {
620 start: 48,
621 end: 48
622 }
623 },
624 text: '"bar"\nThe blind spot behind a submarine which makes a good hidding spot for other submarines.',
625 log: {
626 file: logName,
627 range: {
628 start: 303,
629 end: 308
630 }
631 }
632 }, {
633 severity: 'info',
634 name: 'pdfTeX',
635 category: 'foo',
636 source: {
637 file: sourceName,
638 range: {
639 start: 49,
640 end: 49
641 }
642 },
643 text: '"bar"\nThe blind spot behind a submarine which makes a good hidding spot for other submarines.',
644 log: {
645 file: logName,
646 range: {
647 start: 309,
648 end: 314
649 }
650 }
651 }, {
652 severity: 'error',
653 name: 'pdfTeX',
654 category: 'LaTeX',
655 text: 'File `sub/wibble.tex\' not found',
656 source: {
657 file: sourceName
658 },
659 log: {
660 file: logName,
661 range: {
662 start: 318,
663 end: 318
664 }
665 }
666 }, {
667 severity: 'error',
668 name: 'pdfTeX',
669 text: 'Emergency stop',
670 log: {
671 file: logName,
672 range: {
673 start: 324,
674 end: 324
675 }
676 },
677 source: {
678 file: sourceName,
679 range: {
680 start: 54,
681 end: 54
682 }
683 }
684 }]
685 const parsedLogPath = 'error-warning.log-ParsedLaTeXLog'
686
687 await rule.parse()
688
689 const parsedLog: ?File = await rule.getFile(parsedLogPath)
690
691 expect(parsedLog).toBeDefined()
692 if (!parsedLog) return
693
694 expect(parsedLog.value).toBeDefined()
695 if (!parsedLog.value) return
696
697 expect(parsedLog.value.messages).toEqual(messages)
698
699 done()
700 })
701})