t7502: test commit.status, --status and --no-status
authorJunio C Hamano <gitster@pobox.com>
Wed, 13 Jan 2010 08:12:54 +0000 (00:12 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Jan 2010 09:13:56 +0000 (01:13 -0800)
Make sure that the status information:

 - is shown as before without configuration nor command line option;

 - is shown if commit.status is set to true and no command line option
   is given, or --status is explicitly given;

 - is not shown if commit.status is set to false and no command line
   option is given, or --no-status is explicitly given.

Also make sure that the way lines taken from the custom --template appear
in the log message editor is not changed at all.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7502-commit.sh

index fe94552296bb98ef78dbc51e8b1f7d4a665cf0a4..844fb43c6db1ae4e9b8a3cda6156af359e9f639e 100755 (executable)
@@ -267,4 +267,113 @@ test_expect_success 'A single-liner subject with a token plus colon is not a foo
 
 '
 
+cat >.git/FAKE_EDITOR <<EOF
+#!$SHELL_PATH
+mv "\$1" "\$1.orig"
+(
+       echo message
+       cat "\$1.orig"
+) >"\$1"
+EOF
+
+echo '## Custom template' >template
+
+clear_config () {
+       (
+               git config --unset-all "$1"
+               case $? in
+               0|5)    exit 0 ;;
+               *)      exit 1 ;;
+               esac
+       )
+}
+
+try_commit () {
+       git reset --hard &&
+       echo >>negative &&
+       GIT_EDITOR=.git/FAKE_EDITOR git commit -a $* $use_template &&
+       case "$use_template" in
+       '')
+               ! grep "^## Custom template" .git/COMMIT_EDITMSG ;;
+       *)
+               grep "^## Custom template" .git/COMMIT_EDITMSG ;;
+       esac
+}
+
+try_commit_status_combo () {
+
+       test_expect_success 'commit' '
+               clear_config commit.status &&
+               try_commit "" &&
+               grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit' '
+               clear_config commit.status &&
+               try_commit "" &&
+               grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit --status' '
+               clear_config commit.status &&
+               try_commit --status &&
+               grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit --no-status' '
+               clear_config commit.status &&
+               try_commit --no-status
+               ! grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit with commit.status = yes' '
+               clear_config commit.status &&
+               git config commit.status yes &&
+               try_commit "" &&
+               grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit with commit.status = no' '
+               clear_config commit.status &&
+               git config commit.status no &&
+               try_commit "" &&
+               ! grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit --status with commit.status = yes' '
+               clear_config commit.status &&
+               git config commit.status yes &&
+               try_commit --status &&
+               grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit --no-status with commit.status = yes' '
+               clear_config commit.status &&
+               git config commit.status yes &&
+               try_commit --no-status &&
+               ! grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit --status with commit.status = no' '
+               clear_config commit.status &&
+               git config commit.status no &&
+               try_commit --status &&
+               grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+       test_expect_success 'commit --no-status with commit.status = no' '
+               clear_config commit.status &&
+               git config commit.status no &&
+               try_commit --no-status &&
+               ! grep "^# Changes to be committed:" .git/COMMIT_EDITMSG
+       '
+
+}
+
+try_commit_status_combo
+
+use_template="-t template"
+
+try_commit_status_combo
+
 test_done