On Tue, Oct 29, 2013 at 10:07:50PM +0100, Torsten Bögershausen wrote:

>  Changes since V2:
>  clear_ssh and expect_ssh did come back
>  And I couldn't get it working without the
>  >"$TRASH_DIRECTORY/ssh-output"


>  test_when_finished:
>  I could not get that to work. Probably because of the
>  battle between the quotings: '"' "'" '"'

The quoting should be straight-forward, since you can do it in
expect_ssh, outside of the regular test eval. But what is tricky is that
you do not actually want "ssh-output" to disappear, but rather you want
it to be an empty file, so that tests which do not trigger ssh can
compare against it using test_cmp.

The patch below makes it work, but I'm thinking that it does not
actually improve readability. While the "clear_ssh" call is something
each test needs to remember, at least it is obvious there that the test
is clearing the state before running the clone.

>  Other note about test_might_fail:
>  The first version did not need it, git clone did
>  always succeed.
>  After a while it always failed.
>  According to my understanding, git clone ssh://xxx.yy
>  should fail (as we can not clone) ??

Cloning over ssh via our fake wrapper should work, as the wrapper finds
the shell command and execs it.  So ssh://host/path should end up

  ssh host 'git-upload-pack path'

and the ssh wrapper converts that to:

  git-upload-pack path

If we want to make it more robust, we could cd into a "hosts/$host"
directory that simulates the remote host, but I don't know if that is

This is the test_when_finished patch.

diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 7db7f48..05afe5a 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -291,14 +291,14 @@ test_expect_success 'setup ssh wrapper' '
        GIT_SSH="$TRASH_DIRECTORY/ssh-wrapper" &&
        export GIT_SSH &&
-       export TRASH_DIRECTORY
+       export TRASH_DIRECTORY &&
+       >"$TRASH_DIRECTORY"/ssh-output
-clear_ssh () {
-       >"$TRASH_DIRECTORY/ssh-output"
 expect_ssh () {
+       test_when_finished '
+         (cd "$TRASH_DIRECTORY" && rm -f ssh-expect && >ssh-output)
+       ' &&
                case "$1" in
@@ -311,7 +311,6 @@ expect_ssh () {
 test_expect_success NOT_MINGW,NOT_CYGWIN 'clone local path foo:bar' '
-       clear_ssh &&
        cp -R src "foo:bar" &&
        git clone "foo:bar" foobar &&
        expect_ssh none
@@ -323,7 +322,6 @@ counter=0
 # $3 path
 test_clone_url () {
        counter=$(($counter + 1))
-       clear_ssh &&
        test_might_fail git clone "$1" tmp$counter &&
        expect_ssh "$2" "$3"
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to