summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2011-01-03 00:52:28 (GMT)
committerJonathan Nieder <jrnieder@gmail.com>2011-02-26 10:57:59 (GMT)
commit7b990c90514b24097ee71edbc02cb3a497a9476b (patch)
treee437c9ae2940ae5fa50637878577208426ce1cd6
parent232087fd99915abaa7d917fd181ad8477bb689f2 (diff)
downloadgit-7b990c90514b24097ee71edbc02cb3a497a9476b.zip
git-7b990c90514b24097ee71edbc02cb3a497a9476b.tar.gz
git-7b990c90514b24097ee71edbc02cb3a497a9476b.tar.bz2
vcs-svn: tweak test-line-buffer to not assume line-oriented input
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>
-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: