| #!/bin/sh | |
| # | |
| # Copyright (c) 2007 Johannes E. Schindelin | |
| # | |
| test_description='add -e basic tests' | |
| . ./test-lib.sh | |
| cat > file << EOF | |
| LO, praise of the prowess of people-kings | |
| of spear-armed Danes, in days long sped, | |
| we have heard, and what honor the athelings won! | |
| Oft Scyld the Scefing from squadroned foes, | |
| from many a tribe, the mead-bench tore, | |
| awing the earls. Since erst he lay | |
| friendless, a foundling, fate repaid him: | |
| for he waxed under welkin, in wealth he throve, | |
| till before him the folk, both far and near, | |
| who house by the whale-path, heard his mandate, | |
| gave him gifts: a good king he! | |
| EOF | |
| cat > second-part << EOF | |
| To him an heir was afterward born, | |
| a son in his halls, whom heaven sent | |
| to favor the folk, feeling their woe | |
| that erst they had lacked an earl for leader | |
| so long a while; the Lord endowed him, | |
| the Wielder of Wonder, with world's renown. | |
| EOF | |
| test_expect_success 'setup' ' | |
| git add file && | |
| test_tick && | |
| git commit -m initial file | |
| ' | |
| cat > expected-patch << EOF | |
| diff --git a/file b/file | |
| --- a/file | |
| +++ b/file | |
| @@ -1,11 +1,6 @@ | |
| -LO, praise of the prowess of people-kings | |
| -of spear-armed Danes, in days long sped, | |
| -we have heard, and what honor the athelings won! | |
| -Oft Scyld the Scefing from squadroned foes, | |
| -from many a tribe, the mead-bench tore, | |
| -awing the earls. Since erst he lay | |
| -friendless, a foundling, fate repaid him: | |
| -for he waxed under welkin, in wealth he throve, | |
| -till before him the folk, both far and near, | |
| -who house by the whale-path, heard his mandate, | |
| -gave him gifts: a good king he! | |
| +To him an heir was afterward born, | |
| +a son in his halls, whom heaven sent | |
| +to favor the folk, feeling their woe | |
| +that erst they had lacked an earl for leader | |
| +so long a while; the Lord endowed him, | |
| +the Wielder of Wonder, with world's renown. | |
| EOF | |
| cat > patch << EOF | |
| diff --git a/file b/file | |
| index b9834b5..ef6e94c 100644 | |
| --- a/file | |
| +++ b/file | |
| @@ -3,1 +3,333 @@ of spear-armed Danes, in days long sped, | |
| we have heard, and what honor the athelings won! | |
| + | |
| Oft Scyld the Scefing from squadroned foes, | |
| @@ -2,7 +1,5 @@ awing the earls. Since erst he lay | |
| friendless, a foundling, fate repaid him: | |
| + | |
| for he waxed under welkin, in wealth he throve, | |
| EOF | |
| cat > expected << EOF | |
| diff --git a/file b/file | |
| --- a/file | |
| +++ b/file | |
| @@ -1,10 +1,12 @@ | |
| LO, praise of the prowess of people-kings | |
| of spear-armed Danes, in days long sped, | |
| we have heard, and what honor the athelings won! | |
| + | |
| Oft Scyld the Scefing from squadroned foes, | |
| from many a tribe, the mead-bench tore, | |
| awing the earls. Since erst he lay | |
| friendless, a foundling, fate repaid him: | |
| + | |
| for he waxed under welkin, in wealth he throve, | |
| till before him the folk, both far and near, | |
| who house by the whale-path, heard his mandate, | |
| EOF | |
| echo "#!$SHELL_PATH" >fake-editor.sh | |
| cat >> fake-editor.sh <<\EOF | |
| grep -E -v '^index' "$1" >orig-patch && | |
| mv -f patch "$1" | |
| EOF | |
| test_set_editor "$(pwd)/fake-editor.sh" | |
| chmod a+x fake-editor.sh | |
| test_expect_success 'add -e' ' | |
| cp second-part file && | |
| git add -e && | |
| test_cmp second-part file && | |
| test_cmp expected-patch orig-patch && | |
| git diff --cached >actual && | |
| grep -v index actual >out && | |
| test_cmp expected out | |
| ' | |
| test_expect_success 'add -e notices editor failure' ' | |
| git reset --hard && | |
| echo change >>file && | |
| test_must_fail env GIT_EDITOR=false git add -e && | |
| test_expect_code 1 git diff --exit-code | |
| ' | |
| test_expect_success 'add -e works from a subdirectory' ' | |
| git reset --hard && | |
| echo change >>file && | |
| mkdir -p subdir && | |
| ( | |
| cd subdir && | |
| GIT_EDITOR=cat git add -e ../file | |
| ) && | |
| git diff --cached | grep -q "^+change" | |
| ' | |
| test_done |