| 1 | #!bin/ysh
 | 
| 2 | 
 | 
| 3 | source $LIB_YSH/yblocks.ysh  # module under test
 | 
| 4 | 
 | 
| 5 | : ${LIB_OSH=stdlib/osh}
 | 
| 6 | source $LIB_OSH/two.sh  
 | 
| 7 | source $LIB_OSH/task-five.sh
 | 
| 8 | 
 | 
| 9 | proc _check (; val) {  # TODO: assert
 | 
| 10 |   if (not val) {
 | 
| 11 |     pp line (val)
 | 
| 12 |     error "Failed:"
 | 
| 13 |   }
 | 
| 14 | }
 | 
| 15 | 
 | 
| 16 | _demo-stderr() {
 | 
| 17 |   echo zzz "$@" >& 2
 | 
| 18 |   return 99
 | 
| 19 | }
 | 
| 20 | 
 | 
| 21 | proc test-yb-capture {
 | 
| 22 | 
 | 
| 23 |   yb-capture (&r) {
 | 
| 24 |     write --end '' hi
 | 
| 25 |   }
 | 
| 26 |   _check (0 === r.status)
 | 
| 27 |   _check ('hi' === r.stdout)
 | 
| 28 | 
 | 
| 29 |   #return
 | 
| 30 | 
 | 
| 31 |   yb-capture (&r) {
 | 
| 32 |     echo hi
 | 
| 33 |   }
 | 
| 34 |   #pp line (r)
 | 
| 35 |   _check (0 === r.status)
 | 
| 36 |   _check (u'hi\n' === r.stdout)
 | 
| 37 | 
 | 
| 38 |   # TODO: _demo-stderr fails - we catch this earlier though!
 | 
| 39 |   yb-capture-2 (&r) {
 | 
| 40 |     _demo-stderr yyy
 | 
| 41 |   }
 | 
| 42 |   _check (99 === r.status)
 | 
| 43 |   _check (u'zzz yyy\n' === r.stderr)
 | 
| 44 | 
 | 
| 45 |   yb-capture (&r) {
 | 
| 46 |     _demo-stderr aaa
 | 
| 47 |   }
 | 
| 48 |   _check (99 === r.status)
 | 
| 49 |   _check ('' === r.stdout)
 | 
| 50 | }
 | 
| 51 | 
 | 
| 52 | proc test-yb-redir-not-needed {
 | 
| 53 |   # TODO: need $BYO_TEMP_DIR maybe?  Or is that implicit with 'cd'?  We don't
 | 
| 54 |   # always have a temp dir
 | 
| 55 | 
 | 
| 56 |   var tmp = "${BYO_TEMP_DIR:-/tmp}/$$"
 | 
| 57 | 
 | 
| 58 |   try > $tmp {
 | 
| 59 |     seq 3
 | 
| 60 |   }
 | 
| 61 |   _check (0 === _error.code)
 | 
| 62 | 
 | 
| 63 |   diff -u $tmp - << EOF
 | 
| 64 | 1
 | 
| 65 | 2
 | 
| 66 | 3
 | 
| 67 | EOF
 | 
| 68 | 
 | 
| 69 |   try 2>$tmp {
 | 
| 70 |     log $'hi\nthere'
 | 
| 71 |   }
 | 
| 72 |   _check (0 === _error.code)
 | 
| 73 | 
 | 
| 74 |   diff -u $tmp - << EOF
 | 
| 75 | hi
 | 
| 76 | there
 | 
| 77 | EOF
 | 
| 78 | }
 | 
| 79 | 
 | 
| 80 | task-five "$@"
 |