static void human_bsession(struct tvec_output *o, struct tvec_state *tv)
{ struct human_output *h = (struct human_output *)o; h->tv = tv; }
-static void human_report_unusual(struct human_output *h,
- unsigned nxfail, unsigned nskip)
+static void report_unusual(struct human_output *h,
+ unsigned nxfail, unsigned nskip)
{
const char *sep = " (";
unsigned f = 0;
fprintf(h->lyt.fp, " %s%u %s",
!(all_skip || grps_skip) ? "all " : "",
all_pass, all_pass == 1 ? "test" : "tests");
- human_report_unusual(h, all_xfail, all_skip);
+ report_unusual(h, all_xfail, all_skip);
fprintf(h->lyt.fp, " in %u %s",
grps_win, grps_win == 1 ? "group" : "groups");
- human_report_unusual(h, 0, grps_skip);
+ report_unusual(h, 0, grps_skip);
} else {
setattr(h, HA_LOSE); fputs("FAILED", h->lyt.fp); setattr(h, HA_PLAIN);
fprintf(h->lyt.fp, " %u out of %u %s",
all_lose, all_run, all_run == 1 ? "test" : "tests");
- human_report_unusual(h, all_xfail, all_skip);
+ report_unusual(h, all_xfail, all_skip);
fprintf(h->lyt.fp, " in %u out of %u %s",
grps_lose, grps_run, grps_run == 1 ? "group" : "groups");
- human_report_unusual(h, 0, grps_skip);
+ report_unusual(h, 0, grps_skip);
}
fputc('\n', h->lyt.fp);
{
struct human_output *h = (struct human_output *)o;
- if (!(~h->f&(HOF_TTY | HOF_PROGRESS))) {
- h->f &= ~HOF_PROGRESS;
- putc(' ', h->lyt.fp);
- setattr(h, HA_SKIP); fputs("skipped", h->lyt.fp); setattr(h, HA_PLAIN);
- } else {
- fprintf(h->lyt.fp, "%s: ", h->tv->test->name);
- setattr(h, HA_SKIP); fputs("skipped", h->lyt.fp); setattr(h, HA_PLAIN);
+ if (!(h->f&HOF_TTY))
+ fprintf(h->lyt.fp, "%s ", h->tv->test->name);
+ else {
+ show_progress(h); h->f &= ~HOF_PROGRESS;
+ if (h->scoreboard.len) putc(' ', h->lyt.fp);
}
+ setattr(h, HA_SKIP); fputs("skipped", h->lyt.fp); setattr(h, HA_PLAIN);
if (excuse) { fputs(": ", h->lyt.fp); vfprintf(h->lyt.fp, excuse, *ap); }
fputc('\n', h->lyt.fp);
}
if (lose) {
fprintf(h->lyt.fp, " %u/%u ", lose, run);
setattr(h, HA_LOSE); fputs("FAILED", h->lyt.fp); setattr(h, HA_PLAIN);
- human_report_unusual(h, xfail, skip);
+ report_unusual(h, xfail, skip);
} else {
fputc(' ', h->lyt.fp); setattr(h, HA_WIN);
fputs("ok", h->lyt.fp); setattr(h, HA_PLAIN);
- human_report_unusual(h, xfail, skip);
+ report_unusual(h, xfail, skip);
}
fputc('\n', h->lyt.fp);
}
static void human_btest(struct tvec_output *o)
{ struct human_output *h = (struct human_output *)o; show_progress(h); }
-static void human_skip(struct tvec_output *o,
- const char *excuse, va_list *ap)
{
struct human_output *h = (struct human_output *)o;
struct tvec_state *tv = h->tv;
clear_progress(h);
report_location(h, h->lyt.fp, tv->infile, tv->test_lno);
fprintf(h->lyt.fp, "`%s' ", tv->test->name);
- setattr(h, HA_SKIP); fputs("skipped", h->lyt.fp); setattr(h, HA_PLAIN);
- if (excuse) { fputs(": ", h->lyt.fp); vfprintf(h->lyt.fp, excuse, *ap); }
+ setattr(h, attr); fputs(outcome, h->lyt.fp); setattr(h, HA_PLAIN);
+ if (detail) { fputs(": ", h->lyt.fp); vfprintf(h->lyt.fp, detail, *ap); }
fputc('\n', h->lyt.fp);
}
+static void human_skip(struct tvec_output *o,
+ const char *excuse, va_list *ap)
+ { human_outcome(o, HA_SKIP, "skipped", excuse, ap); }
static void human_fail(struct tvec_output *o,
const char *detail, va_list *ap)
-{
- struct human_output *h = (struct human_output *)o;
- struct tvec_state *tv = h->tv;
+ { human_outcome(o, HA_LOSE, "FAILED", detail, ap); }
- clear_progress(h);
- report_location(h, h->lyt.fp, tv->infile, tv->test_lno);
- fprintf(h->lyt.fp, "`%s' ", tv->test->name);
- setattr(h, HA_LOSE); fputs("FAILED", h->lyt.fp); setattr(h, HA_PLAIN);
- if (detail) { fputs(": ", h->lyt.fp); vfprintf(h->lyt.fp, detail, *ap); }
- fputc('\n', h->lyt.fp);
-}
static void human_dumpreg(struct tvec_output *o,
unsigned disp, const union tvec_regval *rv,
{
struct tap_output *t = (struct tap_output *)o;
- t->tv = tv; t->last = 0;
+ t->tv = tv; t->grpix = 0;
fputs("TAP version 13\n", t->lyt.fp); /* but secretly 14 really */
}
-static unsigned tap_grpix(struct tap_output *t)
-{
- struct tvec_state *tv = t->tv;
- unsigned i, n;
-
- for (n = 0, i = 0; i < TVOUT_LIMIT; i++) n += tv->grps[i];
- return (n);
-}
-
-static unsigned tap_testix(struct tap_output *t)
-{
- struct tvec_state *tv = t->tv;
- unsigned i, n;
-
- for (n = 0, i = 0; i < TVOUT_LIMIT; i++) n += tv->curr[i];
- if (tv->f&TVSF_OPEN) n++;
- return (n);
-}
static int tap_esession(struct tvec_output *o)
{
return (2);
}
- fprintf(t->lyt.fp, "1..%u\n", tap_grpix(t));
+ fprintf(t->lyt.fp, "1..%u\n", t->grpix);
t->tv = 0; return (tv->all[TVOUT_LOSE] ? 1 : 0);
}
struct tap_output *t = (struct tap_output *)o;
struct tvec_state *tv = t->tv;
+ t->grpix++; t->testix = t->previx = 0;
t->maxlen = register_maxnamelen(t->tv);
fprintf(t->lyt.fp, "# Subtest: %s\n", tv->test->name);
}
{
struct tap_output *t = (struct tap_output *)o;
- fprintf(t->lyt.fp, " 1..%u\n", tap_testix(t));
- fprintf(t->lyt.fp, "ok %u %s # SKIP", tap_grpix(t), t->tv->test->name);
+ fprintf(t->lyt.fp, " 1..%u\n", t->testix);
+ fprintf(t->lyt.fp, "ok %u %s # SKIP", t->grpix, t->tv->test->name);
if (excuse) { fputc(' ', t->lyt.fp); vfprintf(t->lyt.fp, excuse, *ap); }
fputc('\n', t->lyt.fp);
}
struct tap_output *t = (struct tap_output *)o;
struct tvec_state *tv = t->tv;
- fprintf(t->lyt.fp, " 1..%u\n", tap_testix(t));
+ fprintf(t->lyt.fp, " 1..%u\n", t->testix);
fprintf(t->lyt.fp, "%s %u - %s\n",
tv->curr[TVOUT_LOSE] ? "not ok" : "ok",
- tap_grpix(t), tv->test->name);
+ t->grpix, tv->test->name);
}
-static void tap_btest(struct tvec_output *o) { ; }
+static void tap_btest(struct tvec_output *o)
+ { struct tap_output *t = (struct tap_output *)o; t->testix++; }
static void tap_outcome(struct tvec_output *o,
const char *head, const char *tail,
{
struct tap_output *t = (struct tap_output *)o;
struct tvec_state *tv = t->tv;
- unsigned ix = tap_testix(t);
fprintf(t->lyt.fp, " %s %u - %s:%u%s",
- ix == t->last ? "##" : head, ix, tv->infile, tv->test_lno, tail);
+ t->testix == t->previx ? "##" : head,
+ t->testix, tv->infile, tv->test_lno, tail);
if (detail)
{ fputc(' ', t->lyt.fp); vfprintf(t->lyt.fp, detail, *ap); }
fputc('\n', t->lyt.fp);
- t->last = ix;
+ t->previx = t->testix;
}
static void tap_skip(struct tvec_output *o, const char *excuse, va_list *ap)