mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
![Ævar Arnfjörð Bjarmason](/assets/img/avatar_default.png)
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>
75 lines
1.6 KiB
Bash
Executable file
75 lines
1.6 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='git reset in a bare repository'
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup non-bare' '
|
|
echo one >file &&
|
|
git add file &&
|
|
git commit -m one &&
|
|
echo two >file &&
|
|
git commit -a -m two
|
|
'
|
|
|
|
test_expect_success '"hard" reset requires a worktree' '
|
|
(cd .git &&
|
|
test_must_fail git reset --hard)
|
|
'
|
|
|
|
test_expect_success '"merge" reset requires a worktree' '
|
|
(cd .git &&
|
|
test_must_fail git reset --merge)
|
|
'
|
|
|
|
test_expect_success '"keep" reset requires a worktree' '
|
|
(cd .git &&
|
|
test_must_fail git reset --keep)
|
|
'
|
|
|
|
test_expect_success '"mixed" reset is ok' '
|
|
(cd .git && git reset)
|
|
'
|
|
|
|
test_expect_success '"soft" reset is ok' '
|
|
(cd .git && git reset --soft)
|
|
'
|
|
|
|
test_expect_success 'hard reset works with GIT_WORK_TREE' '
|
|
mkdir worktree &&
|
|
GIT_WORK_TREE=$PWD/worktree GIT_DIR=$PWD/.git git reset --hard &&
|
|
test_cmp file worktree/file
|
|
'
|
|
|
|
test_expect_success 'setup bare' '
|
|
git clone --bare . bare.git &&
|
|
cd bare.git
|
|
'
|
|
|
|
test_expect_success '"hard" reset is not allowed in bare' '
|
|
test_must_fail git reset --hard HEAD^
|
|
'
|
|
|
|
test_expect_success '"merge" reset is not allowed in bare' '
|
|
test_must_fail git reset --merge HEAD^
|
|
'
|
|
|
|
test_expect_success '"keep" reset is not allowed in bare' '
|
|
test_must_fail git reset --keep HEAD^
|
|
'
|
|
|
|
test_expect_success '"mixed" reset is not allowed in bare' '
|
|
test_must_fail git reset --mixed HEAD^
|
|
'
|
|
|
|
test_expect_success '"soft" reset is allowed in bare' '
|
|
git reset --soft HEAD^ &&
|
|
git show --pretty=format:%s >out &&
|
|
echo one >expect &&
|
|
head -n 1 out >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|