vcs-svn: tweak test-line-buffer to not assume line-oriented input
authorJonathan Nieder <jrnieder@gmail.com>
Mon, 3 Jan 2011 00:52:28 +0000 (18:52 -0600)
committerJonathan Nieder <jrnieder@gmail.com>
Sat, 26 Feb 2011 10:57:59 +0000 (04:57 -0600)
Do not expect an implicit newline after each input record.
Use a separate command to exercise buffer_skip_bytes.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
t/t0081-line-buffer.sh
test-line-buffer.c

index 13ac735b550777447c2969e56b9973306aad434c..68d616399548effd6285d26278eee29aa33f245d 100755 (executable)
@@ -7,45 +7,44 @@ test_description="Test the svn importer's input handling routines.
 test_expect_success 'read greeting' '
        echo HELLO >expect &&
        test-line-buffer <<-\EOF >actual &&
-       read 5
+       read 6
        HELLO
        EOF
        test_cmp expect actual
 '
 
 test_expect_success '0-length read, send along greeting' '
-       printf "%s\n" "" HELLO >expect &&
+       echo HELLO >expect &&
        test-line-buffer <<-\EOF >actual &&
        read 0
-
-       copy 5
+       copy 6
        HELLO
        EOF
        test_cmp expect actual
 '
 
-test_expect_success 'buffer_read_string copes with trailing null byte' '
-       echo >expect &&
+test_expect_success 'buffer_read_string copes with null byte' '
+       >expect &&
        q_to_nul <<-\EOF | test-line-buffer >actual &&
-       read 1
+       read 2
        Q
        EOF
        test_cmp expect actual
 '
 
-test_expect_success '0-length read, copy null byte' '
-       printf "%s\n" "" Q | q_to_nul >expect &&
+test_expect_success 'skip, copy null byte' '
+       echo Q | q_to_nul >expect &&
        q_to_nul <<-\EOF | test-line-buffer >actual &&
-       read 0
-
-       copy 1
+       skip 2
+       Q
+       copy 2
        Q
        EOF
        test_cmp expect actual
 '
 
 test_expect_success 'long reads are truncated' '
-       printf "%s\n" foo "" >expect &&
+       echo foo >expect &&
        test-line-buffer <<-\EOF >actual &&
        read 5
        foo
@@ -56,7 +55,7 @@ test_expect_success 'long reads are truncated' '
 test_expect_success 'long copies are truncated' '
        printf "%s\n" "" foo >expect &&
        test-line-buffer <<-\EOF >actual &&
-       read 0
+       read 1
 
        copy 5
        foo
index 383f35bba6422e29099745f7e9c1f5d2b35e5cc7..da0bc6502cd609814035083f3bc4bde8a598629d 100644 (file)
@@ -19,14 +19,18 @@ static void handle_command(const char *command, const char *arg, struct line_buf
        switch (*command) {
        case 'c':
                if (!prefixcmp(command, "copy ")) {
-                       buffer_copy_bytes(buf, strtouint32(arg) + 1);
+                       buffer_copy_bytes(buf, strtouint32(arg));
                        return;
                }
        case 'r':
                if (!prefixcmp(command, "read ")) {
                        const char *s = buffer_read_string(buf, strtouint32(arg));
-                       printf("%s\n", s);
-                       buffer_skip_bytes(buf, 1);      /* consume newline */
+                       fputs(s, stdout);
+                       return;
+               }
+       case 's':
+               if (!prefixcmp(command, "skip ")) {
+                       buffer_skip_bytes(buf, strtouint32(arg));
                        return;
                }
        default: