(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (FunctionDef test_prefix [] (Com {[LIT_CHARS test_expect_success]} {[DQ [VarSub 1]]} {[DQ [LIT_CHARS "test '"][VarSub 2][LIT_CHARS "' = "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(git rev-parse --show-prefix)"][\ LIT_ESCAPED_CHAR "\\\""]]}) ) (FunctionDef test_fail [] (Com {[LIT_CHARS test_expect_success]} {[DQ [VarSub 1][LIT_CHARS ": prefix"]]} {[SQ ]}) ) (= scope= flags=0 words=[] bindings=[('TRASH_ROOT', {[DQ [VarSub PWD]]})]) (= scope= flags=0 words=[] bindings=[('ROOT_PARENT', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub TRASH_ROOT]]})]})]) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_CEILING_DIRECTORIES]}) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS no_ceil]} {[DQ ]}) (= scope= flags=1 words=[{[LIT_CHARS GIT_CEILING_DIRECTORIES]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ ]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_empty]} {[DQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub ROOT_PARENT]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_at_parent]} {[DQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub ROOT_PARENT][LIT_CHARS /]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_at_parent_slash]} {[DQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_at_trash]} {[DQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_at_trash_slash]} {[DQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_at_sub]} {[DQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub/]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS ceil_at_sub_slash]} {[DQ ]}) (If (Com {[LIT_CHARS test_have_prereq]} {[LIT_CHARS SYMLINKS]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS sub]} {[LIT_CHARS top]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS sub/dir]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS sub/dir]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_CEILING_DIRECTORIES]}) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_no_ceil]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=1 words=[{[LIT_CHARS GIT_CEILING_DIRECTORIES]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ ]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_empty]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS subdir_ceil_at_trash]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS subdir_ceil_at_trash_slash]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS subdir_ceil_at_sub]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub/]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS subdir_ceil_at_sub_slash]}) (If (Com {[LIT_CHARS test_have_prereq]} {[LIT_CHARS SYMLINKS]}) (List (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /top]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS subdir_ceil_at_top]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /top/]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS subdir_ceil_at_top_slash]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [LIT_CHARS ":"][VarSub TRASH_ROOT][LIT_CHARS /top]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_top_no_resolve]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [LIT_CHARS ":"][VarSub TRASH_ROOT][LIT_CHARS /top/]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_top_slash_no_resolve]} {[DQ [LIT_CHARS sub/dir/]]}) ) ) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub/dir]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_subdir]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub/dir/]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_subdir_slash]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /su]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_su]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /su/]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_su_slash]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub/di]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_sub_di]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub/di]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_sub_di_slash]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /subdi]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_subdi]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /subdi]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS subdir_ceil_at_subdi_slash]} {[DQ [LIT_CHARS sub/dir/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [LIT_CHARS "/foo:"][VarSub TRASH_ROOT][LIT_CHARS /sub]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS second_of_two]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS "/sub:/bar"]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS first_of_two]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [LIT_CHARS "/foo:"][VarSub TRASH_ROOT][LIT_CHARS "/sub:/bar"]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS second_of_three]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sub]]})]) (= scope= flags=0 words=[] bindings=[('GIT_DIR', {[LIT_CHARS ../../.git]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_DIR]}] bindings=[]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS git_dir_specified]} {[DQ ]}) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_DIR]}) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS ../..]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS s/d]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS s/d]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_CEILING_DIRECTORIES]}) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_no_ceil]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=1 words=[{[LIT_CHARS GIT_CEILING_DIRECTORIES]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ ]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_empty]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS sd_ceil_at_trash]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS sd_ceil_at_trash_slash]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /s]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS sd_ceil_at_s]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /s/]]})]) (Com {[LIT_CHARS test_fail]} {[LIT_CHARS sd_ceil_at_s_slash]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /s/d]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_sd]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /s/d/]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_sd_slash]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /su]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_su]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /su/]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_su_slash]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /s/di]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_s_di]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /s/di]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_s_di_slash]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sdi]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_sdi]} {[DQ [LIT_CHARS s/d/]]}) (= scope= flags=0 words=[] bindings=[('GIT_CEILING_DIRECTORIES', {[DQ [VarSub TRASH_ROOT][LIT_CHARS /sdi]]})]) (Com {[LIT_CHARS test_prefix]} {[LIT_CHARS sd_ceil_at_sdi_slash]} {[DQ [LIT_CHARS s/d/]]}) (Com {[LIT_CHARS test_done]}) )