summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-11-08 13:27:25 +1100
committerChris Johns <chrisj@rtems.org>2017-11-11 16:14:59 +1100
commite6df806a3f46b5488e5e383add9cda43e0059dbe (patch)
tree560dabf7fec58d1d33cfaf419842ddbd085d8c16 /cpukit
parenttests: Use rtems_test_begin and rtems_test_end. (diff)
downloadrtems-e6df806a3f46b5488e5e383add9cda43e0059dbe.tar.bz2
tests: Use ld to map (wrap) printf, puts and putchar to tester functions.
- Remove the macro defines and the need for tmacro.h by remapping the symbols using ld's wrap option. - Remove FLUSH_OUTPUT, it was empty. - Move rtems_test_exit to libmisc/testsupport as a function. Update #3199.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/libmisc/Makefile.am1
-rw-r--r--cpukit/libmisc/testsupport/test.h6
-rw-r--r--cpukit/libmisc/testsupport/testbeginend.c6
-rw-r--r--cpukit/libmisc/testsupport/testwrappers.c48
4 files changed, 61 insertions, 0 deletions
diff --git a/cpukit/libmisc/Makefile.am b/cpukit/libmisc/Makefile.am
index 786782931c..e1343ddf11 100644
--- a/cpukit/libmisc/Makefile.am
+++ b/cpukit/libmisc/Makefile.am
@@ -182,6 +182,7 @@ libtestsupport_a_SOURCES += testsupport/testbeginend.c
libtestsupport_a_SOURCES += testsupport/testbusy.c
libtestsupport_a_SOURCES += testsupport/testextension.c
libtestsupport_a_SOURCES += testsupport/testparallel.c
+libtestsupport_a_SOURCES += testsupport/testwrappers.c
## fsmount
noinst_LIBRARIES += libfsmount.a
diff --git a/cpukit/libmisc/testsupport/test.h b/cpukit/libmisc/testsupport/test.h
index 116b92d1ae..2b4fcd1073 100644
--- a/cpukit/libmisc/testsupport/test.h
+++ b/cpukit/libmisc/testsupport/test.h
@@ -105,6 +105,12 @@ int rtems_test_begin(const char* name, const RTEMS_TEST_STATE state);
int rtems_test_end(const char* name);
/**
+ * @brief Exit the test without calling exit() since it closes stdin, etc and
+ * pulls in stdio code
+ */
+void rtems_test_exit(int status);
+
+/**
* @brief Prints via the RTEMS printer.
*
* @returns As specified by printf().
diff --git a/cpukit/libmisc/testsupport/testbeginend.c b/cpukit/libmisc/testsupport/testbeginend.c
index 04748cb796..f9dab4ea32 100644
--- a/cpukit/libmisc/testsupport/testbeginend.c
+++ b/cpukit/libmisc/testsupport/testbeginend.c
@@ -123,6 +123,12 @@ int rtems_test_end(const char* name)
);
}
+void rtems_test_exit(int status)
+{
+ (void) status;
+ rtems_shutdown_executive(0);
+}
+
int rtems_test_printf(
const char* format,
...
diff --git a/cpukit/libmisc/testsupport/testwrappers.c b/cpukit/libmisc/testsupport/testwrappers.c
new file mode 100644
index 0000000000..c86c4cc3f8
--- /dev/null
+++ b/cpukit/libmisc/testsupport/testwrappers.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2017 Chris Johns <chrisj@rtems.org>. All rights reserved.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <rtems/test.h>
+
+int __wrap_printf(const char* format, ...);
+int __wrap_puts(const char *str);
+int __wrap_putchar(int c);
+
+int __wrap_printf(
+ const char* format,
+ ...
+)
+{
+ va_list ap;
+ int len;
+ va_start(ap, format);
+ len = rtems_vprintf(
+ &rtems_test_printer,
+ format,
+ ap
+ );
+ va_end(ap);
+ return len;
+}
+
+int __wrap_puts(
+ const char *str
+)
+{
+ return rtems_test_printf( "%s\n", str );
+}
+
+int __wrap_putchar(
+ int c
+)
+{
+ return rtems_test_printf( "%c", c );
+}