Branch Coverage

lib/Eshu.xs
Criterion Covered Total %
branch 345 648 53.2


line true false branch
60 37 0 if (SvOK(filename_sv)) {
66 132 1 while (p > filename) {
68 36 96 if (*p == '.') { dot = p + 1; break; }
71 36 1 if (dot) {
73 10 26 if ((ext_len == 1 && (dot[0] == 'c' || dot[0] == 'C'))
2 8 if ((ext_len == 1 && (dot[0] == 'c' || dot[0] == 'C'))
2 0 if ((ext_len == 1 && (dot[0] == 'c' || dot[0] == 'C'))
74 2 26 || (ext_len == 1 && (dot[0] == 'h' || dot[0] == 'H'))) {
1 1 || (ext_len == 1 && (dot[0] == 'h' || dot[0] == 'H'))) {
0 1 || (ext_len == 1 && (dot[0] == 'h' || dot[0] == 'H'))) {
76 7 20 } else if (ext_len == 2
77 6 1 && (dot[0] == 'x' || dot[0] == 'X')
0 6 && (dot[0] == 'x' || dot[0] == 'X')
78 0 1 && (dot[1] == 's' || dot[1] == 'S')) {
0 0 && (dot[1] == 's' || dot[1] == 'S')) {
80 6 20 } else if ((ext_len == 2
81 4 2 && (dot[0] == 'p' || dot[0] == 'P')
0 4 && (dot[0] == 'p' || dot[0] == 'P')
82 1 1 && (dot[1] == 'l' || dot[1] == 'L'))
1 0 && (dot[1] == 'l' || dot[1] == 'L'))
83 5 20 || (ext_len == 2
84 4 1 && (dot[0] == 'p' || dot[0] == 'P')
0 4 && (dot[0] == 'p' || dot[0] == 'P')
85 0 1 && (dot[1] == 'm' || dot[1] == 'M'))
0 0 && (dot[1] == 'm' || dot[1] == 'M'))
86 1 23 || (ext_len == 1
87 0 1 && (dot[0] == 't' || dot[0] == 'T'))) {
0 0 && (dot[0] == 't' || dot[0] == 'T'))) {
89 13 10 } else if ((ext_len == 3
90 11 2 && (dot[0] == 'x' || dot[0] == 'X')
0 11 && (dot[0] == 'x' || dot[0] == 'X')
91 1 1 && (dot[1] == 'm' || dot[1] == 'M')
0 1 && (dot[1] == 'm' || dot[1] == 'M')
92 0 1 && (dot[2] == 'l' || dot[2] == 'L'))
0 0 && (dot[2] == 'l' || dot[2] == 'L'))
93 12 10 || (ext_len == 3
94 11 1 && (dot[0] == 'x' || dot[0] == 'X')
0 11 && (dot[0] == 'x' || dot[0] == 'X')
95 0 1 && (dot[1] == 's' || dot[1] == 'S')
0 0 && (dot[1] == 's' || dot[1] == 'S')
96 0 1 && (dot[2] == 'l' || dot[2] == 'L'))
0 0 && (dot[2] == 'l' || dot[2] == 'L'))
97 5 16 || (ext_len == 4
98 4 1 && (dot[0] == 'x' || dot[0] == 'X')
0 4 && (dot[0] == 'x' || dot[0] == 'X')
99 0 1 && (dot[1] == 's' || dot[1] == 'S')
0 0 && (dot[1] == 's' || dot[1] == 'S')
100 0 1 && (dot[2] == 'l' || dot[2] == 'L')
0 0 && (dot[2] == 'l' || dot[2] == 'L')
101 0 1 && (dot[3] == 't' || dot[3] == 'T'))
0 0 && (dot[3] == 't' || dot[3] == 'T'))
102 11 9 || (ext_len == 3
103 10 1 && (dot[0] == 's' || dot[0] == 'S')
0 10 && (dot[0] == 's' || dot[0] == 'S')
104 0 1 && (dot[1] == 'v' || dot[1] == 'V')
0 0 && (dot[1] == 'v' || dot[1] == 'V')
105 0 1 && (dot[2] == 'g' || dot[2] == 'G'))
0 0 && (dot[2] == 'g' || dot[2] == 'G'))
106 1 18 || (ext_len == 5
107 0 1 && (dot[0] == 'x' || dot[0] == 'X')
0 0 && (dot[0] == 'x' || dot[0] == 'X')
108 0 1 && (dot[1] == 'h' || dot[1] == 'H')
0 0 && (dot[1] == 'h' || dot[1] == 'H')
109 0 1 && (dot[2] == 't' || dot[2] == 'T')
0 0 && (dot[2] == 't' || dot[2] == 'T')
110 0 1 && (dot[3] == 'm' || dot[3] == 'M')
0 0 && (dot[3] == 'm' || dot[3] == 'M')
111 0 1 && (dot[4] == 'l' || dot[4] == 'L'))) {
0 0 && (dot[4] == 'l' || dot[4] == 'L'))) {
113 4 14 } else if ((ext_len == 4
114 3 1 && (dot[0] == 'h' || dot[0] == 'H')
0 3 && (dot[0] == 'h' || dot[0] == 'H')
115 0 1 && (dot[1] == 't' || dot[1] == 'T')
0 0 && (dot[1] == 't' || dot[1] == 'T')
116 0 1 && (dot[2] == 'm' || dot[2] == 'M')
0 0 && (dot[2] == 'm' || dot[2] == 'M')
117 0 1 && (dot[3] == 'l' || dot[3] == 'L'))
0 0 && (dot[3] == 'l' || dot[3] == 'L'))
118 10 7 || (ext_len == 3
119 9 1 && (dot[0] == 'h' || dot[0] == 'H')
0 9 && (dot[0] == 'h' || dot[0] == 'H')
120 0 1 && (dot[1] == 't' || dot[1] == 'T')
0 0 && (dot[1] == 't' || dot[1] == 'T')
121 0 1 && (dot[2] == 'm' || dot[2] == 'M'))
0 0 && (dot[2] == 'm' || dot[2] == 'M'))
122 3 13 || (ext_len == 4
123 2 1 && (dot[0] == 't' || dot[0] == 'T')
0 2 && (dot[0] == 't' || dot[0] == 'T')
124 0 1 && (dot[1] == 'm' || dot[1] == 'M')
0 0 && (dot[1] == 'm' || dot[1] == 'M')
125 0 1 && (dot[2] == 'p' || dot[2] == 'P')
0 0 && (dot[2] == 'p' || dot[2] == 'P')
126 0 1 && (dot[3] == 'l' || dot[3] == 'L'))
0 0 && (dot[3] == 'l' || dot[3] == 'L'))
127 4 11 || (ext_len == 2
128 2 2 && (dot[0] == 't' || dot[0] == 'T')
0 2 && (dot[0] == 't' || dot[0] == 'T')
129 1 1 && (dot[1] == 't' || dot[1] == 'T'))
1 0 && (dot[1] == 't' || dot[1] == 'T'))
130 3 11 || (ext_len == 2
131 2 1 && (dot[0] == 'e' || dot[0] == 'E')
0 2 && (dot[0] == 'e' || dot[0] == 'E')
132 0 1 && (dot[1] == 'p' || dot[1] == 'P'))) {
0 0 && (dot[1] == 'p' || dot[1] == 'P'))) {
134 9 4 } else if ((ext_len == 3
135 7 2 && (dot[0] == 'c' || dot[0] == 'C')
1 6 && (dot[0] == 'c' || dot[0] == 'C')
136 2 1 && (dot[1] == 's' || dot[1] == 'S')
1 1 && (dot[1] == 's' || dot[1] == 'S')
137 1 1 && (dot[2] == 's' || dot[2] == 'S'))
0 1 && (dot[2] == 's' || dot[2] == 'S'))
138 2 9 || (ext_len == 4
139 1 1 && (dot[0] == 's' || dot[0] == 'S')
0 1 && (dot[0] == 's' || dot[0] == 'S')
140 0 1 && (dot[1] == 'c' || dot[1] == 'C')
0 0 && (dot[1] == 'c' || dot[1] == 'C')
141 0 1 && (dot[2] == 's' || dot[2] == 'S')
0 0 && (dot[2] == 's' || dot[2] == 'S')
142 0 1 && (dot[3] == 's' || dot[3] == 'S'))
0 0 && (dot[3] == 's' || dot[3] == 'S'))
143 1 9 || (ext_len == 4
144 0 1 && (dot[0] == 'l' || dot[0] == 'L')
0 0 && (dot[0] == 'l' || dot[0] == 'L')
145 0 1 && (dot[1] == 'e' || dot[1] == 'E')
0 0 && (dot[1] == 'e' || dot[1] == 'E')
146 0 1 && (dot[2] == 's' || dot[2] == 'S')
0 0 && (dot[2] == 's' || dot[2] == 'S')
147 0 1 && (dot[3] == 's' || dot[3] == 'S'))) {
0 0 && (dot[3] == 's' || dot[3] == 'S'))) {
149 2 7 } else if ((ext_len == 2
150 1 1 && (dot[0] == 'j' || dot[0] == 'J')
0 1 && (dot[0] == 'j' || dot[0] == 'J')
151 0 1 && (dot[1] == 's' || dot[1] == 'S'))
0 0 && (dot[1] == 's' || dot[1] == 'S'))
152 7 1 || (ext_len == 3
153 6 1 && (dot[0] == 'j' || dot[0] == 'J')
0 6 && (dot[0] == 'j' || dot[0] == 'J')
154 0 1 && (dot[1] == 's' || dot[1] == 'S')
0 0 && (dot[1] == 's' || dot[1] == 'S')
155 0 1 && (dot[2] == 'x' || dot[2] == 'X'))
0 0 && (dot[2] == 'x' || dot[2] == 'X'))
156 6 1 || (ext_len == 3
157 4 2 && (dot[0] == 'm' || dot[0] == 'M')
0 4 && (dot[0] == 'm' || dot[0] == 'M')
158 1 1 && (dot[1] == 'j' || dot[1] == 'J')
0 1 && (dot[1] == 'j' || dot[1] == 'J')
159 0 1 && (dot[2] == 's' || dot[2] == 'S'))
0 0 && (dot[2] == 's' || dot[2] == 'S'))
160 5 1 || (ext_len == 3
161 4 1 && (dot[0] == 'c' || dot[0] == 'C')
0 4 && (dot[0] == 'c' || dot[0] == 'C')
162 0 1 && (dot[1] == 'j' || dot[1] == 'J')
0 0 && (dot[1] == 'j' || dot[1] == 'J')
163 0 1 && (dot[2] == 's' || dot[2] == 'S'))
0 0 && (dot[2] == 's' || dot[2] == 'S'))
164 1 4 || (ext_len == 2
165 0 1 && (dot[0] == 't' || dot[0] == 'T')
0 0 && (dot[0] == 't' || dot[0] == 'T')
166 0 1 && (dot[1] == 's' || dot[1] == 'S'))
0 0 && (dot[1] == 's' || dot[1] == 'S'))
167 4 0 || (ext_len == 3
168 2 2 && (dot[0] == 't' || dot[0] == 'T')
0 2 && (dot[0] == 't' || dot[0] == 'T')
169 1 1 && (dot[1] == 's' || dot[1] == 'S')
0 1 && (dot[1] == 's' || dot[1] == 'S')
170 0 1 && (dot[2] == 'x' || dot[2] == 'X'))
0 0 && (dot[2] == 'x' || dot[2] == 'X'))
171 3 0 || (ext_len == 3
172 2 1 && (dot[0] == 'm' || dot[0] == 'M')
0 2 && (dot[0] == 'm' || dot[0] == 'M')
173 0 1 && (dot[1] == 't' || dot[1] == 'T')
0 0 && (dot[1] == 't' || dot[1] == 'T')
174 0 1 && (dot[2] == 's' || dot[2] == 'S'))) {
0 0 && (dot[2] == 's' || dot[2] == 'S'))) {
176 2 0 } else if (ext_len == 3
177 1 1 && (dot[0] == 'p' || dot[0] == 'P')
0 1 && (dot[0] == 'p' || dot[0] == 'P')
178 0 1 && (dot[1] == 'o' || dot[1] == 'O')
0 0 && (dot[1] == 'o' || dot[1] == 'O')
179 0 1 && (dot[2] == 'd' || dot[2] == 'D')) {
0 0 && (dot[2] == 'd' || dot[2] == 'D')) {
205 7 59 for (i = 2; i + 1 < items; i += 2) {
208 1 6 if (strEQ(key, "indent_char")) {
210 1 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
211 1 5 } else if (strEQ(key, "indent_width")) {
213 1 4 } else if (strEQ(key, "indent_pp")) {
215 2 2 } else if (strEQ(key, "range_start")) {
217 2 0 } else if (strEQ(key, "range_end")) {
247 4 82 for (i = 2; i + 1 < items; i += 2) {
250 1 3 if (strEQ(key, "indent_char")) {
252 1 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
253 1 2 } else if (strEQ(key, "indent_width")) {
255 1 1 } else if (strEQ(key, "range_start")) {
257 1 0 } else if (strEQ(key, "range_end")) {
287 0 32 for (i = 2; i + 1 < items; i += 2) {
290 0 0 if (strEQ(key, "indent_char")) {
292 0 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
293 0 0 } else if (strEQ(key, "indent_width")) {
295 0 0 } else if (strEQ(key, "indent_pp")) {
297 0 0 } else if (strEQ(key, "range_start")) {
299 0 0 } else if (strEQ(key, "range_end")) {
329 10 33 for (i = 2; i + 1 < items; i += 2) {
332 1 9 if (strEQ(key, "indent_char")) {
334 1 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
335 1 8 } else if (strEQ(key, "indent_width")) {
337 8 0 } else if (strEQ(key, "lang")) {
339 0 8 if (strEQ(l, "html") || strEQ(l, "htm")) {
0 0 if (strEQ(l, "html") || strEQ(l, "htm")) {
342 0 0 } else if (strEQ(key, "range_start")) {
344 0 0 } else if (strEQ(key, "range_end")) {
374 0 7 for (i = 2; i + 1 < items; i += 2) {
377 0 0 if (strEQ(key, "indent_char")) {
379 0 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
380 0 0 } else if (strEQ(key, "indent_width")) {
382 0 0 } else if (strEQ(key, "range_start")) {
384 0 0 } else if (strEQ(key, "range_end")) {
414 2 29 for (i = 2; i + 1 < items; i += 2) {
417 1 1 if (strEQ(key, "indent_char")) {
419 1 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
420 1 0 } else if (strEQ(key, "indent_width")) {
422 0 0 } else if (strEQ(key, "range_start")) {
424 0 0 } else if (strEQ(key, "range_end")) {
454 4 38 for (i = 2; i + 1 < items; i += 2) {
457 1 3 if (strEQ(key, "indent_char")) {
459 1 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
460 1 2 } else if (strEQ(key, "indent_width")) {
462 1 1 } else if (strEQ(key, "range_start")) {
464 1 0 } else if (strEQ(key, "range_end")) {
494 0 14 for (i = 2; i + 1 < items; i += 2) {
497 0 0 if (strEQ(key, "indent_char")) {
499 0 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
500 0 0 } else if (strEQ(key, "indent_width")) {
502 0 0 } else if (strEQ(key, "range_start")) {
504 0 0 } else if (strEQ(key, "range_end")) {
534 23 19 for (i = 2; i + 1 < items; i += 2) {
537 19 4 if (strEQ(key, "lang")) {
539 2 2 } else if (strEQ(key, "indent_char")) {
541 1 1 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
542 2 0 } else if (strEQ(key, "indent_width")) {
544 0 0 } else if (strEQ(key, "indent_pp")) {
546 0 0 } else if (strEQ(key, "range_start")) {
548 0 0 } else if (strEQ(key, "range_end")) {
553 10 9 if (strEQ(lang, "c")) {
555 9 0 } else if (strEQ(lang, "perl") || strEQ(lang, "pl")) {
0 9 } else if (strEQ(lang, "perl") || strEQ(lang, "pl")) {
558 1 8 } else if (strEQ(lang, "xs")) {
561 7 1 } else if (strEQ(lang, "xml") || strEQ(lang, "svg")) {
0 7 } else if (strEQ(lang, "xml") || strEQ(lang, "svg")) {
564 6 1 } else if (strEQ(lang, "html") || strEQ(lang, "htm")) {
0 6 } else if (strEQ(lang, "html") || strEQ(lang, "htm")) {
567 5 1 } else if (strEQ(lang, "css") || strEQ(lang, "scss") || strEQ(lang, "less")) {
5 0 } else if (strEQ(lang, "css") || strEQ(lang, "scss") || strEQ(lang, "less")) {
0 5 } else if (strEQ(lang, "css") || strEQ(lang, "scss") || strEQ(lang, "less")) {
570 4 1 } else if (strEQ(lang, "js") || strEQ(lang, "javascript") ||
3 1 } else if (strEQ(lang, "js") || strEQ(lang, "javascript") ||
571 3 0 strEQ(lang, "jsx") || strEQ(lang, "ts") ||
2 1 strEQ(lang, "jsx") || strEQ(lang, "ts") ||
572 1 1 strEQ(lang, "typescript") || strEQ(lang, "tsx") ||
1 0 strEQ(lang, "typescript") || strEQ(lang, "tsx") ||
573 1 0 strEQ(lang, "mjs") || strEQ(lang, "cjs") ||
1 0 strEQ(lang, "mjs") || strEQ(lang, "cjs") ||
574 0 1 strEQ(lang, "mts")) {
577 1 0 } else if (strEQ(lang, "pod")) {
611 0 0 for (i = 2; i + 1 < items; i += 2) {
614 0 0 if (strEQ(key, "fix")) {
615 0 0 if (SvTRUE(val)) opts |= ESHU_OPT_FIX;
616 0 0 } else if (strEQ(key, "diff")) {
617 0 0 if (SvTRUE(val)) opts |= ESHU_OPT_DIFF;
618 0 0 } else if (strEQ(key, "lang")) {
620 0 0 } else if (strEQ(key, "indent_char")) {
622 0 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
623 0 0 } else if (strEQ(key, "indent_width")) {
625 0 0 } else if (strEQ(key, "indent_pp")) {
627 0 0 } else if (strEQ(key, "range_start")) {
629 0 0 } else if (strEQ(key, "range_end")) {
650 0 0 if (res.lang)
652 0 0 if (res.reason)
654 0 0 if (res.error)
656 0 0 if (res.diff)
690 12 16 for (i = 2; i + 1 < items; i += 2) {
693 5 7 if (strEQ(key, "fix")) {
694 5 0 if (SvTRUE(val)) file_opts |= ESHU_OPT_FIX;
695 1 6 } else if (strEQ(key, "diff")) {
696 1 0 if (SvTRUE(val)) file_opts |= ESHU_OPT_DIFF;
697 0 6 } else if (strEQ(key, "lang")) {
699 1 5 } else if (strEQ(key, "recursive")) {
701 3 2 } else if (strEQ(key, "exclude")) {
702 3 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
1 2 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
709 2 0 } else if (strEQ(key, "include")) {
710 2 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
0 2 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
717 0 0 } else if (strEQ(key, "indent_char")) {
719 0 0 cfg.indent_char = (*ic == ' ') ? ' ' : '\t';
720 0 0 } else if (strEQ(key, "indent_width")) {
722 0 0 } else if (strEQ(key, "indent_pp")) {
731 16 0 if (stat(path, &st) == 0 && S_ISREG(st.st_mode)) {
0 16 if (stat(path, &st) == 0 && S_ISREG(st.st_mode)) {
733 16 0 } else if (stat(path, &st) == 0 && S_ISDIR(st.st_mode)) {
16 0 } else if (stat(path, &st) == 0 && S_ISDIR(st.st_mode)) {
746 46 16 for (fi = 0; fi < files.count; fi++) {
751 12 34 if (exclude_av) {
753 15 8 for (j = 0; j < alen; j++) {
755 15 0 if (elem && SvOK(*elem)) {
15 0 if (elem && SvOK(*elem)) {
757 15 0 if (rx) {
759 4 11 if (pregexec(rx, SvPV_nolen(file_sv), SvPV_nolen(file_sv) + strlen(fpath), SvPV_nolen(file_sv), 0, file_sv, 0)) {
766 4 42 if (skip) {
777 7 35 if (include_av) {
780 7 3 for (j = 0; j < alen; j++) {
782 7 0 if (elem && SvOK(*elem)) {
7 0 if (elem && SvOK(*elem)) {
784 7 0 if (rx) {
786 4 3 if (pregexec(rx, SvPV_nolen(file_sv), SvPV_nolen(file_sv) + strlen(fpath), SvPV_nolen(file_sv), 0, file_sv, 0)) {
792 3 4 if (!matched) {
823 36 3 if (res.lang)
825 3 36 if (res.reason)
827 0 39 if (res.error)
829 1 38 if (res.diff)
832 27 12 if (res.status == ESHU_STATUS_CHANGED || res.status == ESHU_STATUS_NEEDS_FIXING) {
22 5 if (res.status == ESHU_STATUS_CHANGED || res.status == ESHU_STATUS_NEEDS_FIXING) {
835 2 3 } else if (res.status == ESHU_STATUS_UNCHANGED) {
837 3 0 } else if (res.status == ESHU_STATUS_SKIPPED) {
839 0 0 } else if (res.status == ESHU_STATUS_ERROR) {