Glen Choo | 8d1a744 | 2022-07-14 21:28:01 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='verify safe.bareRepository checks' |
| 4 | |
| 5 | TEST_PASSES_SANITIZE_LEAK=true |
| 6 | . ./test-lib.sh |
| 7 | |
| 8 | pwd="$(pwd)" |
| 9 | |
| 10 | expect_accepted () { |
| 11 | git "$@" rev-parse --git-dir |
| 12 | } |
| 13 | |
| 14 | expect_rejected () { |
| 15 | test_must_fail git "$@" rev-parse --git-dir 2>err && |
| 16 | grep -F "cannot use bare repository" err |
| 17 | } |
| 18 | |
| 19 | test_expect_success 'setup bare repo in worktree' ' |
| 20 | git init outer-repo && |
| 21 | git init --bare outer-repo/bare-repo |
| 22 | ' |
| 23 | |
| 24 | test_expect_success 'safe.bareRepository unset' ' |
| 25 | expect_accepted -C outer-repo/bare-repo |
| 26 | ' |
| 27 | |
| 28 | test_expect_success 'safe.bareRepository=all' ' |
| 29 | test_config_global safe.bareRepository all && |
| 30 | expect_accepted -C outer-repo/bare-repo |
| 31 | ' |
| 32 | |
| 33 | test_expect_success 'safe.bareRepository=explicit' ' |
| 34 | test_config_global safe.bareRepository explicit && |
| 35 | expect_rejected -C outer-repo/bare-repo |
| 36 | ' |
| 37 | |
| 38 | test_expect_success 'safe.bareRepository in the repository' ' |
| 39 | # safe.bareRepository must not be "explicit", otherwise |
| 40 | # git config fails with "fatal: not in a git directory" (like |
| 41 | # safe.directory) |
| 42 | test_config -C outer-repo/bare-repo safe.bareRepository \ |
| 43 | all && |
| 44 | test_config_global safe.bareRepository explicit && |
| 45 | expect_rejected -C outer-repo/bare-repo |
| 46 | ' |
| 47 | |
| 48 | test_expect_success 'safe.bareRepository on the command line' ' |
| 49 | test_config_global safe.bareRepository explicit && |
| 50 | expect_accepted -C outer-repo/bare-repo \ |
| 51 | -c safe.bareRepository=all |
| 52 | ' |
| 53 | |
Glen Choo | ecec57b | 2022-10-13 17:43:47 +0000 | [diff] [blame] | 54 | test_expect_success 'safe.bareRepository in included file' ' |
| 55 | cat >gitconfig-include <<-\EOF && |
| 56 | [safe] |
| 57 | bareRepository = explicit |
| 58 | EOF |
| 59 | git config --global --add include.path "$(pwd)/gitconfig-include" && |
| 60 | expect_rejected -C outer-repo/bare-repo |
| 61 | ' |
| 62 | |
Glen Choo | 8d1a744 | 2022-07-14 21:28:01 +0000 | [diff] [blame] | 63 | test_done |