/*** 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");
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 */
default:
ERROR2("[%s] Syntax error: %s",filepos, line);
- exit(1);
+ ERROR1("Test suite `%s': NOK (syntax error)",testsuite_name);
+ rctx_armageddon(rctx,1);
break;
}
}
int line_num=0;
char file_pos[256];
- buff_t buff=buff_new();
+ xbt_strbuff_t buff=xbt_strbuff_new();
int buffbegin = 0;
rctx = rctx_new();
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();
}
if (buff->used || to_be_continued) {
- buff_append(buff,line);
+ xbt_strbuff_append(buff,line);
if (!to_be_continued) {
snprintf(file_pos,256,"%s:%d",filename,buffbegin);
handle_line(file_pos, buff->data);
- buff_empty(buff);
+ xbt_strbuff_empty(buff);
}
} else {
/* Clear buffers */
if (line)
free(line);
- buff_free(buff);
+ xbt_strbuff_free(buff);
}
/* 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");
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);
}