(List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub NO_CURL]]}) (List (= scope= flags=0 words=[] bindings=[('skip_all', {[SQ ]})]) (Com {[LIT_CHARS test_done]}) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub NO_EXPAT]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub LIB_HTTPD_DAV]]}) ) (List (= scope= flags=0 words=[] bindings=[('skip_all', {[SQ ]})]) (Com {[LIT_CHARS test_done]}) ) ) (Com {[LIT_CHARS test_tristate]} {[LIT_CHARS GIT_TEST_HTTPD]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub GIT_TEST_HTTPD]]} {[LIT_OTHER "="]} {[LIT_CHARS false]}) (List (= scope= flags=0 words=[] bindings=[('skip_all', {[DQ [LIT_CHARS "Network testing disabled (unset GIT_TEST_HTTPD to enable)"]]})]) (Com {[LIT_CHARS test_done]}) ) ) (If (Pipeline! (Com {[LIT_CHARS test_have_prereq]} {[LIT_CHARS NOT_ROOT]}) ) (Com {[LIT_CHARS test_skip_or_die]} {[VarSub GIT_TEST_HTTPD]} {[DQ [LIT_CHARS "Cannot run httpd tests as root"]]}) ) (= scope= flags=0 words=[] bindings=[('HTTPD_PARA', {[DQ ]})]) (For DEFAULT_HTTPD_PATH [{[SQ ]}, {[SQ ]}]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub DEFAULT_HTTPD_PATH]]}) (Com {[LIT_CHARS break]}) ) ) (For DEFAULT_HTTPD_MODULE_PATH [{[SQ ]}, {[SQ ]}, {[SQ ]}, {[SQ ]}]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub DEFAULT_HTTPD_MODULE_PATH]]}) (Com {[LIT_CHARS break]}) ) ) (Case to_match={[ComSub (Com {[LIT_CHARS uname]})]}, pat_word_list=[[{[LIT_CHARS Darwin]}]] (= scope= flags=0 words=[] bindings=[('HTTPD_PARA', {[DQ [VarSub HTTPD_PARA][LIT_CHARS " -DDarwin"]]})]) ) (= scope= flags=0 words=[] bindings=[('LIB_HTTPD_PATH', {[VarSub LIB_HTTPD_PATH test_op=VS_TEST_HYPHEN {[DQ [VarSub DEFAULT_HTTPD_PATH]]}]})]) (= scope= flags=0 words=[] bindings=[('LIB_HTTPD_PORT', {[VarSub LIB_HTTPD_PORT test_op=VS_TEST_HYPHEN {[VarSub this_test transform_ops=[VS_UNARY_POUND {[LIT_CHARS t]}]]}]})]) (= scope= flags=0 words=[] bindings=[('TEST_PATH', {[DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /lib-httpd]})]) (= scope= flags=0 words=[] bindings=[('HTTPD_ROOT_PATH', {[DQ [VarSub PWD]] [LIT_CHARS /httpd]})]) (= scope= flags=0 words=[] bindings=[('HTTPD_DOCUMENT_ROOT_PATH', {[VarSub HTTPD_ROOT_PATH] [LIT_CHARS /www]})]) (= scope= flags=0 words=[] bindings=[('GIT_VALGRIND', {[VarSub GIT_VALGRIND]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_VALGRIND]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('GIT_VALGRIND_OPTIONS', {[VarSub GIT_VALGRIND_OPTIONS]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_VALGRIND_OPTIONS]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('GIT_TRACE', {[VarSub GIT_TRACE]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_TRACE]}] bindings=[]) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub LIB_HTTPD_PATH]]}) ) (Com {[LIT_CHARS test_skip_or_die]} {[VarSub GIT_TEST_HTTPD]} {[DQ [LIT_CHARS "no web server found at '"][VarSub LIB_HTTPD_PATH][LIT_CHARS "'"]]}) ) (= scope= flags=0 words=[] bindings=[('HTTPD_VERSION', {[ComSub (Pipeline (Com {[VarSub LIB_HTTPD_PATH]} {[LIT_CHARS -v]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[SQ ]}) )]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub HTTPD_VERSION]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub LIB_HTTPD_MODULE_PATH]]}) (List (If (Pipeline! (Com {[LIT_CHARS test]} {[VarSub HTTPD_VERSION]} {[LIT_CHARS -ge]} {[LIT_CHARS 2]}) ) (Com {[LIT_CHARS test_skip_or_die]} {[VarSub GIT_TEST_HTTPD]} {[DQ [LIT_CHARS "at least Apache version 2 is required"]]}) ) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub DEFAULT_HTTPD_MODULE_PATH]]}) ) (Com {[LIT_CHARS test_skip_or_die]} {[VarSub GIT_TEST_HTTPD]} {[DQ [LIT_CHARS "Apache module directory not found"]]}) ) (= scope= flags=0 words=[] bindings=[('LIB_HTTPD_MODULE_PATH', {[DQ [VarSub DEFAULT_HTTPD_MODULE_PATH]]})]) ) ) (ElseTrue) (Com {[LIT_CHARS test_skip_or_die]} {[VarSub GIT_TEST_HTTPD]} {[DQ [LIT_CHARS "Could not identify web server at '"][VarSub LIB_HTTPD_PATH][LIT_CHARS "'"]]}) ) (FunctionDef install_script [] (Com {[LIT_CHARS write_script]} {[DQ [VarSub HTTPD_ROOT_PATH][LIT_CHARS /][VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub TEST_PATH][LIT_CHARS /][VarSub 1]]} 0), > ) ) (FunctionDef prepare_httpd [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub HTTPD_DOCUMENT_ROOT_PATH]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub TEST_PATH]] [LIT_CHARS /passwd]} {[DQ [VarSub HTTPD_ROOT_PATH]]}) (Com {[LIT_CHARS install_script]} {[LIT_CHARS broken-smart-http.sh]}) (Com {[LIT_CHARS install_script]} {[LIT_CHARS error.sh]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub LIB_HTTPD_MODULE_PATH]]} {[DQ [VarSub HTTPD_ROOT_PATH][LIT_CHARS /modules]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub LIB_HTTPD_SSL]]}) (List (= scope= flags=0 words=[] bindings=[('HTTPD_PROTO', {[LIT_CHARS https]})]) (Com {[LIT_CHARS openssl]} {[LIT_CHARS req]} {[LIT_CHARS -config]} {[DQ [VarSub TEST_PATH][LIT_CHARS /ssl.cnf]]} {[LIT_CHARS -new]} {[LIT_CHARS -x509]} {[LIT_CHARS -nodes]} {[LIT_CHARS -out]} {[DQ [VarSub HTTPD_ROOT_PATH][LIT_CHARS /httpd.pem]]} {[LIT_CHARS -keyout]} {[DQ [VarSub HTTPD_ROOT_PATH][LIT_CHARS /httpd.pem]]} more_env=[('RANDFILE_PATH', {[DQ [VarSub HTTPD_ROOT_PATH]] [LIT_CHARS /.rnd]})] ) (= scope= flags=0 words=[] bindings=[('GIT_SSL_NO_VERIFY', {[LIT_CHARS t]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_SSL_NO_VERIFY]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('HTTPD_PARA', {[DQ [VarSub HTTPD_PARA][LIT_CHARS " -DSSL"]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('HTTPD_PROTO', {[LIT_CHARS http]})]) ) (= scope= flags=0 words=[] bindings=[('HTTPD_DEST', {[LIT_CHARS 127.0.0.1] [LIT_OTHER ":"] [VarSub LIB_HTTPD_PORT]})]) (= scope= flags=0 words=[] bindings=[('HTTPD_URL', {[VarSub HTTPD_PROTO] [LIT_OTHER ":"] [LIT_CHARS //] [VarSub HTTPD_DEST]})]) (= scope= flags=0 words=[] bindings=[('HTTPD_URL_USER', {[VarSub HTTPD_PROTO] [LIT_OTHER ":"] [LIT_CHARS //user] [LIT_OTHER "%"] [LIT_CHARS 40host] [LIT_OTHER "@"] [VarSub HTTPD_DEST]})]) (= scope= flags=0 words=[] bindings=[('HTTPD_URL_USER_PASS', {[VarSub HTTPD_PROTO] [LIT_OTHER ":"] [LIT_CHARS //user] [LIT_OTHER "%"] [LIT_CHARS 40host] [LIT_OTHER ":"] [LIT_CHARS pass] [LIT_OTHER "%"] [LIT_CHARS 40host] [LIT_OTHER "@"] [VarSub HTTPD_DEST]})]) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub LIB_HTTPD_DAV]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub LIB_HTTPD_SVN]]}) ) (List (= scope= flags=0 words=[] bindings=[('HTTPD_PARA', {[DQ [VarSub HTTPD_PARA][LIT_CHARS " -DDAV"]]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub LIB_HTTPD_SVN]]}) (List (= scope= flags=0 words=[] bindings=[('HTTPD_PARA', {[DQ [VarSub HTTPD_PARA][LIT_CHARS " -DSVN"]]})]) (= scope= flags=0 words=[] bindings=[('LIB_HTTPD_SVNPATH', {[DQ [VarSub rawsvnrepo]]})]) (= scope= flags=0 words=[] bindings=[('svnrepo', {[DQ [LIT_CHARS "http://127.0.0.1:"][VarSub LIB_HTTPD_PORT][LIT_CHARS /]]})]) (= scope= flags=0 words=[] bindings=[('svnrepo', {[DQ [VarSub svnrepo][VarSub LIB_HTTPD_SVN]]})]) (= scope= flags=1 words=[{[LIT_CHARS LIB_HTTPD_SVN]}, {[LIT_CHARS LIB_HTTPD_SVNPATH]}] bindings=[]) ) ) ) ) ) ) (FunctionDef start_httpd [] (List (Com {[LIT_CHARS prepare_httpd]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (Com {[DQ [VarSub LIB_HTTPD_PATH]]} {[LIT_CHARS -d]} {[DQ [VarSub HTTPD_ROOT_PATH]]} {[LIT_CHARS -f]} {[DQ [VarSub TEST_PATH][LIT_CHARS /apache.conf]]} {[VarSub HTTPD_PARA]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "Listen 127.0.0.1:"][VarSub LIB_HTTPD_PORT]]} {[LIT_CHARS -k]} {[LIT_CHARS start]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) (If (Com {[LIT_CHARS test]} {[VarSub ?]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]}) (List (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub HTTPD_ROOT_PATH]] [LIT_CHARS /error.log]} < (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS test_skip_or_die]} {[VarSub GIT_TEST_HTTPD]} {[DQ [LIT_CHARS "web server setup failed"]]}) ) ) ) ) (FunctionDef stop_httpd [] (List (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (Com {[DQ [VarSub LIB_HTTPD_PATH]]} {[LIT_CHARS -d]} {[DQ [VarSub HTTPD_ROOT_PATH]]} {[LIT_CHARS -f]} {[DQ [VarSub TEST_PATH][LIT_CHARS /apache.conf]]} {[VarSub HTTPD_PARA]} {[LIT_CHARS -k]} {[LIT_CHARS stop]}) ) ) (FunctionDef test_http_push_nonff [] (List (= scope= flags=0 words=[] bindings=[('REMOTE_REPO', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('LOCAL_REPO', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('BRANCH', {[VarSub 3]})]) (= scope= flags=0 words=[] bindings=[('EXPECT_CAS_RESULT', {[VarSub 4 test_op=VS_TEST_HYPHEN {[LIT_CHARS failure]}]})]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ path2 &&\n"> output 2>&1 &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ $BRANCH (non-fast-forward)$\" output\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_] [VarSub EXPECT_CAS_RESULT]} {[SQ ]} {[SQ ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ expect &&\n"> actual &&\n"> ]}) ) ) (FunctionDef setup_askpass_helper [] (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ >\"$TRASH_DIRECTORY/askpass-query\" \"askpass: $*\" &&\n"> ]}) ) (FunctionDef set_askpass [] (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /askpass-query]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /askpass-user]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [VarSub 2]]} < (FilenameRedirectNode filename={[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /askpass-pass]]} "> 1), > ) ) ) ) (FunctionDef expect_askpass [] (List (= scope= flags=0 words=[] bindings=[('dest', {[VarSub HTTPD_DEST] [VarSub 3 test_op=VS_TEST_PLUS {[LIT_SLASH /] [VarSub 3]}]})]) (AndOr OP_AND_IF (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS none]}], [{[LIT_CHARS pass]}], [{[LIT_CHARS both]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "askpass: Password for 'http://"][VarSub 2][LIT_CHARS "@"][VarSub dest][LIT_CHARS "': "]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "askpass: Username for 'http://"][VarSub dest][LIT_CHARS "': "]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "askpass: Password for 'http://"][VarSub 2][LIT_CHARS "@"][VarSub dest][LIT_CHARS "': "]]}) ) (Com {[LIT_CHARS false]}) ) (Com {[LIT_CHARS test_cmp]} {[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /askpass-expect]]} {[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /askpass-query]]}) ) ) ) )