]>
Commit | Line | Data |
---|---|---|
f6adec4e JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='check handling of .gitmodule url with dash' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_expect_success 'create submodule with protected dash in url' ' | |
7 | git init upstream && | |
8 | git -C upstream commit --allow-empty -m base && | |
9 | mv upstream ./-upstream && | |
10 | git submodule add ./-upstream sub && | |
11 | git add sub .gitmodules && | |
12 | git commit -m submodule | |
13 | ' | |
14 | ||
15 | test_expect_success 'clone can recurse submodule' ' | |
16 | test_when_finished "rm -rf dst" && | |
17 | git clone --recurse-submodules . dst && | |
18 | echo base >expect && | |
19 | git -C dst/sub log -1 --format=%s >actual && | |
20 | test_cmp expect actual | |
21 | ' | |
22 | ||
a124133e JK |
23 | test_expect_success 'fsck accepts protected dash' ' |
24 | test_when_finished "rm -rf dst" && | |
25 | git init --bare dst && | |
26 | git -C dst config transfer.fsckObjects true && | |
27 | git push dst HEAD | |
28 | ' | |
29 | ||
f6adec4e JK |
30 | test_expect_success 'remove ./ protection from .gitmodules url' ' |
31 | perl -i -pe "s{\./}{}" .gitmodules && | |
32 | git commit -am "drop protection" | |
33 | ' | |
34 | ||
35 | test_expect_success 'clone rejects unprotected dash' ' | |
36 | test_when_finished "rm -rf dst" && | |
37 | test_must_fail git clone --recurse-submodules . dst 2>err && | |
38 | test_i18ngrep ignoring err | |
39 | ' | |
40 | ||
a124133e JK |
41 | test_expect_success 'fsck rejects unprotected dash' ' |
42 | test_when_finished "rm -rf dst" && | |
43 | git init --bare dst && | |
44 | git -C dst config transfer.fsckObjects true && | |
45 | test_must_fail git push dst HEAD 2>err && | |
46 | grep gitmodulesUrl err | |
47 | ' | |
48 | ||
6d868416 JS |
49 | test_expect_success 'trailing backslash is handled correctly' ' |
50 | git init testmodule && | |
51 | test_commit -C testmodule c && | |
52 | git submodule add ./testmodule && | |
53 | : ensure that the name ends in a double backslash && | |
54 | sed -e "s|\\(submodule \"testmodule\\)\"|\\1\\\\\\\\\"|" \ | |
55 | -e "s|url = .*|url = \" --should-not-be-an-option\"|" \ | |
56 | <.gitmodules >.new && | |
57 | mv .new .gitmodules && | |
58 | git commit -am "Add testmodule" && | |
59 | test_must_fail git clone --verbose --recurse-submodules . dolly 2>err && | |
60 | test_i18ngrep ! "unknown option" err | |
61 | ' | |
62 | ||
f6adec4e | 63 | test_done |