Branch Coverage

SocketAlarm.xs
Criterion Covered Total %
branch 68 116 58.6


line true false branch
80 0 26 if (!parse_actions(action_spec, spec_count, self->actions, &n_actions, ((char*)self) + len_before_aux, &aux_len))
105 12 45 if (!resume)
107 12 57 while (self->cur_action < self->action_count) {
108 0 12 if (!execute_action(self->actions + self->cur_action, resume, &now_ts, self))
117 14 0 if (!self->actions_av) {
120 18 14 for (i= 0; i < self->action_count; i++) {
134 14 12 if (sa->actions_av)
147 13 0 if (array && SvTYPE(array) == SVt_PVAV)
0 13 if (array && SvTYPE(array) == SVt_PVAV)
149 13 0 else if (array && SvROK(array) && SvTYPE(SvRV(array)) == SVt_PVAV)
13 0 else if (array && SvROK(array) && SvTYPE(SvRV(array)) == SVt_PVAV)
13 0 else if (array && SvROK(array) && SvTYPE(SvRV(array)) == SVt_PVAV)
156 1 12 if (!vec) {
157 1 0 if (n == 0) /* don't return a NULL for an empty array, but doesn't need to be a real pointer */
162 0 0 Newx(vec, n, SV*);
164 0 0 for (i= 0; i < n; i++) {
166 0 0 vec[i]= el? *el : NULL;
170 13 0 if (len_out) *len_out= n;
180 26 0 if (mg->mg_ptr) {
216 0 76 if (!sv_isobject(obj)) {
217 0 0 if (flags & OR_DIE)
222 62 14 if (SvMAGICAL(sv)) {
224 62 0 if ((magic= mg_findext(sv, PERL_MAGIC_ext, &socketalarm_magic_vt)))
228 0 14 if (flags & OR_DIE)
235 0 26 if (sa->owner)
253 0 12 if (!sa)
256 0 12 if (sa->owner)
268 72 0 SvUPGRADE(name, SVt_PVNV);
295 0 14 if (!sv_isobject(self))
297 0 14 if ((sa= get_magic_socketalarm(self, 0)))
299 14 0 if (!(sock_fd >= 0 && fstat(sock_fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode)))
14 0 if (!(sock_fd >= 0 && fstat(sock_fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode)))
0 14 if (!(sock_fd >= 0 && fstat(sock_fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode)))
301 14 0 if (eventmask_sv && SvOK(eventmask_sv))
14 0 if (eventmask_sv && SvOK(eventmask_sv))
303 14 0 if (actions_sv && SvOK(actions_sv)) {
13 1 if (actions_sv && SvOK(actions_sv)) {
305 0 13 if (!action_list)
316 0 14 RETVAL= alarm->watch_fd;
324 0 14 RETVAL= alarm->event_mask;
341 0 1 RETVAL= alarm->action_count;
377 0 14 sv_catpvf(out, "event mask:%s%s\n",
0 14 sv_catpvf(out, "event mask:%s%s\n",
382 18 14 for (i= 0; i < alarm->action_count; i++) {
408 12 0 if (!(sock_fd >= 0 && fstat(sock_fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode)))
12 0 if (!(sock_fd >= 0 && fstat(sock_fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode)))
0 12 if (!(sock_fd >= 0 && fstat(sock_fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode)))
410 9 3 if (items > 1) {
412 9 0 if (SvOK(ST(1)) && looks_like_number(ST(1))) {
0 9 if (SvOK(ST(1)) && looks_like_number(ST(1))) {
429 3 2 RETVAL= fd >= 0 && fstat(fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode);
3 0 RETVAL= fd >= 0 && fstat(fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode);
2 1 RETVAL= fd >= 0 && fstat(fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode);
2 3 RETVAL= fd >= 0 && fstat(fd, &statbuf) == 0 && S_ISSOCK(statbuf.st_mode);
442 1 1 while (avail <= needed) {
468 0 7 EXTEND(SP, 2);
470 0 7 PUSHs(sv_2mortal(newSViv(ret < 0? errno : ret > 0? pollbuf.revents : 0)));
6 1 PUSHs(sv_2mortal(newSViv(ret < 0? errno : ret > 0? pollbuf.revents : 0)));