.(bool_expr.LogicalOr left: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'foo || ! bar ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 9 length: 3 span_id: 6 line: (SourceLine line_num: 1 content: 'foo || ! bar ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) ) ) (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 1 span_id: 0 line: (SourceLine line_num: 1 content: 'a == b ]]' src: (source.MainFile path:'') ) tval: a ) ] ) right: (compound_word parts: [ (Token id: Id.Lit_Chars col: 5 length: 1 span_id: 4 line: (SourceLine line_num: 1 content: 'a == b ]]' src: (source.MainFile path:'') ) tval: b ) ] ) ) (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'foo ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) (bool_expr.WordTest w: (compound_word parts: [ (simple_var_sub left: (Token id: Id.VSub_DollarName col: 0 length: 4 span_id: 0 line: (SourceLine line_num: 1 content: '$foo"bar" ]]' src: (source.MainFile path:'') ) tval: '$foo' ) var_name: foo ) (double_quoted left: (Token id: Id.Left_DoubleQuote col: 4 length: 1 span_id: 1 line: (SourceLine line_num: 1 content: '$foo"bar" ]]' src: (source.MainFile path:'') ) tval: '"' ) parts: [ (Token id: Id.Lit_Chars col: 5 length: 3 span_id: 2 line: (SourceLine line_num: 1 content: '$foo"bar" ]]' src: (source.MainFile path:'') ) tval: bar ) ] right: (Token id: Id.Right_DoubleQuote col: 8 length: 1 span_id: 3 line: (SourceLine line_num: 1 content: '$foo"bar" ]]' src: (source.MainFile path:'') ) tval: '"' ) ) ] ) ) ------------- (bool_expr.Unary op_id: Id.BoolUnary_z child: (com...pound_word parts: [ (Token id: Id.Lit_Chars col: 3 length: 3 span_id: 2 line: (SourceLine line_num: 1 content: '-z foo ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'foo == bar ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) right: (compound_word parts: [ (Token id: Id.Lit_Chars col: 7 length: 3 span_id: 4 line: (SourceLine line_num: 1 content: 'foo == bar ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (compound_word parts: [ (Token id: Id.Lit_Chars col: 2 length: 3 span_id: 2 line: (SourceLine line_num: 1 content: '( foo == bar ) ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) right: (compound_word parts: [ (Token id: Id.Lit_Chars col: 9 length: 3 span_id: 6 line: (SourceLine line_num: 1 content: '( foo == bar ) ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'foo ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) (bool_expr.LogicalNot child: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 2 length: 3 span_id: 2 line: (SourceLine line_num: 1 content: '! foo ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) ) (bool_expr.LogicalAnd left: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'zoo && ( foo == bar ) ]]' src: (source.MainFile path:'') ) tval: zoo ) ] ) ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (compound_word parts: [ (Token id: Id.Lit_Chars col: 9 length: 3 span_id: 6 line: (SourceLine line_num: 1 content: 'zoo && ( foo == bar ) ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) right: (compound_word parts: [ (Token id: Id.Lit_Chars col: 16 length: 3 span_id: 10 line: .(SourceLine line_num: 1 content: 'zoo && ( foo == bar ) ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) ) (bool_expr.LogicalAnd left: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'foo && ! bar ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 9 length: 3 span_id: 6 line: (SourceLine line_num: 1 content: 'foo && ! bar ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) ) ) (bool_expr.LogicalAnd left: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 0 length: 3 span_id: 0 line: (SourceLine line_num: 1 content: 'foo && ! bar && baz ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) right: (bool_expr.LogicalAnd left: (bool_expr.LogicalNot child: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 9 length: 3 span_id: 6 line: (SourceLine line_num: 1 content: 'foo && ! bar && baz ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) ) right: (bool_expr.WordTest w: (compound_word parts: [ (Token id: Id.Lit_Chars col: 16 length: 3 span_id: 10 line: (SourceLine line_num: 1 content: 'foo && ! bar && baz ]]' src: (source.MainFile path:'') ) tval: baz ) ] ) ) ) ) (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_z child: (compound_word parts: [ (Token id: Id.Lit_Chars col: 3 length: 3 span_id: 2 line: (SourceLine line_num: 1 content: '-z foo && -z bar ]]' src: (source.MainFile path:'') ) tval: foo ) ] ) ) right: (bool_expr.Unary op_id: Id.BoolUnary_z child: (compound_word parts: [ (Token id: Id.Lit_Chars col: 13 length: 3 span_id: 8 line: (SourceLine line_num: 1 content: '-z foo &. ---------------------------------------------------------------------- Ran 6 tests in 0.017s OK & -z bar ]]' src: (source.MainFile path:'') ) tval: bar ) ] ) ) )