Commit 206ae064 authored by Federico G. Schwindt's avatar Federico G. Schwindt

Treat skipped tests as such

E.g.

and

0 tests failed, 7 tests skipped, 558 tests passed

This could use some tlc but will do it for now.
parent b2d75389
......@@ -585,7 +585,7 @@ cmd_feature(CMD_ARGS)
if (tst) { \
good = 1; \
} else { \
vtc_stop = 1; \
vtc_stop = 2; \
} \
} \
} while (0)
......@@ -596,7 +596,7 @@ cmd_feature(CMD_ARGS)
#ifdef SO_RCVTIMEO_WORKS
good = 1;
#else
vtc_stop = 1;
vtc_stop = 2;
#endif
}
......@@ -604,7 +604,7 @@ cmd_feature(CMD_ARGS)
#if !defined(__APPLE__) || !defined(__MACH__)
good = 1;
#else
vtc_stop = 1;
vtc_stop = 2;
#endif
}
FEATURE("pcre_jit", VRE_has_jit);
......@@ -623,7 +623,7 @@ cmd_feature(CMD_ARGS)
r = personality(r | ADDR_NO_RANDOMIZE);
if (r < 0) {
good = 0;
vtc_stop = 1;
vtc_stop = 2;
}
#endif
} else if (!strcmp(*av, "cmd")) {
......@@ -636,7 +636,7 @@ cmd_feature(CMD_ARGS)
if (WEXITSTATUS(r) == 0)
good = 1;
else
vtc_stop = 1;
vtc_stop = 2;
}
if (good)
continue;
......@@ -706,7 +706,8 @@ exec_file(const char *fn, const char *script, const char *tmpdir,
vtc_thread = pthread_self();
parse_string(script, cmds, NULL, vltop);
old_err = vtc_error;
vtc_stop = 1;
if (!vtc_stop)
vtc_stop = 1;
vtc_log(vltop, 1, "RESETTING after %s", fn);
reset_cmds(cmds);
vtc_error |= old_err;
......@@ -716,5 +717,7 @@ exec_file(const char *fn, const char *script, const char *tmpdir,
else
vtc_log(vltop, 1, "TEST %s completed", fn);
if (vtc_stop > 1)
return (1);
return (vtc_error);
}
......@@ -138,7 +138,7 @@ vtc_log(struct vtclog *vl, int lvl, const char *fmt, ...)
if (lvl > 0)
return;
if (lvl == 0)
vtc_error = 1;
vtc_error = 2;
if (pthread_self() != vtc_thread)
pthread_exit(NULL);
}
......@@ -204,7 +204,7 @@ vtc_dump(struct vtclog *vl, int lvl, const char *pfx, const char *str, int len)
vl->act = 0;
AZ(pthread_mutex_unlock(&vl->mtx));
if (lvl == 0) {
vtc_error = 1;
vtc_error = 2;
if (pthread_self() != vtc_thread)
pthread_exit(NULL);
}
......@@ -264,7 +264,7 @@ vtc_hexdump(struct vtclog *vl, int lvl, const char *pfx,
vl->act = 0;
AZ(pthread_mutex_unlock(&vl->mtx));
if (lvl == 0) {
vtc_error = 1;
vtc_error = 2;
if (pthread_self() != vtc_thread)
pthread_exit(NULL);
}
......
......@@ -94,6 +94,7 @@ static int vtc_continue; /* Continue on error */
static int vtc_verbosity = 1; /* Verbosity Level */
static int vtc_good;
static int vtc_fail;
static int vtc_skip;
static char *tmppath;
static char *cwd = NULL;
char *vmod_path = NULL;
......@@ -158,6 +159,7 @@ tst_cb(const struct vev *ve, int what)
{
struct vtc_job *jp;
char buf[BUFSIZ];
int ecode, signo;
int i, stx;
pid_t px;
double t;
......@@ -184,17 +186,26 @@ tst_cb(const struct vev *ve, int what)
t = VTIM_mono() - jp->t0;
AZ(close(ve->fd));
if (stx && vtc_verbosity)
ecode = 2;
signo = 0;
if (WIFEXITED(stx))
ecode = WEXITSTATUS(stx);
if (WIFSIGNALED(stx))
signo = WTERMSIG(stx);
if (ecode > 1 && vtc_verbosity)
printf("%s\n", jp->buf);
else if (vtc_verbosity > 1)
printf("%s\n", jp->buf);
if (stx)
vtc_fail++;
else
if (!ecode)
vtc_good++;
else if (ecode == 1)
vtc_skip++;
else
vtc_fail++;
if (leave_temp == 0 || (leave_temp == 1 && !stx)) {
if (leave_temp == 0 || (leave_temp == 1 && ecode <= 1)) {
bprintf(buf, "rm -rf %s", jp->tmpdir);
AZ(system(buf));
} else {
......@@ -206,19 +217,20 @@ tst_cb(const struct vev *ve, int what)
}
free(jp->tmpdir);
if (stx) {
if (ecode > 1) {
printf("# top TEST %s FAILED (%.3f)",
jp->tst->filename, t);
if (WIFSIGNALED(stx))
printf(" signal=%d", WTERMSIG(stx));
printf(" exit=%d\n", WEXITSTATUS(stx));
if (signo)
printf(" signal=%d", signo);
printf(" exit=%d\n", ecode);
if (!vtc_continue) {
/* XXX kill -9 other jobs ? */
exit(2);
}
} else if (vtc_verbosity) {
printf("# top TEST %s passed (%.3f)\n",
jp->tst->filename, t);
printf("# top TEST %s %s (%.3f)\n",
jp->tst->filename,
ecode ? "skipped" : "passed", t);
}
AZ(munmap(jp->buf, jp->bufsiz));
if (jp->evt != NULL)
......@@ -640,9 +652,12 @@ main(int argc, char * const *argv)
i = vev_schedule_one(vb);
}
if (vtc_continue)
fprintf(stderr, "%d tests failed, %d tests passed\n",
vtc_fail, vtc_good);
fprintf(stderr,
"%d tests failed, %d tests skipped, %d tests passed\n",
vtc_fail, vtc_skip, vtc_good);
if (vtc_fail)
return (1);
if (vtc_skip && !vtc_good)
return (77);
return (0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment