X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5a18476fe103e7af163c301d9a21b7b5ebe50e1a..40dc499e35463c28c4572e077206864092452e6a:/tools/tesh/tesh.c diff --git a/tools/tesh/tesh.c b/tools/tesh/tesh.c index 3ad2a7609b..bfeb4c0763 100644 --- a/tools/tesh/tesh.c +++ b/tools/tesh/tesh.c @@ -21,10 +21,8 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(tesh,"TEst SHell utility"); /*** Options ***/ int timeout_value = 5; /* child timeout value */ - +char *testsuite_name; static void handle_line(const char * filepos, char *line) { - int pos; - /* Search end */ xbt_str_rtrim(line+2,"\n"); @@ -56,11 +54,9 @@ static void handle_line(const char * filepos, char *line) { dir--; VERB1("Saw cd '%s'",dir); if (chdir(dir)) { - char buff[256]; - strerror_r(errno, buff, 256); - - ERROR2("Chdir to %s failed: %s",dir+pos+2,buff); - exit(4); + ERROR2("Chdir to %s failed: %s",dir,strerror(errno)); + ERROR1("Test suite `%s': NOK (system error)", testsuite_name); + rctx_armageddon(rctx,4); } break; } /* else, pushline */ @@ -80,7 +76,8 @@ static void handle_line(const char * filepos, char *line) { default: ERROR2("[%s] Syntax error: %s",filepos, line); - exit(1); + ERROR1("Test suite `%s': NOK (syntax error)",testsuite_name); + rctx_armageddon(rctx,1); break; } } @@ -112,7 +109,8 @@ static void handle_suite(const char* filename, FILE* IN) { if (!rctx->cmd && !rctx->is_empty) { ERROR1("[%d] Error: no command found in this chunk of lines.", buffbegin); - exit(1); + ERROR1("Test suite `%s': NOK (syntax error)",testsuite_name); + rctx_armageddon(rctx,1); } if (rctx->cmd) rctx_start(); @@ -183,6 +181,7 @@ int main(int argc,char *argv[]) { /* Find the description file */ if (argc == 1) { INFO0("Test suite from stdin"); + testsuite_name = xbt_strdup("(stdin)"); handle_suite("stdin",stdin); INFO0("Test suite from stdin OK"); @@ -198,14 +197,16 @@ int main(int argc,char *argv[]) { suitename[strlen(suitename)-5] = '\0'; INFO1("Test suite `%s'",suitename); + testsuite_name = suitename; IN=fopen(argv[i], "r"); if (!IN) { perror(bprintf("Impossible to open the suite file `%s'",argv[i])); - exit(1); + ERROR1("Test suite `%s': NOK (system error)",testsuite_name); + rctx_armageddon(rctx,1); } handle_suite(suitename,IN); rctx_wait_bg(); - fclose(IN); //->leads to segfault on amd64... + fclose(IN); INFO1("Test suite `%s' OK",suitename); free(suitename); }