Mercurial > projects > dstress
diff dstress.c @ 999:69f95c134121
added conditional result capabilities
author | thomask |
---|---|
date | Wed, 17 May 2006 04:57:35 +0000 |
parents | 94714c219f3b |
children | ab5680607b8d |
line wrap: on
line diff
--- a/dstress.c Mon May 15 05:42:01 2006 +0000 +++ b/dstress.c Wed May 17 04:57:35 2006 +0000 @@ -688,6 +688,23 @@ return 0; } +int conditionalResult(const char* buffer){ + if(strstr(buffer, "DSTRESS{XFAIL}")){ + return RES_XFAIL; + }else if(strstr(buffer, "DSTRESS{XPASS}")){ + return RES_XPASS; + }else if(strstr(buffer, "DSTRESS{FAIL}")){ + return RES_FAIL; + }else if(strstr(buffer, "DSTRESS{PASS}")){ + return RES_PASS; + }else if(strstr(buffer, "DSTRESS{ERROR}")){ + return RES_ERROR; + }else{ + return 0; + } + +} + /* system call with time-out */ int crashRun(const char* cmd, char** logFile){ @@ -858,7 +875,11 @@ free(logFile); good_error = checkErrorMessage(error_file, error_line, buffer); - if(hadExecCrash(buffer)){ + testResult = conditionalResult(buffer); + + if(testResult){ + /* conditional result */ + }else if(hadExecCrash(buffer)){ testResult = RES_ERROR; }else if(modus & MODE_COMPILE){ if(res == EXIT_SUCCESS){ @@ -966,12 +987,15 @@ good_error = 1; } + testResult = conditionalResult(buffer); if(hadExecCrash(buffer)){ free(buffer); return RES_ERROR; }else{ free(buffer); - if((res == EXIT_FAILURE) && good_error){ + if(testResult){ + return testResult; + }else if((res == EXIT_FAILURE) && good_error){ return RES_FAIL; }else if(res!=EXIT_SUCCESS){ return RES_ERROR | (good_error ? 0 : RES_BAD_MSG); @@ -1002,6 +1026,11 @@ } printf("%s\n", buffer); res=crashRun(buffer, &logFile); + testResult = conditionalResult(buffer); + if(testResult){ + free(buffer); + return testResult; + } free(buffer); /* diagnostic 2/3 */ @@ -1022,6 +1051,11 @@ ||(res==EXIT_SUCCESS && (modus & MODE_RUN))) && gdb_script != NULL) { + testResult = conditionalResult(buffer); + if(testResult){ + return testResult; + } + free(buffer); good_gdb = 0; /* test 3/3 - gdb */ @@ -1048,6 +1082,11 @@ good_gdb = 1; #endif /* REG_EXTENDED else */ + testResult = conditionalResult(buffer); + if(testResult){ + return testResult; + } + if(modus & MODE_RUN){ if(hadExecCrash(buffer)){ testResult = RES_ERROR;