mirror of
https://github.com/git/git.git
synced 2024-11-23 09:56:28 +08:00
e5e37517dd
This marks tests that have been leak-free since various recent commits, but which were not marked us such when the memory leak was fixed. These were mostly discovered with the "check" mode added infaececa53f
(test-lib: have the "check" mode for SANITIZE=leak consider leak logs, 2022-07-28). Commits that fixed the last memory leak in these tests. Per narrowing down when they started to pass under SANITIZE=leak with "bisect": - t1022-read-tree-partial-clone.sh:7e2619d8ff
(list_objects_filter_options: plug leak of filter_spec strings, 2022-09-08) - t4053-diff-no-index.sh:07a6f94a6d
(diff-no-index: release prefixed filenames, 2022-09-07) - t6415-merge-dir-to-symlink.sh:bac92b1f39
(Merge branch 'js/ort-clean-up-after-failed-merge', 2022-08-08). - t5554-noop-fetch-negotiator.sh:66eede4a37
(prepare_repo_settings(): plug leak of config values, 2022-09-08) - t2012-checkout-last.sh, t7504-commit-msg-hook.sh, t91{15,46,60}-git-svn-*.sh: The in-flight "pw/rebase-no-reflog-action" series, upon which this is based: https://lore.kernel.org/git/pull.1405.git.1667575142.gitgitgadget@gmail.com/ Let's mark all of these as passing with "TEST_PASSES_SANITIZE_LEAK=true", to have it regression tested, including as part of the "linux-leaks" CI job. Additionally, let's remove the "!SANITIZE_LEAK" prerequisite from tests that now pass, these were marked as failing in: -77e56d55ba
(diff.c: fix a double-free regression ina18d66cefb
, 2022-03-17) -c4d1d52631
(tests: change some 'test $(git) = "x"' to test_cmp, 2022-03-07) These were not spotted with the new "check" mode, but manually, it doesn't cover these sort of prerequisites. There's few enough that we shouldn't bother to automate it. They'll be going away sooner than later. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>
124 lines
3.3 KiB
Bash
Executable File
124 lines
3.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2007 Eric Wong
|
|
|
|
|
|
test_description='git svn dcommit can commit renames of files with ugly names'
|
|
|
|
. ./lib-git-svn.sh
|
|
|
|
test_expect_success 'load repository with strange names' '
|
|
svnadmin load -q "$rawsvnrepo" <"$TEST_DIRECTORY"/t9115/funky-names.dump
|
|
'
|
|
|
|
maybe_start_httpd gtk+
|
|
|
|
test_expect_success 'init and fetch repository' '
|
|
git svn init "$svnrepo" &&
|
|
git svn fetch &&
|
|
git reset --hard git-svn
|
|
'
|
|
|
|
test_expect_success 'create file in existing ugly and empty dir' '
|
|
mkdir -p "#{bad_directory_name}" &&
|
|
echo hi > "#{bad_directory_name}/ foo" &&
|
|
git update-index --add "#{bad_directory_name}/ foo" &&
|
|
git commit -m "new file in ugly parent" &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_expect_success 'rename ugly file' '
|
|
git mv "#{bad_directory_name}/ foo" "file name with feces" &&
|
|
git commit -m "rename ugly file" &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_expect_success 'rename pretty file' '
|
|
echo :x > pretty &&
|
|
git update-index --add pretty &&
|
|
git commit -m "pretty :x" &&
|
|
git svn dcommit &&
|
|
mkdir -p regular_dir_name &&
|
|
git mv pretty regular_dir_name/pretty &&
|
|
git commit -m "moved pretty file" &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_expect_success 'rename pretty file into ugly one' '
|
|
git mv regular_dir_name/pretty "#{bad_directory_name}/ booboo" &&
|
|
git commit -m booboo &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_expect_success 'add a file with plus signs' '
|
|
echo .. > +_+ &&
|
|
git update-index --add +_+ &&
|
|
git commit -m plus &&
|
|
mkdir gtk+ &&
|
|
git mv +_+ gtk+/_+_ &&
|
|
git commit -m plus_dir &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_expect_success 'clone the repository to test rebase' '
|
|
git svn clone "$svnrepo" test-rebase &&
|
|
(
|
|
cd test-rebase &&
|
|
echo test-rebase >test-rebase &&
|
|
git add test-rebase &&
|
|
git commit -m test-rebase
|
|
)
|
|
'
|
|
|
|
test_expect_success 'make a commit to test rebase' '
|
|
echo test-rebase-main > test-rebase-main &&
|
|
git add test-rebase-main &&
|
|
git commit -m test-rebase-main &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_expect_success 'git svn rebase works inside a fresh-cloned repository' '
|
|
(
|
|
cd test-rebase &&
|
|
git svn rebase &&
|
|
test -e test-rebase-main &&
|
|
test -e test-rebase
|
|
)'
|
|
|
|
# Without this, LC_ALL=C as set in test-lib.sh, and Cygwin converts
|
|
# non-ASCII characters in filenames unexpectedly, and causes errors.
|
|
# https://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars
|
|
# > Some characters are disallowed in filenames on Windows filesystems. ...
|
|
# ...
|
|
# > ... All of the above characters, except for the backslash, are converted
|
|
# > to special UNICODE characters in the range 0xf000 to 0xf0ff (the
|
|
# > "Private use area") when creating or accessing files.
|
|
prepare_utf8_locale
|
|
test_expect_success UTF8,!MINGW,!UTF8_NFD_TO_NFC 'svn.pathnameencoding=cp932 new file on dcommit' '
|
|
LC_ALL=$GIT_TEST_UTF8_LOCALE &&
|
|
export LC_ALL &&
|
|
neq=$(printf "\201\202") &&
|
|
git config svn.pathnameencoding cp932 &&
|
|
echo neq >"$neq" &&
|
|
git add "$neq" &&
|
|
git commit -m "neq" &&
|
|
git svn dcommit
|
|
'
|
|
|
|
# See the comment on the above test for setting of LC_ALL.
|
|
test_expect_success !MINGW,!UTF8_NFD_TO_NFC 'svn.pathnameencoding=cp932 rename on dcommit' '
|
|
LC_ALL=$GIT_TEST_UTF8_LOCALE &&
|
|
export LC_ALL &&
|
|
inf=$(printf "\201\207") &&
|
|
git config svn.pathnameencoding cp932 &&
|
|
echo inf >"$inf" &&
|
|
git add "$inf" &&
|
|
git commit -m "inf" &&
|
|
git svn dcommit &&
|
|
git mv "$inf" inf &&
|
|
git commit -m "inf rename" &&
|
|
git svn dcommit
|
|
'
|
|
|
|
test_done
|