diff options
author | Chris Johns <chrisj@rtems.org> | 2017-11-08 13:27:25 +1100 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2017-11-11 16:14:59 +1100 |
commit | e6df806a3f46b5488e5e383add9cda43e0059dbe (patch) | |
tree | 560dabf7fec58d1d33cfaf419842ddbd085d8c16 /cpukit | |
parent | bcd0c06c9be41f68d41c2fc1ed9408410b9084a3 (diff) |
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.am | 1 | ||||
-rw-r--r-- | cpukit/libmisc/testsupport/test.h | 6 | ||||
-rw-r--r-- | cpukit/libmisc/testsupport/testbeginend.c | 6 | ||||
-rw-r--r-- | cpukit/libmisc/testsupport/testwrappers.c | 48 |
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 ); +} |