...(bool_expr.LogicalOr left: (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "foo || ! bar ]]" src: (source.MainFile path:"") ) ) ] ) ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:9 line:...0x7f71a8bf7a48)]) ) ) ) (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 1 col: 0 line: (SourceLine line_num: 1 content: "a == b ]]" src: (source.MainFile path:"") ) ) ] ) right: (CompoundWord parts:[(Token id:Id.Lit_Chars length:1 col:5 line:...0x7f71a8bf7aa0)]) ) (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "foo ]]" src: (source.MainFile path:"") ) ) ] ) ) (bool_expr.WordTest w: (CompoundWord parts: [ (SimpleVarSub tok: (Token id: Id.VSub_DollarName length: 4 col: 0 line: (SourceLine line_num: 1 content: "$foo\"bar\" ]]" src: (source.MainFile path:"") ) ) ) (DoubleQuoted left: (Token id:Id.Left_DoubleQuote length:1 col:4 line:...0x7f71a8bf7b50) parts: [(Token id:Id.Lit_Chars length:3 col:5 line:...0x7f71a8bf7b50)] right: (Token id:Id.Right_DoubleQuote length:1 col:8 line:...0x7f71a8bf7b50) ) ] ) ) ------------- (bool_expr.Unary op_id: Id.BoolUnary_z child: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 3 line: (SourceLine line_num: 1 content: "-z foo ]]" src: (source.MainFile path:"") ) ) ] ) ) (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "foo == bar ]]" src: (source.MainFile path:"") ) ) ] ) right: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:7 line:...0x7f71a8bf7aa0)]) ) (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 2 line: (SourceLine line_num: 1 content: "( foo == bar ) ]]" src: (source.MainFile path:"") ) ) ] ) right: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:9 line:...0x7f71a8bf7aa0)]) ) (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "foo ]]" src: (source.MainFile path:"") ) ) ] ) ) (bool_expr.LogicalNot child: (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 2 ... ---------------------------------------------------------------------- Ran 6 tests in 0.013s OK line: (SourceLine line_num: 1 content: "! foo ]]" src: (source.MainFile path:"") ) ) ] ) ) ) (bool_expr.LogicalAnd left: (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "zoo && ( foo == bar ) ]]" src: (source.MainFile path:"") ) ) ] ) ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:9 line:...0x7f71a8bf7a48)]) right: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:16 line:...0x7f71a8bf7a48)]) ) ) (bool_expr.LogicalAnd left: (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "foo && ! bar ]]" src: (source.MainFile path:"") ) ) ] ) ) right: (bool_expr.LogicalNot child: (bool_expr.WordTest w: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:9 line:...0x7f71a8bf7a48)]) ) ) ) (bool_expr.LogicalAnd left: (bool_expr.WordTest w: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 0 line: (SourceLine line_num: 1 content: "foo && ! bar && baz ]]" src: (source.MainFile path:"") ) ) ] ) ) right: (bool_expr.LogicalAnd left: (bool_expr.LogicalNot child: (bool_expr.WordTest w: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:9 line:...0x7f71a8bf7ba8)]) ) ) right: (bool_expr.WordTest w: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:16 line:...0x7f71a8bf7ba8)]) ) ) ) (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_z child: (CompoundWord parts: [ (Token id: Id.Lit_Chars length: 3 col: 3 line: (SourceLine line_num: 1 content: "-z foo && -z bar ]]" src: (source.MainFile path:"") ) ) ] ) ) right: (bool_expr.Unary op_id: Id.BoolUnary_z child: (CompoundWord parts:[(Token id:Id.Lit_Chars length:3 col:13 line:...0x7f71a8bf7a48)]) ) )