From fcc4422ef413b6a14c41f2111d725dbe4c54967c Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Sat, 25 Aug 2012 01:43:23 +0100 Subject: [PATCH] _PDCLIB_iotest.h: the code for determining if the result matched or not was too clever, and operator short circuiting was casuing the "actual" result for cases where the return codes didn't match to be stale (i.e. the result from a previous test). This should make fixing PDCLIB-6 much simpler --- testing/_PDCLIB_iotest.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/testing/_PDCLIB_iotest.h b/testing/_PDCLIB_iotest.h index 86d645a..134a444 100644 --- a/testing/_PDCLIB_iotest.h +++ b/testing/_PDCLIB_iotest.h @@ -15,19 +15,19 @@ /* ...printf() tests */ #if defined( _PDCLIB_FILEIO ) - #define RESULT_MISMATCH( act, exp ) \ - rewind( act ), \ - result_buffer[ fread( result_buffer, 1, strlen( exp ) + 1, act ) ] = '\0', \ - rewind( act ), \ - memcmp( result_buffer, exp, strlen( exp ) ) + #define GET_RESULT \ + rewind( target ); \ + fread( result_buffer, 1, actual_rc, target ); + #define RESULT_MISMATCH( act, exp ) strcmp( result_buffer, exp ) != 0 #define RESULT_STRING( tgt ) result_buffer #elif defined( _PDCLIB_STRINGIO ) #define RESULT_MISMATCH( act, exp ) strcmp( act, exp ) != 0 + #define GET_RESULT #define RESULT_STRING( tgt ) tgt #endif #ifdef _PDCLIB_FILEIO -#define PREP_RESULT_BUFFER char result_buffer[100]; +#define PREP_RESULT_BUFFER char result_buffer[100] = { 0 }; rewind( target ); #else #define PREP_RESULT_BUFFER #endif @@ -35,6 +35,7 @@ #define PRINTF_TEST( expected_rc, expected_string, ... ) do { \ PREP_RESULT_BUFFER \ int actual_rc = testprintf( target, __VA_ARGS__ ); \ + GET_RESULT \ if ( ( actual_rc != expected_rc ) || \ ( RESULT_MISMATCH( target, expected_string ) ) ) \ { \ -- 2.40.0