| 1 | 
  
    #
   | 
  | 2 | 
  
    # word-eval.test.sh: Test the word evaluation pipeline in order.
   | 
  | 3 | 
  
    #
   | 
  | 4 | 
  
    # Part evaluation, splitting, joining, elision, globbing.
   | 
  | 5 | 
  
    
   | 
  | 6 | 
  
    # TODO: Rename word-eval-smoke.test.sh?
   | 
  | 7 | 
  
    # Word sequence evaluation.
   | 
  | 8 | 
  
    # This is more like a vertical slice.  For exhaustive tests, see:
   | 
  | 9 | 
  
    # 
   | 
  | 10 | 
  
    # word-split.test.sh (perhaps rename word-reframe?)
   | 
  | 11 | 
  
    # glob.test.sh
   | 
  | 12 | 
  
    
   | 
  | 13 | 
  
    
   | 
  | 14 | 
  
    argv.py bare 'sq'
   | 
  | 15 | 
  
    ## stdout: ['bare', 'sq']
   | 
  | 16 | 
  
    
   | 
  | 17 | 
  
    
   | 
  | 18 | 
  
    #set -o noglob
   | 
  | 19 | 
  
    HOME=/home/bob
   | 
  | 20 | 
  
    str=s
   | 
  | 21 | 
  
    array=(a1 a2)
   | 
  | 22 | 
  
    argv.py bare 'sq' ~ $str "-${str}-" "${array[@]}" $((1+2)) $(echo c) `echo c`
   | 
  | 23 | 
  
    ## stdout: ['bare', 'sq', '/home/bob', 's', '-s-', 'a1', 'a2', '3', 'c', 'c']
   | 
  | 24 | 
  
    ## N-I dash stdout-json: ""
   | 
  | 25 | 
  
    ## N-I dash status: 2
   | 
  | 26 | 
  
    
   | 
  | 27 | 
  
    
   | 
  | 28 | 
  
    s1='1 2'
   | 
  | 29 | 
  
    s2='3 4'
   | 
  | 30 | 
  
    s3='5 6'
   | 
  | 31 | 
  
    argv.py $s1$s2 "$s3"
   | 
  | 32 | 
  
    ## stdout: ['1', '23', '4', '5 6']
   | 
  | 33 | 
  
    
   | 
  | 34 | 
  
    
   | 
  | 35 | 
  
    set -- x y z
   | 
  | 36 | 
  
    s1='1 2'
   | 
  | 37 | 
  
    array=(a1 a2)
   | 
  | 38 | 
  
    argv.py $s1"${array[@]}"_"$@"
   | 
  | 39 | 
  
    ## stdout: ['1', '2a1', 'a2_x', 'y', 'z']
   | 
  | 40 | 
  
    ## N-I dash stdout-json: ""
   | 
  | 41 | 
  
    ## N-I dash status: 2
   | 
  | 42 | 
  
    
   | 
  | 43 | 
  
    
   | 
  | 44 | 
  
    s1=''
   | 
  | 45 | 
  
    argv.py $s1 - "$s1"
   | 
  | 46 | 
  
    ## stdout: ['-', '']
   | 
  | 47 | 
  
    
   | 
  | 48 | 
  
    
   | 
  | 49 | 
  
    argv.py ${undef:-hi} ${undef:-'a b'} "${undef:-c d}" "${un:-"e f"}" "${un:-'g h'}"
   | 
  | 50 | 
  
    ## stdout: ['hi', 'a b', 'c d', 'e f', "'g h'"]
   | 
  | 51 | 
  
    
   | 
  | 52 | 
  
    
   | 
  | 53 | 
  
    touch _tmp/foo.gg _tmp/bar.gg _tmp/foo.hh
   | 
  | 54 | 
  
    pat='_tmp/*.hh _tmp/*.gg'
   | 
  | 55 | 
  
    argv.py $pat
   | 
  | 56 | 
  
    ## stdout: ['_tmp/foo.hh', '_tmp/bar.gg', '_tmp/foo.gg']
   | 
  | 57 | 
  
    
   | 
  | 58 | 
  
    
   | 
  | 59 | 
  
    touch '_tmp/[bc]ar.mm' # file that looks like a glob pattern
   | 
  | 60 | 
  
    touch _tmp/bar.mm _tmp/car.mm
   | 
  | 61 | 
  
    argv.py '_tmp/[bc]'*.mm - _tmp/?ar.mm
   | 
  | 62 | 
  
    ## stdout: ['_tmp/[bc]ar.mm', '-', '_tmp/bar.mm', '_tmp/car.mm']
   |