From 1d49f0d1a1b7b2941e56cf8384a7a4267e98150c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kiedrowicz?= Date: Sat, 11 Apr 2009 17:26:24 +0200 Subject: tests: test applying criss-cross rename patch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Originally reported by Linus in $gmane/116198 Signed-off-by: Michał Kiedrowicz Signed-off-by: Junio C Hamano --- t/t4130-apply-criss-cross-rename.sh | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 t/t4130-apply-criss-cross-rename.sh (limited to 't') diff --git a/t/t4130-apply-criss-cross-rename.sh b/t/t4130-apply-criss-cross-rename.sh new file mode 100755 index 0000000000..08c5f38b01 --- /dev/null +++ b/t/t4130-apply-criss-cross-rename.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +test_description='git apply handling criss-cross rename patch.' +. ./test-lib.sh + +create_file() { + cnt=0 + while test $cnt -le 100 + do + cnt=$(($cnt + 1)) + echo "$2" >> "$1" + done +} + +test_expect_success 'setup' ' + create_file file1 "File1 contents" && + create_file file2 "File2 contents" && + git add file1 file2 && + git commit -m 1 +' + +test_expect_success 'criss-cross rename' ' + mv file1 tmp && + mv file2 file1 && + mv tmp file2 +' + +test_expect_success 'diff -M -B' ' + git diff -M -B > diff && + git reset --hard + +' + +test_expect_failure 'apply' ' + git apply diff +' + +test_done -- cgit v1.2.3 From e8141fcf54b4e8c2c12300da1ad1bc3573a4e204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kiedrowicz?= Date: Sat, 11 Apr 2009 21:31:00 +0200 Subject: builtin-apply: keep information about files to be deleted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Example correct diff generated by `diff -M -B' might look like this: diff --git a/file1 b/file2 similarity index 100% rename from file1 rename to file2 diff --git a/file2 b/file1 similarity index 100% rename from file2 rename to file1 Information about removing `file2' comes after information about creation of new `file2' (renamed from `file1'). Existing implementation isn't able to apply such patch, because it has to know in advance which files will be removed. This patch populates fn_table with information about removal of files before calling check_patch() for each patch to be applied. Signed-off-by: Michał Kiedrowicz Signed-off-by: Junio C Hamano --- t/t4130-apply-criss-cross-rename.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 't') diff --git a/t/t4130-apply-criss-cross-rename.sh b/t/t4130-apply-criss-cross-rename.sh index 08c5f38b01..8623dbebab 100755 --- a/t/t4130-apply-criss-cross-rename.sh +++ b/t/t4130-apply-criss-cross-rename.sh @@ -31,7 +31,7 @@ test_expect_success 'diff -M -B' ' ' -test_expect_failure 'apply' ' +test_expect_success 'apply' ' git apply diff ' -- cgit v1.2.3 From f0583867e746985e9d62f57d5ba6ce27b2603447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kiedrowicz?= Date: Sat, 18 Apr 2009 23:03:57 +0200 Subject: tests: make test-apply-criss-cross-rename more robust I realized that this test does check if git-apply succeeds, but doesn't tell if it applies patches correctly. So I added test_cmp to check it. I also added a test which checks swapping three files. Signed-off-by: Junio C Hamano --- t/t4130-apply-criss-cross-rename.sh | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 't') diff --git a/t/t4130-apply-criss-cross-rename.sh b/t/t4130-apply-criss-cross-rename.sh index 8623dbebab..7cfa2d6287 100755 --- a/t/t4130-apply-criss-cross-rename.sh +++ b/t/t4130-apply-criss-cross-rename.sh @@ -15,14 +15,17 @@ create_file() { test_expect_success 'setup' ' create_file file1 "File1 contents" && create_file file2 "File2 contents" && - git add file1 file2 && + create_file file3 "File3 contents" && + git add file1 file2 file3 && git commit -m 1 ' test_expect_success 'criss-cross rename' ' mv file1 tmp && mv file2 file1 && - mv tmp file2 + mv tmp file2 && + cp file1 file1-swapped && + cp file2 file2-swapped ' test_expect_success 'diff -M -B' ' @@ -32,7 +35,32 @@ test_expect_success 'diff -M -B' ' ' test_expect_success 'apply' ' - git apply diff + git apply diff && + test_cmp file1 file1-swapped && + test_cmp file2 file2-swapped +' + +test_expect_success 'criss-cross rename' ' + git reset --hard && + mv file1 tmp && + mv file2 file1 && + mv file3 file2 + mv tmp file3 && + cp file1 file1-swapped && + cp file2 file2-swapped && + cp file3 file3-swapped +' + +test_expect_success 'diff -M -B' ' + git diff -M -B > diff && + git reset --hard +' + +test_expect_success 'apply' ' + git apply diff && + test_cmp file1 file1-swapped && + test_cmp file2 file2-swapped && + test_cmp file3 file3-swapped ' test_done -- cgit v1.2.3