pull: add t5572 for submodule updates
[gitweb.git] / t / t6050-replace.sh
index e1cc3b89dadf3577fa97cfda04925c8e63d56f6d..68b3cb26d90c5b88d28bbd03e8d50d4527f8a19b 100755 (executable)
@@ -306,7 +306,7 @@ test_expect_success 'test --format medium' '
        test_cmp expected actual
 '
 
-test_expect_failure 'test --format full' '
+test_expect_success 'test --format long' '
        {
                echo "$H1 (commit) -> $BLOB (blob)" &&
                echo "$BLOB (blob) -> $REPLACED (blob)" &&
@@ -314,10 +314,37 @@ test_expect_failure 'test --format full' '
                echo "$PARA3 (commit) -> $S (commit)" &&
                echo "$MYTAG (tag) -> $HASH1 (commit)"
        } | sort >expected &&
-       git replace --format=full | sort > actual &&
+       git replace --format=long | sort > actual &&
        test_cmp expected actual
 '
 
+test_expect_success 'setup a fake editor' '
+       write_script fakeeditor <<-\EOF
+               sed -e "s/A U Thor/A fake Thor/" "$1" >"$1.new"
+               mv "$1.new" "$1"
+       EOF
+'
+
+test_expect_success '--edit with and without already replaced object' '
+       test_must_fail env GIT_EDITOR=./fakeeditor git replace --edit "$PARA3" &&
+       GIT_EDITOR=./fakeeditor git replace --force --edit "$PARA3" &&
+       git replace -l | grep "$PARA3" &&
+       git cat-file commit "$PARA3" | grep "A fake Thor" &&
+       git replace -d "$PARA3" &&
+       GIT_EDITOR=./fakeeditor git replace --edit "$PARA3" &&
+       git replace -l | grep "$PARA3" &&
+       git cat-file commit "$PARA3" | grep "A fake Thor"
+'
+
+test_expect_success '--edit and change nothing or command failed' '
+       git replace -d "$PARA3" &&
+       test_must_fail env GIT_EDITOR=true git replace --edit "$PARA3" &&
+       test_must_fail env GIT_EDITOR="./fakeeditor;false" git replace --edit "$PARA3" &&
+       GIT_EDITOR=./fakeeditor git replace --edit "$PARA3" &&
+       git replace -l | grep "$PARA3" &&
+       git cat-file commit "$PARA3" | grep "A fake Thor"
+'
+
 test_expect_success 'replace ref cleanup' '
        test -n "$(git replace)" &&
        git replace -d $(git replace) &&