Code

t0081 (line-buffer): add buffering tests
[git.git] / test-line-buffer.c
index da0bc6502cd609814035083f3bc4bde8a598629d..ec19b13ee23d0de5a2423941655452627d3d00cc 100644 (file)
@@ -49,15 +49,31 @@ static void handle_line(const char *line, struct line_buffer *stdin_buf)
 int main(int argc, char *argv[])
 {
        struct line_buffer stdin_buf = LINE_BUFFER_INIT;
+       struct line_buffer file_buf = LINE_BUFFER_INIT;
+       struct line_buffer *input = &stdin_buf;
+       const char *filename;
        char *s;
 
-       if (argc != 1)
-               usage("test-line-buffer < script");
+       if (argc == 1)
+               filename = NULL;
+       else if (argc == 2)
+               filename = argv[1];
+       else
+               usage("test-line-buffer [file] < script");
 
        if (buffer_init(&stdin_buf, NULL))
                die_errno("open error");
+       if (filename) {
+               if (buffer_init(&file_buf, filename))
+                       die_errno("error opening %s", filename);
+               input = &file_buf;
+       }
+
        while ((s = buffer_read_line(&stdin_buf)))
-               handle_line(s, &stdin_buf);
+               handle_line(s, input);
+
+       if (filename && buffer_deinit(&file_buf))
+               die("error reading from %s", filename);
        if (buffer_deinit(&stdin_buf))
                die("input error");
        if (ferror(stdout))