git-commit-vandalism/t/t7421-submodule-summary-add.sh
Taylor Blau 0d3beb71da t/t7NNN: allow local submodules
To prepare for the default value of `protocol.file.allow` to change to
"user", ensure tests that rely on local submodules can initialize them
over the file protocol.

Tests that only need to interact with submodules in a limited capacity
have individual Git commands annotated with the appropriate
configuration via `-c`. Tests that interact with submodules a handful of
times use `test_config_global` instead. Test scripts that rely on
submodules throughout use a `git config --global` during a setup test
towards the beginning of the script.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
2022-10-01 00:23:38 -04:00

74 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (C) 2020 Shourya Shukla
#
test_description='Summary support for submodules, adding them using git submodule add
This test script tries to verify the sanity of summary subcommand of git submodule
while making sure to add submodules using `git submodule add` instead of
`git add` as done in t7401.
'
. ./test-lib.sh
test_expect_success 'setup' '
git config --global protocol.file.allow always
'
test_expect_success 'summary test environment setup' '
git init sm &&
test_commit -C sm "add file" file file-content file-tag &&
git submodule add ./sm my-subm &&
test_tick &&
git commit -m "add submodule"
'
test_expect_success 'submodule summary output for initialized submodule' '
test_commit -C sm "add file2" file2 file2-content file2-tag &&
git submodule update --remote &&
test_tick &&
git commit -m "update submodule" my-subm &&
git submodule summary HEAD^ >actual &&
rev1=$(git -C sm rev-parse --short HEAD^) &&
rev2=$(git -C sm rev-parse --short HEAD) &&
cat >expected <<-EOF &&
* my-subm ${rev1}...${rev2} (1):
> add file2
EOF
test_cmp expected actual
'
test_expect_success 'submodule summary output for deinitialized submodule' '
git submodule deinit my-subm &&
git submodule summary HEAD^ >actual &&
test_must_be_empty actual &&
git submodule update --init my-subm &&
git submodule summary HEAD^ >actual &&
rev1=$(git -C sm rev-parse --short HEAD^) &&
rev2=$(git -C sm rev-parse --short HEAD) &&
cat >expected <<-EOF &&
* my-subm ${rev1}...${rev2} (1):
> add file2
EOF
test_cmp expected actual
'
test_expect_success 'submodule summary output for submodules with changed paths' '
git mv my-subm subm &&
git commit -m "change submodule path" &&
rev=$(git -C sm rev-parse --short HEAD^) &&
git submodule summary HEAD^^ -- my-subm >actual 2>err &&
test_must_be_empty err &&
cat >expected <<-EOF &&
* my-subm ${rev}...0000000:
EOF
test_cmp expected actual
'
test_done