summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xt/t0081-line-buffer.sh27
-rw-r--r--test-line-buffer.c10
2 files changed, 20 insertions, 17 deletions
diff --git a/t/t0081-line-buffer.sh b/t/t0081-line-buffer.sh
index 13ac735..68d6163 100755
--- a/t/t0081-line-buffer.sh
+++ b/t/t0081-line-buffer.sh
@@ -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
diff --git a/test-line-buffer.c b/test-line-buffer.c
index 383f35b..da0bc65 100644
--- a/test-line-buffer.c
+++ b/test-line-buffer.c
@@ -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: