Home | History | Annotate | Line # | Download | only in unit-tests
cond-op-or.mk revision 1.10
      1 # $NetBSD: cond-op-or.mk,v 1.10 2023/08/15 21:27:09 rillig Exp $
      2 #
      3 # Tests for the || operator in .if conditions.
      4 
      5 .if 0 || 0
      6 .  error
      7 .endif
      8 
      9 .if !(1 || 0)
     10 .  error
     11 .endif
     12 
     13 .if !(0 || 1)
     14 .  error
     15 .endif
     16 
     17 .if !(1 || 1)
     18 .  error
     19 .endif
     20 
     21 
     22 # The right-hand side is not evaluated since the left-hand side is already
     23 # true.
     24 .if 1 || ${UNDEF}
     25 .endif
     26 
     27 # When an outer condition makes the inner '||' condition irrelevant, neither
     28 # of its operands must be evaluated.  This had been wrong in cond.c 1.283 from
     29 # 2021-12-09 and was reverted in cond.c 1.284 an hour later.
     30 .if 0 && (!defined(UNDEF) || ${UNDEF})
     31 .endif
     32 
     33 # Test combinations of outer '&&' with inner '||', to ensure that the operands
     34 # of the inner '||' is only evaluated if necessary.
     35 DEF=	defined
     36 .if 0 && (${DEF} || ${UNDEF})
     37 .endif
     38 .if 0 && (!${DEF} || ${UNDEF})
     39 .endif
     40 .if 0 && (${UNDEF} || ${UNDEF})
     41 .endif
     42 .if 0 && (!${UNDEF} || ${UNDEF})
     43 .endif
     44 .if 1 && (${DEF} || ${UNDEF})
     45 .endif
     46 # expect+1: Malformed conditional (1 && (!${DEF} || ${UNDEF})
     47 .if 1 && (!${DEF} || ${UNDEF})
     48 .endif
     49 # expect+1: Malformed conditional (1 && (${UNDEF} || ${UNDEF})
     50 .if 1 && (${UNDEF} || ${UNDEF})
     51 .endif
     52 # expect+1: Malformed conditional (1 && (!${UNDEF} || ${UNDEF})
     53 .if 1 && (!${UNDEF} || ${UNDEF})
     54 .endif
     55 
     56 
     57 # The || operator may be abbreviated as |.  This is not widely known though
     58 # and is also not documented in the manual page.
     59 
     60 .if 0 | 0
     61 .  error
     62 .endif
     63 .if !(1 | 0)
     64 .  error
     65 .endif
     66 .if !(0 | 1)
     67 .  error
     68 .endif
     69 .if !(1 | 1)
     70 .  error
     71 .endif
     72 
     73 # There is no operator |||.
     74 # expect+1: Malformed conditional (0 ||| 0)
     75 .if 0 ||| 0
     76 .  error
     77 .endif
     78 
     79 # The '||' operator must be preceded by whitespace, otherwise it becomes part
     80 # of the preceding bare word.  The condition is parsed as '"1||" != "" || 0'.
     81 .if 1|| || 0
     82 .else
     83 .  error
     84 .endif
     85