diff options
Diffstat (limited to 't/t0081-line-buffer.sh')
-rwxr-xr-x | t/t0081-line-buffer.sh | 131 |
1 files changed, 10 insertions, 121 deletions
diff --git a/t/t0081-line-buffer.sh b/t/t0081-line-buffer.sh index 550fad0823..bd83ed371a 100755 --- a/t/t0081-line-buffer.sh +++ b/t/t0081-line-buffer.sh @@ -2,135 +2,33 @@ test_description="Test the svn importer's input handling routines. -These tests exercise the line_buffer library, but their real purpose -is to check the assumptions that library makes of the platform's input -routines. Processes engaged in bi-directional communication would -hang if fread or fgets is too greedy. +These tests provide some simple checks that the line_buffer API +behaves as advertised. While at it, check that input of newlines and null bytes are handled correctly. " . ./test-lib.sh -test -n "$GIT_REMOTE_SVN_TEST_BIG_FILES" && test_set_prereq EXPENSIVE - -generate_tens_of_lines () { - tens=$1 && - line=$2 && - - i=0 && - while test $i -lt "$tens" - do - for j in a b c d e f g h i j - do - echo "$line" - done && - : $((i = $i + 1)) || - return - done -} - -long_read_test () { - : each line is 10 bytes, including newline && - line=abcdefghi && - echo "$line" >expect && - - if ! test_declared_prereq PIPE - then - echo >&4 "long_read_test: need to declare PIPE prerequisite" - return 127 - fi && - tens_of_lines=$(($1 / 100 + 1)) && - lines=$(($tens_of_lines * 10)) && - readsize=$((($lines - 1) * 10 + 3)) && - copysize=7 && - rm -f input && - mkfifo input && - { - { - generate_tens_of_lines $tens_of_lines "$line" && - sleep 100 - } >input & - } && - test-line-buffer input <<-EOF >output && - read $readsize - copy $copysize - EOF - kill $! && - test_line_count = $lines output && - tail -n 1 <output >actual && - test_cmp expect actual -} - -test_expect_success 'setup: have pipes?' ' - rm -f frob && - if mkfifo frob - then - test_set_prereq PIPE - fi -' - test_expect_success 'hello world' ' - echo HELLO >expect && + echo ">HELLO" >expect && test-line-buffer <<-\EOF >actual && - read 6 + binary 6 HELLO EOF test_cmp expect actual ' -test_expect_success PIPE '0-length read, no input available' ' - >expect && - rm -f input && - mkfifo input && - { - sleep 100 >input & - } && - test-line-buffer input <<-\EOF >actual && - read 0 - copy 0 - EOF - kill $! && - test_cmp expect actual -' - test_expect_success '0-length read, send along greeting' ' - echo HELLO >expect && + echo ">HELLO" >expect && test-line-buffer <<-\EOF >actual && - read 0 + binary 0 copy 6 HELLO EOF test_cmp expect actual ' -test_expect_success PIPE '1-byte read, no input available' ' - printf "%s" ab >expect && - rm -f input && - mkfifo input && - { - { - printf "%s" a && - printf "%s" b && - sleep 100 - } >input & - } && - test-line-buffer input <<-\EOF >actual && - read 1 - copy 1 - EOF - kill $! && - test_cmp expect actual -' - -test_expect_success PIPE 'long read (around 8192 bytes)' ' - long_read_test 8192 -' - -test_expect_success PIPE,EXPENSIVE 'longer read (around 65536 bytes)' ' - long_read_test 65536 -' - test_expect_success 'read from file descriptor' ' rm -f input && echo hello >expect && @@ -140,15 +38,6 @@ test_expect_success 'read from file descriptor' ' test_cmp expect actual ' -test_expect_success 'buffer_read_string copes with null byte' ' - >expect && - q_to_nul <<-\EOF | test-line-buffer >actual && - read 2 - Q - EOF - test_cmp expect actual -' - test_expect_success 'skip, copy null byte' ' echo Q | q_to_nul >expect && q_to_nul <<-\EOF | test-line-buffer >actual && @@ -170,18 +59,18 @@ test_expect_success 'read null byte' ' ' test_expect_success 'long reads are truncated' ' - echo foo >expect && + echo ">foo" >expect && test-line-buffer <<-\EOF >actual && - read 5 + binary 5 foo EOF test_cmp expect actual ' test_expect_success 'long copies are truncated' ' - printf "%s\n" "" foo >expect && + printf "%s\n" ">" foo >expect && test-line-buffer <<-\EOF >actual && - read 1 + binary 1 copy 5 foo |