Commit 5fcfeb08 authored by Tor Didriksen's avatar Tor Didriksen

Merge fix for Bug#53303 from 5.1-bugteam

text conflict: unittest/examples/Makefile.am
parents ad92ee12 e3b4d331
...@@ -20,4 +20,5 @@ AM_LDFLAGS = -L$(top_builddir)/unittest/mytap ...@@ -20,4 +20,5 @@ AM_LDFLAGS = -L$(top_builddir)/unittest/mytap
LDADD = -lmytap LDADD = -lmytap
noinst_PROGRAMS = simple-t skip-t todo-t skip_all-t no_plan-t core-t # We omit core-t here, since it will always fail.
noinst_PROGRAMS = simple-t skip-t todo-t skip_all-t no_plan-t
/* Copyright (C) 2006 MySQL AB /* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -20,14 +20,19 @@ ...@@ -20,14 +20,19 @@
/* /*
Sometimes, the number of tests is not known beforehand. In those Sometimes, the number of tests is not known beforehand. In those
cases, the plan can be omitted and will instead be written at the cases, you should invoke plan(NO_PLAN).
end of the test (inside exit_status()). The plan will be printed at the end of the test (inside exit_status()).
Use this sparingly, it is a last resort: planning how many tests you Use this sparingly, it is a last resort: planning how many tests you
are going to run will help you catch that offending case when some are going to run will help you catch that offending case when some
tests are skipped for an unknown reason. tests are skipped for an unknown reason.
*/ */
int main() { int main() {
/*
We recommend calling plan(NO_PLAN), but want to verify that
omitting the call works as well.
plan(NO_PLAN);
*/
ok(1, " "); ok(1, " ");
ok(1, " "); ok(1, " ");
ok(1, " "); ok(1, " ");
......
/* Copyright (C) 2006 MySQL AB /* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
@ingroup MyTAP_Internal @ingroup MyTAP_Internal
*/ */
static TEST_DATA g_test = { 0, 0, 0, "" }; static TEST_DATA g_test = { NO_PLAN, 0, 0, "" };
/** /**
Output stream for test report message. Output stream for test report message.
...@@ -84,6 +84,7 @@ vemit_tap(int pass, char const *fmt, va_list ap) ...@@ -84,6 +84,7 @@ vemit_tap(int pass, char const *fmt, va_list ap)
(fmt && *fmt) ? " - " : ""); (fmt && *fmt) ? " - " : "");
if (fmt && *fmt) if (fmt && *fmt)
vfprintf(tapout, fmt, ap); vfprintf(tapout, fmt, ap);
fflush(tapout);
} }
...@@ -106,6 +107,7 @@ static void ...@@ -106,6 +107,7 @@ static void
emit_dir(const char *dir, const char *why) emit_dir(const char *dir, const char *why)
{ {
fprintf(tapout, " # %s %s", dir, why); fprintf(tapout, " # %s %s", dir, why);
fflush(tapout);
} }
...@@ -118,6 +120,7 @@ static void ...@@ -118,6 +120,7 @@ static void
emit_endl() emit_endl()
{ {
fprintf(tapout, "\n"); fprintf(tapout, "\n");
fflush(tapout);
} }
static void static void
...@@ -204,7 +207,10 @@ plan(int count) ...@@ -204,7 +207,10 @@ plan(int count)
break; break;
default: default:
if (count > 0) if (count > 0)
{
fprintf(tapout, "1..%d\n", count); fprintf(tapout, "1..%d\n", count);
fflush(tapout);
}
break; break;
} }
} }
...@@ -217,6 +223,7 @@ skip_all(char const *reason, ...) ...@@ -217,6 +223,7 @@ skip_all(char const *reason, ...)
va_start(ap, reason); va_start(ap, reason);
fprintf(tapout, "1..0 # skip "); fprintf(tapout, "1..0 # skip ");
vfprintf(tapout, reason, ap); vfprintf(tapout, reason, ap);
fflush(tapout);
va_end(ap); va_end(ap);
exit(0); exit(0);
} }
......
/* Copyright (C) 2006 MySQL AB /* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -90,10 +90,9 @@ extern int skip_big_tests; ...@@ -90,10 +90,9 @@ extern int skip_big_tests;
/** /**
Set number of tests that is planned to execute. Set number of tests that is planned to execute.
The function also accepts the predefined constant The function also accepts the predefined constant <code>NO_PLAN</code>.
<code>NO_PLAN</code>. If the function is not called, it is as if If invoked with this constant -- or not invoked at all --
it was called with <code>NO_PLAN</code>, i.e., the test plan will the test plan will be printed after all the test lines.
be printed after all the test lines.
The plan() function will install signal handlers for all signals The plan() function will install signal handlers for all signals
that generate a core, so if you want to override these signals, do that generate a core, so if you want to override these signals, do
......
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