(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <"test git clone to cleanup after failure\n"> <"\n"> <"This test covers the fact that if git clone fails, it should remove\n"> <"the directory it created, to avoid the user having to manually\n"> <"remove the directory before attempting a clone again."> ) } spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"clone of non-existent source should fail">)} {(SQ <"test_must_fail git clone foo bar">)} ) (C {(test_expect_success)} {(SQ <"failed clone should not leave a directory">)} {(SQ <"! test -d bar">)} ) (C {(test_create_repo)} {(foo)}) (Subshell child: (AndOr children: [ (C {(cd)} {(foo)}) (AndOr children: [ (C {(touch)} {(file)}) (AndOr children: [ (C {(git)} {(add)} {(file)}) (SimpleCommand words: [{(git)} {(commit)} {(-m)} {(SQ <"add file">)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [100] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [103] ) ] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) spids: [69 105] ) (C {(test_expect_success)} {(SQ <"clone of non-existent (relative to $PWD) source should fail">)} {(SQ <"test_must_fail git clone ../foo baz">)} ) (C {(test_expect_success)} {(SQ <"clone should work now that source exists">)} {(SQ <"git clone foo bar">)} ) (C {(test_expect_success)} {(SQ <"successful clone must leave the directory">)} {(SQ <"test -d bar">)} ) (C {(test_expect_success)} {(SQ <"failed clone --separate-git-dir should not leave any directories">)} { (SQ <"\n"> <"\tmkdir foo/.git/objects.bak/ &&\n"> <"\tmv foo/.git/objects/* foo/.git/objects.bak/ &&\n"> <"\ttest_must_fail git clone --separate-git-dir gitdir foo worktree &&\n"> <"\ttest_must_fail test -e gitdir &&\n"> <"\ttest_must_fail test -e worktree &&\n"> <"\tmv foo/.git/objects.bak/* foo/.git/objects/ &&\n"> <"\trmdir foo/.git/objects.bak\n"> ) } ) (C {(test_done)}) ] )