git/t/t4128-apply-root.sh
Ævar Arnfjörð Bjarmason c4d1d52631 tests: change some 'test $(git) = "x"' to test_cmp
Change some of the patterns in the test suite where we were hiding the
exit code from "git" by invoking it in a sub-shell within a "test"
expression to use temporary files and test_cmp instead.

These are not all the occurrences of this anti-pattern, but these in
particular hid issues where LSAN was dying, and I'd thus marked these
tests as passing under the linux-leaks CI job in past commits with
"TEST_PASSES_SANITIZE_LEAK=true". Let's deal with that by either
removing that marking, or skipping specific tests under
!SANITIZE_LEAK.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-03-07 13:27:39 -08:00

122 lines
2.5 KiB
Bash
Executable file

#!/bin/sh
test_description='apply same filename'
. ./test-lib.sh
test_expect_success 'setup' '
mkdir -p some/sub/dir &&
echo Hello > some/sub/dir/file &&
git add some/sub/dir/file &&
git commit -m initial &&
git tag initial
'
cat > patch << EOF
diff a/bla/blub/dir/file b/bla/blub/dir/file
--- a/bla/blub/dir/file
+++ b/bla/blub/dir/file
@@ -1,1 +1,1 @@
-Hello
+Bello
EOF
test_expect_success 'apply --directory -p (1)' '
git apply --directory=some/sub -p3 --index patch &&
echo Bello >expect &&
git show :some/sub/dir/file >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/file
'
test_expect_success 'apply --directory -p (2) ' '
git reset --hard initial &&
git apply --directory=some/sub/ -p3 --index patch &&
echo Bello >expect &&
git show :some/sub/dir/file >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/file
'
cat > patch << EOF
diff --git a/newfile b/newfile
new file mode 100644
index 0000000..d95f3ad
--- /dev/null
+++ b/newfile
@@ -0,0 +1 @@
+content
EOF
test_expect_success 'apply --directory (new file)' '
git reset --hard initial &&
git apply --directory=some/sub/dir/ --index patch &&
echo content >expect &&
git show :some/sub/dir/newfile >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/newfile
'
cat > patch << EOF
diff --git a/c/newfile2 b/c/newfile2
new file mode 100644
index 0000000..d95f3ad
--- /dev/null
+++ b/c/newfile2
@@ -0,0 +1 @@
+content
EOF
test_expect_success 'apply --directory -p (new file)' '
git reset --hard initial &&
git apply -p2 --directory=some/sub/dir/ --index patch &&
echo content >expect &&
git show :some/sub/dir/newfile2 >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/newfile2
'
cat > patch << EOF
diff --git a/delfile b/delfile
deleted file mode 100644
index d95f3ad..0000000
--- a/delfile
+++ /dev/null
@@ -1 +0,0 @@
-content
EOF
test_expect_success 'apply --directory (delete file)' '
git reset --hard initial &&
echo content >some/sub/dir/delfile &&
git add some/sub/dir/delfile &&
git apply --directory=some/sub/dir/ --index patch &&
! (git ls-files | grep delfile)
'
cat > patch << 'EOF'
diff --git "a/qu\157tefile" "b/qu\157tefile"
new file mode 100644
index 0000000..d95f3ad
--- /dev/null
+++ "b/qu\157tefile"
@@ -0,0 +1 @@
+content
EOF
test_expect_success 'apply --directory (quoted filename)' '
git reset --hard initial &&
git apply --directory=some/sub/dir/ --index patch &&
echo content >expect &&
git show :some/sub/dir/quotefile >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/quotefile
'
test_done