(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'setup taking and sanitizing funny paths'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {<setup>} { (SQ <'\n'> <'\n'> <'\tmkdir -p a/b/c a/e &&\n'> <'\tD=$(pwd) &&\n'> <'\t>a/b/c/d &&\n'> <'\t>a/e/f\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git add (absolute)'>)} { (SQ <'\n'> <'\n'> <'\tgit add "$D/a/b/c/d" &&\n'> <'\tgit ls-files >current &&\n'> <'\techo a/b/c/d >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git add (funny relative)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\t(\n'> <'\t\tcd a/b &&\n'> <'\t\tgit add "../e/./f"\n'> <'\t) &&\n'> <'\tgit ls-files >current &&\n'> <'\techo a/e/f >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git rm (absolute)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\tgit add a &&\n'> <'\tgit rm -f --cached "$D/a/b/c/d" &&\n'> <'\tgit ls-files >current &&\n'> <'\techo a/e/f >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git rm (funny relative)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\tgit add a &&\n'> <'\t(\n'> <'\t\tcd a/b &&\n'> <'\t\tgit rm -f --cached "../e/./f"\n'> <'\t) &&\n'> <'\tgit ls-files >current &&\n'> <'\techo a/b/c/d >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git ls-files (absolute)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\tgit add a &&\n'> <'\tgit ls-files "$D/a/e/../b" >current &&\n'> <'\techo a/b/c/d >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git ls-files (relative #1)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\tgit add a &&\n'> <'\t(\n'> <'\t\tcd a/b &&\n'> <'\t\tgit ls-files "../b/c"\n'> <'\t) >current &&\n'> <'\techo c/d >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git ls-files (relative #2)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\tgit add a &&\n'> <'\t(\n'> <'\t\tcd a/b &&\n'> <'\t\tgit ls-files --full-name "../e/f"\n'> <'\t) >current &&\n'> <'\techo a/e/f >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'git ls-files (relative #3)'>)} { (SQ <'\n'> <'\n'> <'\trm -f .git/index &&\n'> <'\tgit add a &&\n'> <'\t(\n'> <'\t\tcd a/b &&\n'> <'\t\tgit ls-files "../e/f"\n'> <'\t) >current &&\n'> <'\techo ../e/f >expect &&\n'> <'\ttest_cmp expect current\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'commit using absolute path names'>)} { (SQ <'\n'> <'\tgit commit -m "foo" &&\n'> <'\techo aa >>a/b/c/d &&\n'> <'\tgit commit -m "aa" "$(pwd)/a/b/c/d"\n'> ) } ) (C {<test_expect_success>} {(SQ <'log using absolute path names'>)} { (SQ <'\n'> <'\techo bb >>a/b/c/d &&\n'> <'\tgit commit -m "bb" "$(pwd)/a/b/c/d" &&\n'> <'\n'> <'\tgit log a/b/c/d >f1.txt &&\n'> <'\tgit log "$(pwd)/a/b/c/d" >f2.txt &&\n'> <'\ttest_cmp f1.txt f2.txt\n'> ) } ) (C {<test_expect_success>} {(SQ <'blame using absolute path names'>)} { (SQ <'\n'> <'\tgit blame a/b/c/d >f1.txt &&\n'> <'\tgit blame "$(pwd)/a/b/c/d" >f2.txt &&\n'> <'\ttest_cmp f1.txt f2.txt\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup deeper work tree'>)} {(SQ <'\n'> <'\ttest_create_repo tester\n'>)} ) (C {<test_expect_success>} {(SQ <'add a directory outside the work tree'>)} { (SQ <'(\n'> <'\tcd tester &&\n'> <'\td1="$(cd .. ; pwd)" &&\n'> <'\ttest_must_fail git add "$d1"\n'> <')'> ) } ) (C {<test_expect_success>} {(SQ <'add a file outside the work tree, nasty case 1'>)} { (SQ <'(\n'> <'\tcd tester &&\n'> <'\tf="$(pwd)x" &&\n'> <'\techo "$f" &&\n'> <'\ttouch "$f" &&\n'> <'\ttest_must_fail git add "$f"\n'> <')'> ) } ) (C {<test_expect_success>} {(SQ <'add a file outside the work tree, nasty case 2'>)} { (SQ <'(\n'> <'\tcd tester &&\n'> <'\tf="$(pwd | sed "s/.$//")x" &&\n'> <'\techo "$f" &&\n'> <'\ttouch "$f" &&\n'> <'\ttest_must_fail git add "$f"\n'> <')'> ) } ) (C {<test_done>}) ] )