(command.CommandList children: [ (C {<Id.KW_Set set>} {<-o>} {<nounset>}) (C {<Id.KW_Set set>} {<-o>} {<pipefail>}) (C {<Id.KW_Set set>} {<-o>} {<errexit>}) (C {<source>} {<test/common.sh>}) (command.ShFunction name: _compare body: (command.BraceGroup children: [ (C {<Id.KW_Set set>} {<Id.Lit_Other '+'> <o>} {<errexit>}) (command.Simple words: [{(DQ ($ Id.VSub_At '$@'))}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<_tmp/shebang.txt>})] ) (C {<local>} {<Id.Lit_VarLike 'expected_status='> ($ Id.VSub_QMark '$?')}) (command.Simple words: [{($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<_tmp/osh.txt>})] ) (C {<local>} {<Id.Lit_VarLike 'osh_status='> ($ Id.VSub_QMark '$?')}) (C {<Id.KW_Set set>} {<-o>} {<errexit>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [(C {<diff>} {<-u>} {<_tmp/shebang.txt>} {<_tmp/osh.txt>})] negated: T ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} {<FAIL>}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [111 124] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_DollarName '$expected_status')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$osh_status')} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} { (DQ <'FAIL: Got status '> ($ Id.VSub_DollarName '$osh_status') <' but expected '> ($ Id.VSub_DollarName '$expected_status') ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [141 153] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: version-text body: (command.BraceGroup children:[(C {<_compare>} {<test/spec.sh>} {<version-text>})]) ) (command.ShFunction name: count body: (command.BraceGroup children: [ (C {<_compare>} {<scripts/count.sh>} {<all>}) (C {<_compare>} {<scripts/count.sh>} {<parser>}) (C {<_compare>} {<scripts/count.sh>} {<parser-port>}) (C {<_compare>} {<scripts/count.sh>} {<runtime>}) ] ) ) (command.ShFunction name: one-spec-test body: (command.BraceGroup children:[(C {<_compare>} {<test/spec.sh>} {<builtins-special>})]) ) (command.ShFunction name: html-summary body: (command.BraceGroup children:[(C {<_compare>} {<test/spec-runner.sh>} {<html-summary>})]) ) (command.ShFunction name: gen-module-init body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'modules='> (SQ <'time datetime'>)}) (C {<_compare>} {<build/actions.sh>} {<gen-module-init>} {($ Id.VSub_DollarName '$modules')}) ] ) ) (command.ShFunction name: wild body: (command.BraceGroup children: [(C {<_compare>} {<test/wild.sh>} {<all>} {(SQ <'^distro/usr-bin'>)})] ) ) (command.ShFunction name: startup-benchmark body: (command.BraceGroup children: [(C {<_compare>} {<benchmarks/startup.sh>} {<compare-strace>})] ) ) (command.ShFunction name: configure body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<./configure>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: nix body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/nix.sh>} {<isElfSimpleWithStdin>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: and-or body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/and-or.sh>} {<test-simple>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: comments body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/comments.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: readonly_ body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/readonly.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: export body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/export.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: glob body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/glob.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: no-op body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<scripts/count.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: complex-here-docs body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/complex-here-docs.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: strip-op-char-class body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/strip-op-char-class.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: echo-e body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/echo-e.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: dollar-sq body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/dollar-sq.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: word-eval body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/word-eval.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: abuild body: (command.BraceGroup children: [(C {<_compare>} {<gold/abuild.sh>} {<is_function>} {<is_function>})] ) ) (command.ShFunction name: declare body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/declare.sh>} {<demo>}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: scope body: (command.BraceGroup children: [ (command.Sentence child: (C {<_compare>} {<gold/scope.sh>}) terminator: <Id.Op_Semi _> ) ] ) ) (C {<readonly>} {<-a>} {<Id.Lit_VarLike 'PASSING='> (sh_array_literal left: <Id.Op_LParen _> words: [ {<configure>} {<nix>} {<and-or>} {<comments>} {<readonly_>} {<export>} {<glob>} {<no-op>} {<complex-here-docs>} {<echo-e>} {<dollar-sq>} {<word-eval>} {<strip-op-char-class>} {<abuild>} {<count>} {<one-spec-test>} {<html-summary>} {<gen-module-init>} ] ) } ) (command.ShFunction name: all-passing body: (command.BraceGroup children: [ (C {<run-all>} { (DQ (braced_var_sub token: <Id.VSub_Name PASSING> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) ] ) ) (command.ShFunction name: run-for-release body: (command.BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'out_dir='> <_tmp/gold>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')}) (command.Pipeline children: [(C {<all-passing>}) (C {<tee>} {($ Id.VSub_DollarName '$out_dir') </log.txt>})] negated: F ) (C {<echo>} {(DQ <'Wrote '> ($ Id.VSub_DollarName '$out_dir') </log.txt>)}) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )