All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH v2 1/3] Add tst_flush() library function
@ 2018-03-09  9:26 Michael Moese
  2018-03-09  9:27 ` [LTP] [PATCH v2 2/3] remove old tst_flush() Michael Moese
  2018-03-09  9:27 ` [LTP] [PATCH v2 3/3] safe_fork() should use tst_flush() instead of fflush() Michael Moese
  0 siblings, 2 replies; 4+ messages in thread
From: Michael Moese @ 2018-03-09  9:26 UTC (permalink / raw)
  To: ltp

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.

Signed-off-by: Michael Moese <mmoese@suse.de>
---
 doc/test-writing-guidelines.txt |  8 ++++++++
 include/tst_test.h              |  3 +++
 lib/tst_test.c                  | 15 +++++++++++++++
 3 files changed, 26 insertions(+)

diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index 739b295b8..4c60cd66b 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -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
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/include/tst_test.h b/include/tst_test.h
index af97b8983..54ff306d9 100644
--- a/include/tst_test.h
+++ b/include/tst_test.h
@@ -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__)
diff --git a/lib/tst_test.c b/lib/tst_test.c
index 2cf35ed66..9b4f43828 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -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");
+
+}
-- 
2.13.6


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-03-09 13:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-09  9:26 [LTP] [PATCH v2 1/3] Add tst_flush() library function Michael Moese
2018-03-09  9:27 ` [LTP] [PATCH v2 2/3] remove old tst_flush() Michael Moese
2018-03-09 13:18   ` Cyril Hrubis
2018-03-09  9:27 ` [LTP] [PATCH v2 3/3] safe_fork() should use tst_flush() instead of fflush() Michael Moese

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.