| #!/bin/sh |
| # |
| # Copyright (c) 2019 Denton Liu |
| # |
| |
| test_description='Test submodules set-url subcommand |
| |
| This test verifies that the set-url subcommand of git-submodule is working |
| as expected. |
| ' |
| |
| TEST_NO_CREATE_REPO=1 |
| . ./test-lib.sh |
| |
| test_expect_success 'setup' ' |
| git config --global protocol.file.allow always |
| ' |
| |
| test_expect_success 'submodule config cache setup' ' |
| mkdir submodule && |
| ( |
| cd submodule && |
| git init && |
| echo a >file && |
| git add file && |
| git commit -ma |
| ) && |
| mkdir namedsubmodule && |
| ( |
| cd namedsubmodule && |
| git init && |
| echo 1 >file && |
| git add file && |
| git commit -m1 |
| ) && |
| mkdir super && |
| ( |
| cd super && |
| git init && |
| git submodule add ../submodule && |
| git submodule add --name thename ../namedsubmodule thepath && |
| git commit -m "add submodules" |
| ) |
| ' |
| |
| test_expect_success 'test submodule set-url' ' |
| # add commits and move the submodules (change the urls) |
| ( |
| cd submodule && |
| echo b >>file && |
| git add file && |
| git commit -mb |
| ) && |
| mv submodule newsubmodule && |
| |
| ( |
| cd namedsubmodule && |
| echo 2 >>file && |
| git add file && |
| git commit -m2 |
| ) && |
| mv namedsubmodule newnamedsubmodule && |
| |
| git -C newsubmodule show >expect && |
| git -C newnamedsubmodule show >>expect && |
| ( |
| cd super && |
| test_must_fail git submodule update --remote && |
| git submodule set-url submodule ../newsubmodule && |
| test_cmp_config ../newsubmodule -f .gitmodules submodule.submodule.url && |
| git submodule set-url thepath ../newnamedsubmodule && |
| test_cmp_config ../newnamedsubmodule -f .gitmodules submodule.thename.url && |
| test_cmp_config "" -f .gitmodules --default "" submodule.thepath.url && |
| git submodule update --remote |
| ) && |
| git -C super/submodule show >actual && |
| git -C super/thepath show >>actual && |
| test_cmp expect actual |
| ' |
| |
| test_done |