'printf "\0\1\2XX" > too_big_literal &&
test_must_fail test-tool delta -p /dev/null too_big_literal /dev/null'
-# \5 - five bytes in base
+# \4 - four bytes in base
# \1 - one byte in result
# \221 - copy, one byte offset, one byte size
# \0 - copy from offset 0
# \2 - copy two bytes (one too many)
test_expect_success \
'apply delta with too many copied bytes' \
- 'printf "\5\1\221\0\2" > too_big_copy &&
- echo base >base &&
+ 'printf "\4\1\221\0\2" > too_big_copy &&
+ printf base >base &&
test_must_fail test-tool delta -p base too_big_copy /dev/null'
# \0 - empty base
'printf "\0\1\221\0\1" > truncated_base &&
test_must_fail test-tool delta -p /dev/null truncated_base /dev/null'
-# \5 - five bytes in base
-# \5 - five bytes in result
+# \4 - four bytes in base
+# \2 - two bytes in result
# \1 - one literal byte (X)
# \221 - copy, one byte offset, one byte size
# (offset/size missing)
#
# Note that the literal byte is necessary to get past the uninteresting minimum
# delta size check.
-test_expect_failure \
+test_expect_success \
'apply delta with truncated copy parameters' \
- 'printf "\5\5\1X\221" > truncated_copy_delta &&
- echo base >base &&
+ 'printf "\4\2\1X\221" > truncated_copy_delta &&
+ printf base >base &&
test_must_fail test-tool delta -p base truncated_copy_delta /dev/null'
+# \0 - empty base
+# \1 - one byte in result
+# \1 - one literal byte (X)
+# \1 - trailing garbage command
+test_expect_success \
+ 'apply delta with trailing garbage literal' \
+ 'printf "\0\1\1X\1" > tail_garbage_literal &&
+ test_must_fail test-tool delta -p /dev/null tail_garbage_literal /dev/null'
+
+# \4 - four bytes in base
+# \1 - one byte in result
+# \1 - one literal byte (X)
+# \221 - copy, one byte offset, one byte size
+# \0 - copy from offset 0
+# \1 - copy 1 byte
+test_expect_success \
+ 'apply delta with trailing garbage copy' \
+ 'printf "\4\1\1X\221\0\1" > tail_garbage_copy &&
+ printf base >base &&
+ test_must_fail test-tool delta -p /dev/null tail_garbage_copy /dev/null'
+
+# \0 - empty base
+# \1 - one byte in result
+# \1 - one literal byte (X)
+# \0 - bogus opcode
+test_expect_success \
+ 'apply delta with trailing garbage opcode' \
+ 'printf "\0\1\1X\0" > tail_garbage_opcode &&
+ test_must_fail test-tool delta -p /dev/null tail_garbage_opcode /dev/null'
+
test_done