X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Flexer%2Fsegment-test.c;h=acb444f20018c3dceb87da7a106592be21acaed9;hb=5d2044f51d79aa63799eb2a7cfc2937c7a4829cf;hp=62db4814266395b84315857503fd4bfbf33fdc9d;hpb=369c24f1d085a41ec274ebae5fc198fcee567653;p=pspp diff --git a/tests/language/lexer/segment-test.c b/tests/language/lexer/segment-test.c index 62db481426..acb444f200 100644 --- a/tests/language/lexer/segment-test.c +++ b/tests/language/lexer/segment-test.c @@ -70,6 +70,8 @@ main (int argc, char *argv[]) set_program_name (argv[0]); file_name = parse_options (argc, argv); + setvbuf (stdout, NULL, _IONBF, 0); + /* Read from stdin into 'input'. Ensure that 'input' ends in a new-line followed by a null byte. */ input = (!strcmp (file_name, "-") @@ -106,8 +108,7 @@ main (int argc, char *argv[]) static void check_segmentation (const char *input, size_t length, bool print_segments) { - struct segmenter s; - segmenter_init (&s, mode); + struct segmenter s = segmenter_init (mode, false); size_t line_number = 1; size_t line_offset = 0; @@ -157,12 +158,15 @@ check_segmentation (const char *input, size_t length, bool print_segments) if (type == SEG_NEWLINE) { - assert ((n == 1 && input[offset] == '\n') - || (n == 2 - && input[offset] == '\r' && input[offset + 1] == '\n')); + if (n == 1 ? input[offset] != '\n' + : n == 2 ? input[offset] != '\r' || input[offset + 1] != '\n' + : false) + error (EXIT_FAILURE, 0, "NEWLINE segment at offset %zu contains " + "non-newline content \"%.*s\"", offset, n, &input[offset]); } - else - assert (memchr (&input[offset], '\n', n) == NULL); + else if (memchr (&input[offset], '\n', n)) + error (EXIT_FAILURE, 0, "%s segment \"%.*s\" contains new-line", + segment_type_to_string (type), n, &input[offset]); if (!print_segments) { @@ -197,7 +201,7 @@ check_segmentation (const char *input, size_t length, bool print_segments) for (i = MIN (15, strlen (type_name)); i < 16; i++) putchar (' '); - for (i = 0; i < n; ) + for (i = 0; i < n;) { const uint8_t *u_input = CHAR_CAST (const uint8_t *, input); ucs4_t uc; @@ -274,6 +278,7 @@ check_segmentation (const char *input, size_t length, bool print_segments) prompt = segmenter_get_prompt (&s); printf (" (%s)\n", prompt_style_to_string (prompt)); } + fflush (stdout); } while (type != SEG_END);