Add tst_flush() library function
PATCH 1/1 Add tst_flush() library function
Add a library function to flush stderr and stdout streams:
void tst_flush(void)
This function flushes stderr and stdout streams. In case of an error, the test is aborted with TBROK and an error message is printed.
--- doc/test-writing-guidelines.txt | 8 ++++++++ include/tst_test.h | 3 +++ lib/tst_test.c | 15 +++++++++++++++ 3 files changed, 26 insertions(+)
doc/test-writing-guidelines.txt +8 -0
@@ -465,6 +465,14 @@ Allows for setting timeout per test iteration dymanically in the test setup(), the timeout is specified in seconds. There are a few testcases whose runtime can vary arbitrarily, these can disable timeouts by setting it to -1. +[source,c] +------------------------------------------------------------------------------ +void tst_flush(void); +------------------------------------------------------------------------------- + +Flush stderr and stdout streams, handling errors appropriately. +You should not use fflush() for stderr or stdout. + 2.2.3 Test temporary directory ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
include/tst_test.h +3 -0
@@ -70,6 +70,9 @@ void tst_brk_(const char *file, const int lineno, int ttype,#define tst_brk (ttype, arg_fmt, ...) \ tst_brk_(__FILE__, __LINE__, (ttype), (arg_fmt), ##__VA_ARGS__) +/* flush stderr and stdout */ +void tst_flush (void ); +pid_t safe_fork (const char *filename,unsigned int lineno);#define SAFE_FORK () \ safe_fork(__FILE__, __LINE__)
lib/tst_test.c +15 -0
@@ -1085,3 +1085,18 @@ void tst_run_tcases(int argc, char *argv[], struct tst_test *self)do_exit (ret); } + + +void tst_flush (void ) +{ +int rval; + + rval =fflush (stderr); +if (rval !=0 ) +tst_brk (TBROK |TERRNO ,"fflush(stderr) failed" ); + + rval =fflush (stderr); +if (rval !=0 ) +tst_brk (TBROK |TERRNO ,"fflush(stdout) failed" ); + +}
Signature · 1 line
2.13.6
PATCH 1/1 Add tst_flush() library function
Hi!
I've tried to apply this but found out that there is tst_flush() in the old library and because of that the code does not even compile.
So we have to rename the tst_flush() in the old library to something as tst_old_flush() and also remove it from the ltpapicmd.c since there are no shell tests that call that command (ltpapicmd.c should hopefully die some day soon). Should I do that or will you send another patch? :-)
Also we should make use of the tst_flush() in the safe_fork() so that we finally flush the right stream in the new test library...
Signature · 2 lines
Cyril Hrubis [email protected]
PATCH 1/1 Add tst_flush() library function
Hi,
Now that you tell me that, I can see this as well. Of course I did a local build test, but the issue did not show up at first.
I will send more patches, changing safe_fork() and the old library.
Michael
Quoted 15 lines · Cyril Hrubis
Hi!
I've tried to apply this but found out that there istst_flush()in the old library and because of that the code does not even compile.So we have to rename the
tst_flush()in the old library to something astst_old_flush()and also remove it from theltpapicmd.csince there are no shell tests that call that command (ltpapicmd.cshould hopefully die some day soon). Should I do that or will you send another patch? :-)Also we should make use of the
tst_flush()in thesafe_fork()so that we finally flush the right stream in the new test library...Signature · 2 lines
Cyril Hrubis [email protected]
Signature · 1 line
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)