diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2011-01-02 18:52:28 -0600 |
---|---|---|
committer | Jonathan Nieder <jrnieder@gmail.com> | 2011-02-26 04:57:59 -0600 |
commit | 7b990c90514b24097ee71edbc02cb3a497a9476b (patch) | |
tree | e437c9ae2940ae5fa50637878577208426ce1cd6 | |
parent | 232087fd99915abaa7d917fd181ad8477bb689f2 (diff) | |
download | git-7b990c90514b24097ee71edbc02cb3a497a9476b.tar.gz git-7b990c90514b24097ee71edbc02cb3a497a9476b.tar.xz |
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-x | t/t0081-line-buffer.sh | 27 | ||||
-rw-r--r-- | test-line-buffer.c | 10 |
2 files changed, 20 insertions, 17 deletions
diff --git a/t/t0081-line-buffer.sh b/t/t0081-line-buffer.sh index 13ac735b5..68d616399 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 383f35bba..da0bc6502 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: |