git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] Add deltifier test.

From
Junio C Hamano <junkio@cox.net>
Date
Dec 12, 2005, 20:41 UTC
Message-ID
<7v4q5ehwu7.fsf@assigned-by-dhcp.cox.net>

This test kicks in only if you built test-delta executable, and makes sure that the basic delta routine is working properly even on empty files.

This commit is to make sure we have a test to catch the breakage. The delitifier code is still broken, which will be fixed with the next commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 * This is a more general reproduction recipe for the problem
   Darrin Thompson reported.  We did not produce delta from or
   to an empty blob.
 t/t0001-delta.sh |   43 +++++++++++++++++++++++++++++++++++++++++++
 test-delta.c     |   11 +++++++++--
 2 files changed, 52 insertions(+), 2 deletions(-)
 create mode 100755 t/t0001-delta.sh
9cfcbd609c42c08de54733e610846dc6dfd22495
diff --git a/t/t0001-delta.sh b/t/t0001-delta.sh
new file mode 100755
index 0000000..2dd88e5
--- /dev/null
+++ b/t/t0001-delta.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+test_description='Deltification regression test'
+
+../test-delta 2>/dev/null
+test $? == 127 && {
+	echo "* Skipping test-delta regression test."
+	exit 0
+}
+
+. ./test-lib.sh
+
+>empty
+echo small >small
+echo smallish >smallish
+cat ../../COPYING >large
+sed -e 's/GNU/G.N.U/g' large >largish
+
+test_expect_success 'No regression in deltify code' \
+'
+fail=0
+for src in empty small smallish large largish
+do
+    for dst in empty small smallish large largish
+    do
+	if  test-delta -d $src $dst delta-$src-$dst &&
+	    test-delta -p $src delta-$src-$dst out-$src-$dst &&
+	    cmp $dst out-$src-$dst
+	then
+	    echo "* OK ($src->$dst deitify and apply)"
+	else
+	    echo "* FAIL ($src->$dst deitify and apply)"
+	    fail=1
+	fi
+    done
+done
+case "$fail" in
+0) (exit 0) ;;
+*) (exit $fail) ;;
+esac
+'
+
+test_done
diff --git a/test-delta.c b/test-delta.c
index 1be8ee0..cc05794 100644
--- a/test-delta.c
+++ b/test-delta.c
@@ -38,7 +38,10 @@ int main(int argc, char *argv[])
 		return 1;
 	}
 	from_size = st.st_size;
-	from_buf = mmap(NULL, from_size, PROT_READ, MAP_PRIVATE, fd, 0);
+	if (from_size)
+		from_buf = mmap(NULL, from_size, PROT_READ, MAP_PRIVATE, fd, 0);
+	else
+		from_buf = "";
 	if (from_buf == MAP_FAILED) {
 		perror(argv[2]);
 		close(fd);
@@ -52,7 +55,11 @@ int main(int argc, char *argv[])
 		return 1;
 	}
 	data_size = st.st_size;
-	data_buf = mmap(NULL, data_size, PROT_READ, MAP_PRIVATE, fd, 0);
+
+	if (data_size)
+		data_buf = mmap(NULL, data_size, PROT_READ, MAP_PRIVATE, fd, 0);
+	else
+		data_buf = "";
 	if (data_buf == MAP_FAILED) {
 		perror(argv[3]);
 		close(fd);
-- 
0.99.9.GIT
Message 1 of 1 in “Add deltifier test.”
  1. 1/2 Add deltifier test.Junio C Hamano, Dec 12, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.