(command.CommandList children: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$NO_CURL'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'skipping test, git built without http support' span_id: 109 ) ) } spids: [107] ) ] ) (C {(test_done)}) ] spids: [94 104] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$NO_EXPAT'))}) (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_DAV'))}) ] ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'skipping test, git built without expat support' span_id: 143 ) ) } spids: [141] ) ] ) (C {(test_done)}) ] spids: [118 138] ) ] ) (C {(test_tristate)} {(GIT_TEST_HTTPD)}) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$GIT_TEST_HTTPD'))} {(Id.Lit_Equals '=')} {(false)}) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: {(DQ ('Network testing disabled (unset GIT_TEST_HTTPD to enable)'))} spids: [171] ) ] ) (C {(test_done)}) ] spids: [156 168] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children:[(C {(test_have_prereq)} {(NOT_ROOT)})] negated:T) terminator: (Token id:Id.Op_Semi val:';' span_id:189) ) ] action: [ (C {(test_skip_or_die)} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} {(DQ ('Cannot run httpd tests as root'))} ) ] spids: [182 191] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PARA) op: assign_op.Equal rhs: {(DQ )} spids: [207] ) ] ) (command.ForEach iter_name: DEFAULT_HTTPD_PATH iter_words: [ {(SQ (Token id:Id.Lit_Chars val:/usr/sbin/httpd span_id:219))} {(SQ (Token id:Id.Lit_Chars val:/usr/sbin/apache2 span_id:223))} ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-x)} {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_PATH'))})] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:243) ) ] spids: [229 240] ) ] ) ] ) ) (command.ForEach iter_name: DEFAULT_HTTPD_MODULE_PATH iter_words: [ {(SQ (Token id:Id.Lit_Chars val:/usr/libexec/apache2 span_id:258))} {(SQ (Token id:Id.Lit_Chars val:/usr/lib/apache2/modules span_id:264))} {(SQ (Token id:Id.Lit_Chars val:/usr/lib64/httpd/modules span_id:270))} {(SQ (Token id:Id.Lit_Chars val:/usr/lib/httpd/modules span_id:276))} ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-d)} {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_MODULE_PATH'))})] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:296) ) ] spids: [282 293] ) ] ) ] ) ) (command.Case to_match: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:306) command_list: (command.CommandList children:[(C {(uname)})]) ) } arms: [ (case_arm pat_list: [{(Darwin)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PARA) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') (' -DDarwin'))} spids: [317] ) ] ) ] spids: [313 314 324 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_HTTPD_PATH) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:LIB_HTTPD_PATH span_id:331) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_PATH'))} ) ) } spids: [329] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_HTTPD_PORT) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:LIB_HTTPD_PORT span_id:340) suffix_op: (suffix_op.Unary op_id: Id.VTest_Hyphen arg_word: { (braced_var_sub token: (Token id:Id.VSub_Name val:this_test span_id:343) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(t)}) ) } ) ) } spids: [338] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_PATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-httpd)} spids: [350] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_ROOT_PATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PWD')) (/httpd)} spids: [356] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_DOCUMENT_ROOT_PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HTTPD_ROOT_PATH') (/www)} spids: [362] ) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_VALGRIND) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$GIT_VALGRIND')} spids: [370] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:372) ) (C {(export)} {(GIT_VALGRIND)}) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_VALGRIND_OPTIONS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$GIT_VALGRIND_OPTIONS')} spids: [378] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:380) ) (C {(export)} {(GIT_VALGRIND_OPTIONS)}) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_TRACE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$GIT_TRACE')} spids: [386] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:388) ) (C {(export)} {(GIT_TRACE)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [(C {(test)} {(-x)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_PATH'))})] negated: T ) ] action: [ (C {(test_skip_or_die)} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} {(DQ ("no web server found at '") ($ Id.VSub_DollarName '$LIB_HTTPD_PATH') ("'"))} ) ] spids: [395 407] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_VERSION) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:424) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$LIB_HTTPD_PATH')} {(-v)}) (C {(sed)} {(-n)} { (SQ (Token id: Id.Lit_Chars val: 's/^Server version: Apache\\/\\([0-9]*\\)\\..*$/\\1/p; q' span_id: 438 ) ) } ) ] negated: F ) ] ) ) } spids: [423] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$HTTPD_VERSION'))})] action: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_MODULE_PATH'))})] action: [ (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (C {(test)} {($ Id.VSub_DollarName '$HTTPD_VERSION')} {(-ge)} {(2)}) ] negated: T ) ] action: [ (C {(test_skip_or_die)} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} {(DQ ('at least Apache version 2 is required'))} ) ] spids: [470 483] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (C {(test)} {(-d)} {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_MODULE_PATH'))} ) ] negated: T ) ] action: [ (C {(test_skip_or_die)} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} {(DQ ('Apache module directory not found'))} ) ] spids: [500 513] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_HTTPD_MODULE_PATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_MODULE_PATH'))} spids: [531] ) ] ) ] spids: [456 467] ) ] ) ] spids: [443 453] ) ] else_action: [ (C {(test_skip_or_die)} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} {(DQ ("Could not identify web server at '") ($ Id.VSub_DollarName '$LIB_HTTPD_PATH') ("'"))} ) ] ) (command.ShFunction name: install_script body: (command.BraceGroup children: [ (command.Simple words: [ {(write_script)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH') (/) ($ Id.VSub_Number '$1'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:573) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$TEST_PATH') (/) ($ Id.VSub_Number '$1'))} ) ] ) ] ) ) (command.ShFunction name: prepare_httpd body: (command.BraceGroup children: [ (C {(mkdir)} {(-p)} {(DQ ($ Id.VSub_DollarName '$HTTPD_DOCUMENT_ROOT_PATH'))}) (C {(cp)} {(DQ ($ Id.VSub_DollarName '$TEST_PATH')) (/passwd)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH'))} ) (C {(install_script)} {(broken-smart-http.sh)}) (C {(install_script)} {(error.sh)}) (C {(ln)} {(-s)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_MODULE_PATH'))} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH') (/modules))} ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_SSL'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PROTO) op: assign_op.Equal rhs: {(https)} spids: [651] ) ] ) (command.Simple words: [ {(openssl)} {(req)} {(-config)} {(DQ ($ Id.VSub_DollarName '$TEST_PATH') (/ssl.cnf))} {(-new)} {(-x509)} {(-nodes)} {(-out)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH') (/httpd.pem))} {(-keyout)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH') (/httpd.pem))} ] more_env: [ (env_pair name: RANDFILE_PATH val: {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH')) (/.rnd)} spids: [656] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_SSL_NO_VERIFY) op: assign_op.Equal rhs: {(t)} spids: [702] ) ] ) (C {(export)} {(GIT_SSL_NO_VERIFY)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PARA) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') (' -DSSL'))} spids: [711] ) ] ) ] spids: [637 648] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PROTO) op: assign_op.Equal rhs: {(http)} spids: [721] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_DEST) op: assign_op.Equal rhs: {(127.0.0.1) (Id.Lit_Other ':') ($ Id.VSub_DollarName '$LIB_HTTPD_PORT')} spids: [728] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_URL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HTTPD_PROTO') (Id.Lit_Other ':') (//) ($ Id.VSub_DollarName '$HTTPD_DEST') } spids: [734] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_URL_USER) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HTTPD_PROTO') (Id.Lit_Other ':') (//user) (Id.Lit_Other '%') (40host) (Id.Lit_Other '@') ($ Id.VSub_DollarName '$HTTPD_DEST') } spids: [741] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_URL_USER_PASS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HTTPD_PROTO') (Id.Lit_Other ':') (//user) (Id.Lit_Other '%') (40host) (Id.Lit_Other ':') (Id.KW_Pass pass) (Id.Lit_Other '%') (40host) (Id.Lit_Other '@') ($ Id.VSub_DollarName '$HTTPD_DEST') } spids: [751] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_DAV'))}) (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_SVN'))}) ] ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PARA) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') (' -DDAV'))} spids: [790] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_SVN'))})] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HTTPD_PARA) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') (' -DSVN'))} spids: [812] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_HTTPD_SVNPATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$rawsvnrepo'))} spids: [819] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svnrepo) op: assign_op.Equal rhs: { (DQ ('http://127.0.0.1:') ($ Id.VSub_DollarName '$LIB_HTTPD_PORT') (/) ) } spids: [825] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svnrepo) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$svnrepo') ($ Id.VSub_DollarName '$LIB_HTTPD_SVN') ) } spids: [833] ) ] ) (C {(export)} {(LIB_HTTPD_SVN)} {(LIB_HTTPD_SVNPATH)}) ] spids: [798 809] ) ] ) ] spids: [766 787] ) ] ) ] ) ) (command.ShFunction name: start_httpd body: (command.BraceGroup children: [ (command.Simple words: [{(prepare_httpd)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:864) fd: -1 arg_word: {(3)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:867) fd: 2 arg_word: {(4)} ) ] ) (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:'code=$?; stop_httpd; (exit $code); die' span_id:875))} {(EXIT)} ) (command.Simple words: [ {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_PATH'))} {(-d)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH'))} {(-f)} {(DQ ($ Id.VSub_DollarName '$TEST_PATH') (/apache.conf))} {($ Id.VSub_DollarName '$HTTPD_PARA')} {(-c)} {(DQ ('Listen 127.0.0.1:') ($ Id.VSub_DollarName '$LIB_HTTPD_PORT'))} {(-k)} {(start)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:918) fd: -1 arg_word: {(3)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:921) fd: 2 arg_word: {(4)} ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)})] action: [ (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:die span_id:942))} {(EXIT)}) (command.Simple words: [{(cat)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH')) (/error.log)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:955) fd: -1 arg_word: {(4)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:958) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(test_skip_or_die)} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} {(DQ ('web server setup failed'))} ) ] spids: [925 936] ) ] ) ] ) ) (command.ShFunction name: stop_httpd body: (command.BraceGroup children: [ (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:die span_id:986))} {(EXIT)}) (C {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_PATH'))} {(-d)} {(DQ ($ Id.VSub_DollarName '$HTTPD_ROOT_PATH'))} {(-f)} {(DQ ($ Id.VSub_DollarName '$TEST_PATH') (/apache.conf))} {($ Id.VSub_DollarName '$HTTPD_PARA')} {(-k)} {(stop)} ) ] ) ) (command.ShFunction name: test_http_push_nonff body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REMOTE_REPO) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1029] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOCAL_REPO) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1033] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BRANCH) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [1037] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXPECT_CAS_RESULT) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:4 span_id:1043) suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{(failure)}) ) } spids: [1041] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'non-fast-forward push fails' span_id:1053))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1057) (Token id: Id.Lit_Chars val: '\t\tcd "$REMOTE_REPO" &&\n' span_id: 1058 ) (Token id:Id.Lit_Chars val:'\t\tHEAD=$(git rev-parse --verify HEAD) &&\n' span_id:1059) (Token id:Id.Lit_Chars val:'\n' span_id:1060) (Token id:Id.Lit_Chars val:'\t\tcd "$LOCAL_REPO" &&\n' span_id:1061) (Token id: Id.Lit_Chars val: '\t\tgit checkout $BRANCH &&\n' span_id: 1062 ) (Token id:Id.Lit_Chars val:'\t\techo "changed" > path2 &&\n' span_id:1063) (Token id: Id.Lit_Chars val: '\t\tgit commit -a -m path2 --amend &&\n' span_id: 1064 ) (Token id:Id.Lit_Chars val:'\n' span_id:1065) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git push -v origin >output 2>&1 &&\n' span_id: 1066 ) (Token id:Id.Lit_Chars val:'\t\t(cd "$REMOTE_REPO" &&\n' span_id:1067) (Token id: Id.Lit_Chars val: '\t\t test $HEAD = $(git rev-parse --verify HEAD))\n' span_id: 1068 ) (Token id:Id.Lit_Chars val:'\t' span_id:1069) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'non-fast-forward push show ref status' span_id:1077))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1081) (Token id: Id.Lit_Chars val: '\t\tgrep "^ ! \\[rejected\\][ ]*$BRANCH -> $BRANCH (non-fast-forward)$" output\n' span_id: 1082 ) (Token id:Id.Lit_Chars val:'\t' span_id:1083) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'non-fast-forward push shows help message' span_id: 1091 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1095) (Token id: Id.Lit_Chars val: '\t\ttest_i18ngrep "Updates were rejected because" output\n' span_id: 1096 ) (Token id:Id.Lit_Chars val:'\t' span_id:1097) ) } ) (C {(test_expect_) (${ Id.VSub_Name EXPECT_CAS_RESULT)} {(SQ (Token id:Id.Lit_Chars val:'force with lease aka cas' span_id:1108))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1112) (Token id: Id.Lit_Chars val: '\t\tHEAD=$(\tcd "$REMOTE_REPO" && git rev-parse --verify HEAD ) &&\n' span_id: 1113 ) (Token id:Id.Lit_Chars val:'\t\ttest_when_finished ' span_id:1114) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:1116)) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1118) (Token id: Id.Lit_Chars val: '\t\t\t(cd "$REMOTE_REPO" && git update-ref HEAD "$HEAD")\n' span_id: 1119 ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1120) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:1122)) (SQ (Token id:Id.Lit_Chars val:' &&\n' span_id:1124) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1125) (Token id:Id.Lit_Chars val:'\t\t\tcd "$LOCAL_REPO" &&\n' span_id:1126) (Token id: Id.Lit_Chars val: '\t\t\tgit push -v --force-with-lease=$BRANCH:$HEAD origin\n' span_id: 1127 ) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:1128) (Token id: Id.Lit_Chars val: '\t\tgit rev-parse --verify "$BRANCH" >expect &&\n' span_id: 1129 ) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1130) (Token id: Id.Lit_Chars val: '\t\t\tcd "$REMOTE_REPO" && git rev-parse --verify HEAD\n' span_id: 1131 ) (Token id:Id.Lit_Chars val:'\t\t) >actual &&\n' span_id:1132) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expect actual\n' span_id: 1133 ) (Token id:Id.Lit_Chars val:'\t' span_id:1134) ) } ) ] ) ) (command.ShFunction name: setup_askpass_helper body: (command.BraceGroup children: [ (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup askpass helper' span_id:1150))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1154) (Token id: Id.Lit_Chars val: '\t\twrite_script "$TRASH_DIRECTORY/askpass" <<-\\EOF &&\n' span_id: 1155 ) (Token id: Id.Lit_Chars val: '\t\techo >>"$TRASH_DIRECTORY/askpass-query" "askpass: $*" &&\n' span_id: 1156 ) (Token id:Id.Lit_Chars val:'\t\tcase "$*" in\n' span_id:1157) (Token id:Id.Lit_Chars val:'\t\t*Username*)\n' span_id:1158) (Token id:Id.Lit_Chars val:'\t\t\twhat=user\n' span_id:1159) (Token id:Id.Lit_Chars val:'\t\t\t;;\n' span_id:1160) (Token id:Id.Lit_Chars val:'\t\t*Password*)\n' span_id:1161) (Token id:Id.Lit_Chars val:'\t\t\twhat=pass\n' span_id:1162) (Token id:Id.Lit_Chars val:'\t\t\t;;\n' span_id:1163) (Token id:Id.Lit_Chars val:'\t\tesac &&\n' span_id:1164) (Token id:Id.Lit_Chars val:'\t\tcat "$TRASH_DIRECTORY/askpass-$what"\n' span_id:1165) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1166) (Token id:Id.Lit_Chars val:'\t\tGIT_ASKPASS="$TRASH_DIRECTORY/askpass" &&\n' span_id:1167) (Token id: Id.Lit_Chars val: '\t\texport GIT_ASKPASS &&\n' span_id: 1168 ) (Token id:Id.Lit_Chars val:'\t\texport TRASH_DIRECTORY\n' span_id:1169) (Token id:Id.Lit_Chars val:'\t' span_id:1170) ) } ) ] ) ) (command.ShFunction name: set_askpass body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1183) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') (/askpass-query))} ) ] ) (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1198) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') (/askpass-user))} ) ] ) (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_Number '$2'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1213) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') (/askpass-pass))} ) ] ) ] ) ] ) ) (command.ShFunction name: expect_askpass body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dest) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$HTTPD_DEST') (braced_var_sub token: (Token id:Id.VSub_Number val:3 span_id:1232) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {(Id.Lit_Slash /) ($ Id.VSub_Number '$3')} ) ) } spids: [1229] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(none)}] spids: [1252 1253 1256 -1] ) (case_arm pat_list: [{(Id.KW_Pass pass)}] action: [ (C {(echo)} { (DQ ("askpass: Password for 'http://") ($ Id.VSub_Number '$2') ('@') ($ Id.VSub_DollarName '$dest') ("': ") ) } ) ] spids: [1259 1260 1274 -1] ) (case_arm pat_list: [{(both)}] action: [ (C {(echo)} { (DQ ("askpass: Username for 'http://") ($ Id.VSub_DollarName '$dest') ("': ") ) } ) (C {(echo)} { (DQ ("askpass: Password for 'http://") ($ Id.VSub_Number '$2') ('@') ($ Id.VSub_DollarName '$dest') ("': ") ) } ) ] spids: [1277 1278 1301 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(false)})] spids: [1304 1305 1311 -1] ) ] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1319) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') (/askpass-expect))} ) ] ) (C {(test_cmp)} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') (/askpass-expect))} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') (/askpass-query))} ) ] ) ] ) ) ] )