From a8f00dc2dd2bf633c0153be954906b9040afe481 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