diff --git a/t/t9904-merge-leak.sh b/t/t9904-merge-leak.sh new file mode 100755 index 00000000000000..67e14bcd2c3090 --- /dev/null +++ b/t/t9904-merge-leak.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# + +test_description='regression test for memory leak in git merge' + +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + +. ./lib-bash.sh + +# test-lib.sh disables LeakSanitizer by default, but we want it enabled +# for this test +export ASAN_OPTIONS= + +. "$GIT_BUILD_DIR/contrib/completion/git-prompt.sh" + +test_expect_success 'Merge fails due to local changes' ' + git init && + echo x > x.txt && + git add . && + git commit -m "WIP" && + git checkout -b dev && + echo y > x.txt && + git add . && + git commit -m "WIP" && + git checkout main && + echo z > x.txt && + git add . && + git commit -m "WIP" && + echo a > x.txt && + git add . && + (echo "error: ''Your local changes to the following files would be overwritten by merge:''" >expected && + echo " x.txt" >>expected && + echo "Merge with strategy ort failed." >>expected && + (git merge dev 2>actual || echo "merge error is expected") && + test_cmp expected actual) +' + +test_done