test: improve formatting of diagnostic messages
Put a space after the '#' and handle messages with newlines. PR-URL: https://github.com/libuv/libuv/pull/898 Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
parent
dd9f751ead
commit
b936ace934
@ -289,8 +289,7 @@ long int process_output_size(process_info_t *p) {
|
|||||||
|
|
||||||
|
|
||||||
/* Copy the contents of the stdio output buffer to `fd`. */
|
/* Copy the contents of the stdio output buffer to `fd`. */
|
||||||
int process_copy_output(process_info_t *p, int fd) {
|
int process_copy_output(process_info_t* p, FILE* stream) {
|
||||||
ssize_t nwritten;
|
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -301,18 +300,8 @@ int process_copy_output(process_info_t *p, int fd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: what if the line is longer than buf */
|
/* TODO: what if the line is longer than buf */
|
||||||
while (fgets(buf, sizeof(buf), p->stdout_file) != NULL) {
|
while (fgets(buf, sizeof(buf), p->stdout_file) != NULL)
|
||||||
/* TODO: what if write doesn't write the whole buffer... */
|
print_lines(buf, strlen(buf), stream);
|
||||||
nwritten = 0;
|
|
||||||
|
|
||||||
nwritten += write(fd, "#", 1);
|
|
||||||
nwritten += write(fd, buf, strlen(buf));
|
|
||||||
|
|
||||||
if (nwritten < 0) {
|
|
||||||
perror("write");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ferror(p->stdout_file)) {
|
if (ferror(p->stdout_file)) {
|
||||||
perror("read");
|
perror("read");
|
||||||
|
|||||||
@ -208,10 +208,9 @@ long int process_output_size(process_info_t *p) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int process_copy_output(process_info_t *p, int fd) {
|
int process_copy_output(process_info_t* p, FILE* stream) {
|
||||||
DWORD read;
|
DWORD read;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
char *line, *start;
|
|
||||||
|
|
||||||
if (SetFilePointer(p->stdio_out,
|
if (SetFilePointer(p->stdio_out,
|
||||||
0,
|
0,
|
||||||
@ -220,23 +219,8 @@ int process_copy_output(process_info_t *p, int fd) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
write(fd, "#", 1);
|
while (ReadFile(p->stdio_out, &buf, sizeof(buf), &read, NULL) && read > 0)
|
||||||
|
print_lines(buf, read, stream);
|
||||||
while (ReadFile(p->stdio_out, (void*)&buf, sizeof(buf), &read, NULL) &&
|
|
||||||
read > 0) {
|
|
||||||
start = buf;
|
|
||||||
|
|
||||||
while ((line = strchr(start, '\n')) != NULL) {
|
|
||||||
write(fd, start, line - start + 1);
|
|
||||||
write(fd, "#", 1);
|
|
||||||
start = line + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (start < buf + read)
|
|
||||||
write(fd, start, buf + read - start);
|
|
||||||
}
|
|
||||||
|
|
||||||
write(fd, "\n", 1);
|
|
||||||
|
|
||||||
if (GetLastError() != ERROR_HANDLE_EOF)
|
if (GetLastError() != ERROR_HANDLE_EOF)
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@ -282,7 +282,7 @@ out:
|
|||||||
|
|
||||||
/* Show error and output from processes if the test failed. */
|
/* Show error and output from processes if the test failed. */
|
||||||
if ((status != TEST_OK && status != TEST_SKIP) || task->show_output) {
|
if ((status != TEST_OK && status != TEST_SKIP) || task->show_output) {
|
||||||
fprintf(stderr, "#");
|
fprintf(stderr, "# ");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
|
|
||||||
for (i = 0; i < process_count; i++) {
|
for (i = 0; i < process_count; i++) {
|
||||||
@ -302,7 +302,7 @@ out:
|
|||||||
default:
|
default:
|
||||||
fprintf(stderr, "Output from process `%s`:\n", process_get_name(&processes[i]));
|
fprintf(stderr, "Output from process `%s`:\n", process_get_name(&processes[i]));
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
process_copy_output(&processes[i], fileno(stderr));
|
process_copy_output(&processes[i], stderr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -322,7 +322,7 @@ out:
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
for (i = 0; i < process_count; i++) {
|
for (i = 0; i < process_count; i++) {
|
||||||
process_copy_output(&processes[i], fileno(stderr));
|
process_copy_output(&processes[i], stderr);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -408,3 +408,21 @@ void print_tests(FILE* stream) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void print_lines(const char* buffer, size_t size, FILE* stream) {
|
||||||
|
const char* start;
|
||||||
|
const char* end;
|
||||||
|
|
||||||
|
start = buffer;
|
||||||
|
while ((end = memchr(start, '\n', &buffer[size] - start))) {
|
||||||
|
fprintf(stream, "# %.*s\n", (int) (end - start), start);
|
||||||
|
fflush(stream);
|
||||||
|
start = end + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (start < &buffer[size]) {
|
||||||
|
fprintf(stream, "# %s\n", start);
|
||||||
|
fflush(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -126,6 +126,8 @@ int run_test_part(const char* test, const char* part);
|
|||||||
*/
|
*/
|
||||||
void print_tests(FILE* stream);
|
void print_tests(FILE* stream);
|
||||||
|
|
||||||
|
/* Print lines in |buffer| as TAP diagnostics to |stream|. */
|
||||||
|
void print_lines(const char* buffer, size_t size, FILE* stream);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stuff that should be implemented by test-runner-<platform>.h
|
* Stuff that should be implemented by test-runner-<platform>.h
|
||||||
@ -148,8 +150,8 @@ int process_wait(process_info_t *vec, int n, int timeout);
|
|||||||
/* Returns the number of bytes in the stdio output buffer for process `p`. */
|
/* Returns the number of bytes in the stdio output buffer for process `p`. */
|
||||||
long int process_output_size(process_info_t *p);
|
long int process_output_size(process_info_t *p);
|
||||||
|
|
||||||
/* Copy the contents of the stdio output buffer to `fd`. */
|
/* Copy the contents of the stdio output buffer to `stream`. */
|
||||||
int process_copy_output(process_info_t *p, int fd);
|
int process_copy_output(process_info_t* p, FILE* stream);
|
||||||
|
|
||||||
/* Copy the last line of the stdio output buffer to `buffer` */
|
/* Copy the last line of the stdio output buffer to `buffer` */
|
||||||
int process_read_last_line(process_info_t *p,
|
int process_read_last_line(process_info_t *p,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user