From e6df806a3f46b5488e5e383add9cda43e0059dbe Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Wed, 8 Nov 2017 13:27:25 +1100 Subject: 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. --- cpukit/libmisc/Makefile.am | 1 + cpukit/libmisc/testsupport/test.h | 6 ++++ cpukit/libmisc/testsupport/testbeginend.c | 6 ++++ cpukit/libmisc/testsupport/testwrappers.c | 48 +++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 cpukit/libmisc/testsupport/testwrappers.c (limited to 'cpukit/libmisc') 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 @@ -104,6 +104,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. * 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 . 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 + +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 ); +} -- cgit v1.2.3