(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS pipefail]} ) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE]]})] [LIT_CHARS /../..]})]) (Com {[LIT_CHARS source]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/lib/init.sh]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS golang] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS setup_env]} ) (= scope= flags=0 words=[] bindings=[('KUBE_CACHE_MUTATION_DETECTOR', {[DQ [VarSub KUBE_CACHE_MUTATION_DETECTOR test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS true]}]]})]) (= scope= flags=1 words=[{[LIT_CHARS KUBE_CACHE_MUTATION_DETECTOR]}] bindings=[]) (FunctionDef kube::test::find_dirs [] (Subshell (List (Com {[LIT_CHARS cd]} {[VarSub KUBE_ROOT]} ) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS -L]} {[LIT_CHARS .]} {[LIT_CHARS -not]} {[\ LIT_ESCAPED_CHAR "\\("]} {[\ LIT_ESCAPED_CHAR "\\("]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[\ LIT_ESCAPED_CHAR "\\)"]} {[LIT_CHARS -prune]} {[\ LIT_ESCAPED_CHAR "\\)"]} {[LIT_CHARS -name]} {[SQ ]} {[LIT_CHARS -print0]} ) (Com {[LIT_CHARS xargs]} {[LIT_CHARS -0n1]} {[LIT_CHARS dirname]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]} more_env=[('LC_ALL', {[LIT_CHARS C]})] ) ) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS -L]} {[LIT_CHARS .]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -prune]} {[LIT_CHARS -o]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -name]} {[SQ ]} {[LIT_CHARS -print0]} ) (Com {[LIT_CHARS xargs]} {[LIT_CHARS -0n1]} {[LIT_CHARS dirname]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]} more_env=[('LC_ALL', {[LIT_CHARS C]})] ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('KUBE_TIMEOUT', {[VarSub KUBE_TIMEOUT test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS "-timeout 120s"]}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_COVER', {[VarSub KUBE_COVER test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS n]}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_COVERMODE', {[VarSub KUBE_COVERMODE test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS atomic]}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_COVERPROCS', {[VarSub KUBE_COVERPROCS test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 4]}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_RACE', {[VarSub KUBE_RACE test_op=VS_TEST_COLON_HYPHEN {}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_GOVERALLS_BIN', {[VarSub KUBE_GOVERALLS_BIN test_op=VS_TEST_COLON_HYPHEN {}]})]) (= scope= flags=0 words=[] bindings=[('ALL_VERSIONS_CSV', {[ComSub (List (= scope= flags=0 words=[] bindings=[('IFS', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub KUBE_AVAILABLE_GROUP_VERSIONS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_STAR "*"}}) transform_ops=[PatSub {[LIT_CHARS " "]} {[LIT_CHARS ","]} do_all]]]}) (= scope= flags=0 words=[] bindings=[('IFS', {[LIT_OTHER "$"]})]) )] [LIT_COMMA ","] [LIT_CHARS federation/v1beta1]})]) (= scope= flags=0 words=[] bindings=[('KUBE_TEST_API_VERSIONS', {[DQ [VarSub KUBE_TEST_API_VERSIONS test_op=VS_TEST_COLON_HYPHEN {[VarSub ALL_VERSIONS_CSV]}]]})]) (= scope= flags=0 words=[] bindings=[('KUBE_JUNIT_REPORT_DIR', {[VarSub KUBE_JUNIT_REPORT_DIR test_op=VS_TEST_COLON_HYPHEN {}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_KEEP_VERBOSE_TEST_OUTPUT', {[VarSub KUBE_KEEP_VERBOSE_TEST_OUTPUT test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS n]}]})]) (FunctionDef kube::test::usage [] (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage_from_stdin]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "usage: "][VarSub 0][LIT_CHARS " [OPTIONS] [TARGETS]\n"][LIT_CHARS "\n"][LIT_CHARS "OPTIONS:\n"][LIT_CHARS " -p : number of parallel workers, must be >= 1\n"]]} 0), > ) ) (FunctionDef isnum [] (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub 1]]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS 0-9] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "+"] [LIT_OTHER "$"]}}) ) (= scope= flags=0 words=[] bindings=[('PARALLEL', {[DQ [VarSub PARALLEL test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]]})]) (While (Com {[LIT_CHARS getopts]} {[DQ [LIT_CHARS "hp:i:"]]} {[LIT_CHARS opt]} ) (Case to_match={[VarSub opt]}, pat_word_list=[[{[LIT_CHARS h]}], [{[LIT_CHARS p]}], [{[LIT_CHARS i]}], [{[LIT_OTHER "?"]}], [{[LIT_OTHER ":"]}]] (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS test] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) (List (= scope= flags=0 words=[] bindings=[('PARALLEL', {[DQ [VarSub OPTARG]]})]) (If (AndOr OP_OR_IF (Pipeline! (Com {[LIT_CHARS isnum]} {[DQ [VarSub PARALLEL]]} ) ) (DBracket {B2 BINARY_INT_LE {[DQ [VarSub PARALLEL]]} {[LIT_CHARS 0]}}) ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} {[DQ [LIT_CHARS "'"][VarSub 0][LIT_CHARS "': argument to -p must be numeric and greater than 0"]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS test] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} {[DQ [LIT_CHARS "'"][VarSub 0][LIT_CHARS "': use GOFLAGS='-count '"]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS test] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS test] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} {[DQ [LIT_CHARS "Option -"][VarSub OPTARG][LIT_CHARS " "]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS test] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) (Com {[LIT_CHARS shift]} {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub OPTIND]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]} ) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "goflags=("][VarSub KUBE_GOFLAGS test_op=VS_TEST_COLON_HYPHEN {}][LIT_CHARS ")"]]} ) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "testargs=("][VarSub KUBE_TEST_ARGS test_op=VS_TEST_COLON_HYPHEN {}][LIT_CHARS ")"]]} ) (= scope= flags=0 words=[] bindings=[('go_test_grep_pattern', {[DQ [LIT_CHARS ".*"]]})]) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub KUBE_JUNIT_REPORT_DIR]]}}) (List (= scope= flags=0 words=[] bindings=[('goflags+', {[Array {[LIT_CHARS -v]}]})]) (= scope= flags=0 words=[] bindings=[('go_test_grep_pattern', {[DQ [LIT_CHARS "^[^[:space:]]"][\ LIT_ESCAPED_CHAR "\\+"][LIT_CHARS "[[:space:]]"][\ LIT_ESCAPED_CHAR "\\+"][LIT_CHARS "[^[:space:]]"][\ LIT_ESCAPED_CHAR "\\+"][LIT_CHARS "/[^[[:space:]]"][\ LIT_ESCAPED_CHAR "\\+"]]})]) ) ) (= scope= flags=0 words=[] bindings=[('testcases', {[Array ]})]) (For arg do_arg_iter) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub arg]]} {[LIT_CHARS -] [LIT_OTHER "*"]}}) (= scope= flags=0 words=[] bindings=[('goflags+', {[Array {[DQ [VarSub arg]]}]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('testcases+', {[Array {[DQ [VarSub arg]]}]})]) ) ) (If (DBracket {B2 BINARY_INT_EQ {[VarSub testcases bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]} {[LIT_CHARS 0]}}) (= scope= flags=0 words=[] bindings=[('testcases', {[Array {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS test] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find_dirs]})]}]})]) ) (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[DQ [VarSub testcases bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_PLUS {[VarSub testcases bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} ) (FunctionDef junitFilenamePrefix [] (List (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub KUBE_JUNIT_REPORT_DIR]]}}) (List (Com {[LIT_CHARS echo]} {[DQ ]} ) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub KUBE_JUNIT_REPORT_DIR]]} ) (= scope= flags=0 words=[] bindings=[('KUBE_TEST_API_HASH', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub KUBE_TEST_API transform_ops=[PatSub {[\ LIT_ESCAPED_CHAR "\\/"]} {[LIT_CHARS -]} do_all]]]}) (Com {[LIT_CHARS sha1sum]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub KUBE_JUNIT_REPORT_DIR][LIT_CHARS /junit_][VarSub KUBE_TEST_API_HASH][LIT_CHARS _][ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS sortable_date]})]]} ) ) ) (FunctionDef produceJUnitXMLReport [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('junit_filename_prefix', {[VarSub 1]})]) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub junit_filename_prefix]]}}) (Com {[LIT_CHARS return]} ) ) (= scope= flags=0 words=[{[LIT_CHARS test_stdout_filenames]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS junit_xml_filename]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('test_stdout_filenames', {[ComSub (Com {[LIT_CHARS ls]} {[VarSub junit_filename_prefix] [LIT_OTHER "*"] [LIT_CHARS .stdout]})]})]) (= scope= flags=0 words=[] bindings=[('junit_xml_filename', {[DQ [VarSub junit_filename_prefix][LIT_CHARS .xml]]})]) (If (Pipeline! (Com {[LIT_CHARS command]} {[LIT_CHARS -v]} {[LIT_CHARS go-junit-report]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS error]} {[DQ [LIT_CHARS "go-junit-report not found; please install with "]]} {[DQ [LIT_CHARS "go get -u github.com/jstemmer/go-junit-report"]]} ) (Com {[LIT_CHARS return]} ) ) ) (Pipeline (Com {[LIT_CHARS cat]} {[VarSub test_stdout_filenames]} ) (Com {[LIT_CHARS go-junit-report]} < (FilenameRedirectNode filename={[DQ [VarSub junit_xml_filename]]} "> 1), > ) ) (If (DBracket {B! {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_KEEP_VERBOSE_TEST_OUTPUT]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}}) (Com {[LIT_CHARS rm]} {[VarSub test_stdout_filenames]} ) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [LIT_CHARS "Saved JUnit XML test report to "][VarSub junit_xml_filename]]} ) ) ) (FunctionDef runTests [] (List (= scope= flags=0 words=[{[LIT_CHARS junit_filename_prefix]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('junit_filename_prefix', {[ComSub (Com {[LIT_CHARS junitFilenamePrefix]})]})]) (If (DBracket {B! {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_COVER]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}}) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [LIT_CHARS "Running tests without code coverage"]]} ) (Com {[LIT_CHARS go]} {[LIT_CHARS test]} {[LIT_CHARS -i]} {[DQ [VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} {[VarSub KUBE_RACE]} {[VarSub KUBE_TIMEOUT]} {[DQ [VarSub @ test_op=VS_TEST_PLUS {[VarSub @ transform_ops=[PatSub {} {[VarSub KUBE_GO_PACKAGE] [LIT_SLASH /]} do_suffix]]}]]} {[DQ [VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} ) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS go]} {[LIT_CHARS test]} {[DQ [VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} {[VarSub KUBE_RACE]} {[VarSub KUBE_TIMEOUT]} {[DQ [VarSub @ test_op=VS_TEST_PLUS {[VarSub @ transform_ops=[PatSub {} {[VarSub KUBE_GO_PACKAGE] [LIT_SLASH /]} do_suffix]]}]]} {[DQ [VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} ) (Com {[LIT_CHARS tee]} {[VarSub junit_filename_prefix test_op=VS_TEST_COLON_PLUS {[DQ [VarSub junit_filename_prefix][LIT_CHARS .stdout]]}]} ) (Com {[LIT_CHARS grep]} {[DQ [VarSub go_test_grep_pattern]]} ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('rc', {[VarSub ?]})]) (= scope= flags=0 words=[] bindings=[('rc', {[VarSub ?]})]) ) ) (Com {[LIT_CHARS produceJUnitXMLReport]} {[DQ [VarSub junit_filename_prefix]]} ) (Com {[LIT_CHARS return]} {[VarSub rc]} ) ) ) (= scope= flags=0 words=[] bindings=[('cover_report_dir', {[DQ [LIT_CHARS /tmp/k8s_coverage/][VarSub KUBE_TEST_API][LIT_CHARS /][ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS sortable_date]})]]})]) (= scope= flags=0 words=[] bindings=[('cover_profile', {[DQ [LIT_CHARS coverage.out]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [LIT_CHARS "Saving coverage output in '"][VarSub cover_report_dir][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub @ test_op=VS_TEST_PLUS {[VarSub @ transform_ops=[PatSub {} {[VarSub cover_report_dir] [LIT_SLASH /]} do_suffix]]}]]} ) (= scope= flags=0 words=[] bindings=[('cover_ignore_dirs', {[DQ [LIT_CHARS "cmd/libs/go2idl/generator|vendor/k8s.io/client-go/1.4/rest"]]})]) (For path [{[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub cover_ignore_dirs]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]}]) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS skipped][\ LIT_ESCAPED_CHAR "\\t"][LIT_CHARS k8s.io/kubernetes/][VarSub path]]} ) ) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -Ev]} {[VarSub cover_ignore_dirs]} ) (Com {[LIT_CHARS xargs]} {[LIT_CHARS -I] [LIT_LBRACE "{"] [LIT_RBRACE "}"]} {[LIT_CHARS -n1]} {[LIT_CHARS -P] [VarSub KUBE_COVERPROCS]} {[LIT_CHARS bash]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "set -o pipefail; _pkg="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "{}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "; _pkg_out="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{_pkg//"][\ LIT_ESCAPED_CHAR "\\/"][LIT_CHARS "/_}; "][LIT_CHARS " go test -i "][VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}][LIT_CHARS " "][LIT_CHARS " "][VarSub KUBE_RACE][LIT_CHARS " "][LIT_CHARS " "][VarSub KUBE_TIMEOUT][LIT_CHARS " "][LIT_CHARS " -cover -covermode="][\ LIT_ESCAPED_CHAR "\\\""][VarSub KUBE_COVERMODE][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][LIT_CHARS " -coverprofile="][\ LIT_ESCAPED_CHAR "\\\""][VarSub cover_report_dir][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{_pkg}/"][VarSub cover_profile][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][VarSub KUBE_GO_PACKAGE][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{_pkg}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][LIT_CHARS " "][VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}][LIT_CHARS "\n"][LIT_CHARS " go test "][VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub goflags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}][LIT_CHARS " "][LIT_CHARS " "][VarSub KUBE_RACE][LIT_CHARS " "][LIT_CHARS " "][VarSub KUBE_TIMEOUT][LIT_CHARS " "][LIT_CHARS " -cover -covermode="][\ LIT_ESCAPED_CHAR "\\\""][VarSub KUBE_COVERMODE][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][LIT_CHARS " -coverprofile="][\ LIT_ESCAPED_CHAR "\\\""][VarSub cover_report_dir][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{_pkg}/"][VarSub cover_profile][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][VarSub KUBE_GO_PACKAGE][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{_pkg}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][LIT_CHARS " "][VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_COLON_PLUS {[VarSub testargs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}][LIT_CHARS " "][LIT_CHARS " | tee "][VarSub junit_filename_prefix test_op=VS_TEST_COLON_PLUS {[\ LIT_ESCAPED_CHAR "\\\""] [VarSub junit_filename_prefix] [LIT_CHARS -] [\ LIT_ESCAPED_CHAR "\\$"] [LIT_CHARS _pkg_out.stdout] [\ LIT_ESCAPED_CHAR "\\\""]}][LIT_CHARS " "][LIT_CHARS " | grep "][\ LIT_ESCAPED_CHAR "\\\""][VarSub go_test_grep_pattern][\ LIT_ESCAPED_CHAR "\\\""]]} ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('test_result', {[VarSub ?]})]) (= scope= flags=0 words=[] bindings=[('test_result', {[VarSub ?]})]) ) ) (Com {[LIT_CHARS produceJUnitXMLReport]} {[DQ [VarSub junit_filename_prefix]]} ) (= scope= flags=0 words=[] bindings=[('COMBINED_COVER_PROFILE', {[DQ [VarSub cover_report_dir][LIT_CHARS /combined-coverage.out]]})]) (List redirects=[(FilenameRedirectNode filename={[DQ [VarSub COMBINED_COVER_PROFILE]]} "> 1)] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "mode: "][VarSub KUBE_COVERMODE]]} ) (For x [{[ComSub (Com {[LIT_CHARS find]} {[DQ [VarSub cover_report_dir]]} {[LIT_CHARS -name]} {[DQ [VarSub cover_profile]]})]}]) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS cat]} {[VarSub x]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -h]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^mode:"]]} ) ) (Com {[LIT_CHARS true]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('coverage_html_file', {[DQ [VarSub cover_report_dir][LIT_CHARS /combined-coverage.html]]})]) (Com {[LIT_CHARS go]} {[LIT_CHARS tool]} {[LIT_CHARS cover]} {[LIT_CHARS -html] [LIT_DBRACKET_LIKE "="] [DQ [VarSub COMBINED_COVER_PROFILE]]} {[LIT_CHARS -o] [LIT_DBRACKET_LIKE "="] [DQ [VarSub coverage_html_file]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [LIT_CHARS "Combined coverage report: "][VarSub coverage_html_file]]} ) (Com {[LIT_CHARS return]} {[VarSub test_result]} ) ) ) (FunctionDef reportCoverageToCoveralls [] (If (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_COVER]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (DBracket {B1 UNARY_FILE_x {[DQ [VarSub KUBE_GOVERALLS_BIN]]}}) ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [LIT_CHARS "Reporting coverage results to Coveralls for service "][VarSub CI_NAME test_op=VS_TEST_COLON_HYPHEN {}]]} ) (AndOr OP_OR_IF (Com {[VarSub KUBE_GOVERALLS_BIN]} {[LIT_CHARS -coverprofile] [LIT_DBRACKET_LIKE "="] [DQ [VarSub COMBINED_COVER_PROFILE]]} {[VarSub CI_NAME test_op=VS_TEST_COLON_PLUS {[DQ [LIT_CHARS "-service="][VarSub CI_NAME]]}]} {[VarSub COVERALLS_REPO_TOKEN test_op=VS_TEST_COLON_PLUS {[DQ [LIT_CHARS "-repotoken="][VarSub COVERALLS_REPO_TOKEN]]}]} ) (Com {[LIT_CHARS true]} ) ) ) ) ) (FunctionDef checkFDs [] (List (= scope= flags=0 words=[] bindings=[('fileslimit', {[DQ [ComSub (Com {[LIT_CHARS ulimit]} {[LIT_CHARS -n]})]]})]) (If (DBracket {B2 BINARY_INT_LT {[VarSub fileslimit]} {[LIT_CHARS 1000]}}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "WARNING: ulimit -n (files) should be at least 1000, is "][VarSub fileslimit][LIT_CHARS ", may cause test failure"]]} ) ) ) ) (Com {[LIT_CHARS checkFDs]} ) (Com {[LIT_CHARS read]} {[LIT_CHARS -a]} {[LIT_CHARS apiVersions]} < (HereWordRedirectNode here_word={[DQ [VarSub KUBE_TEST_API_VERSIONS]]} 0), > more_env=[('IFS', {[SQ ]})] ) (= scope= flags=0 words=[] bindings=[('apiVersionsCount', {[VarSub apiVersions bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]})]) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_LESS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[VarSub apiVersionsCount]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (= scope= flags=0 words=[] bindings=[('apiVersion', {[VarSub apiVersions bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub i]}})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Running tests for APIVersion: "][VarSub apiVersion]]} ) (Com {[LIT_CHARS runTests]} {[DQ [VarSub @]]} more_env=[('KUBE_TEST_API', {[DQ [VarSub apiVersion]]})] ) ) ) (Com {[LIT_CHARS reportCoverageToCoveralls]} ) )