# Copyright 2015 Koichi Murase . All rights reserved. # This script is a part of blesh (https://github.com/akinomyoga/ble.sh) # provided under the BSD-3-Clause license. Do not edit this file because this # is not the original source code: Various pre-processing has been applied. # Also, the code comments and blank lines are stripped off in the installation # process. Please find the corresponding source file(s) in the repository # "akinomyoga/ble.sh". # # Source: /lib/test-bash.sh ble-import lib/core-test ble/test/start-section 'bash' 69 ( a='x y' ble/test code:'ret=$a' ret="x y" ble/test '[[ $a == "x y" ]]' ble/test 'case $a in ("x y") true ;; (*) false ;; esac' a='x y' ble/test code:'ret=$a' ret="x y" ble/test '[[ $a == "x y" ]]' ble/test 'case $a in ("x y") true ;; (*) false ;; esac' IFS=abc a='xabcy' ble/test code:'ret=$a' ret="xabcy" ble/test '[[ $a == "xabcy" ]]' ble/test 'case $a in ("xabcy") true ;; (*) false ;; esac' IFS=$' \t\n' a='x y' ble/test 'read -r ret <<< $a' ret="x y" a='x y' if ((_ble_bash<40400)); then ble/test 'read -r ret <<< $a' ret="x y" else ble/test 'read -r ret <<< $a' ret="x y" fi IFS=abc a='xabcy' if ((_ble_bash<40400)); then ble/test 'read -r ret <<< $a' ret="x y" else ble/test 'read -r ret <<< $a' ret="xabcy" fi IFS=$' \t\n' b='/*' ble/test code:'ret=$b' ret="/*" ble/test 'case $b in ("/*") true ;; (*) false ;; esac' ble/test 'read -r ret <<< $b' ret="/*" ) ( a=("") function f1 { ret=$1; } if ((30100<=_ble_bash&&_ble_bash<30200)); then ble/test 'f1 "a${a[*]}b"' ret=$'a\177b' ble/test code:'ret="a${a[*]}b"' ret=$'a\177b' ble/test 'case "a${a[*]}b" in ($'\''a\177b'\'') true ;; (*) false ;; esac' ble/test 'read -r ret <<< "a${a[*]}b"' ret=$'a\177b' else ble/test 'f1 "a${a[*]}b"' ret='ab' ble/test code:'ret="a${a[*]}b"' ret='ab' ble/test 'case "a${a[*]}b" in (ab) true ;; (*) false ;; esac' ble/test 'read -r ret <<< "a${a[*]}b"' ret=ab fi var=X%dX%dX if ((_ble_bash<30200)); then ble/test code:'ret=${var//%d/.}' ret='X%dX%dX' else ble/test code:'ret=${var//%d/.}' ret='X.X.X' fi ble/test/chdir || exit touch {a..c}.txt function f1 { local GLOBIGNORE='*.txt'; } if ((_ble_bash<30200)); then ble/test 'f1; echo *' stdout='*' else ble/test 'f1; echo *' stdout='a.txt b.txt c.txt' fi function f1 { local POSIXLY_CORRECT=y; builtin unset -v POSIXLY_CORRECT; } set +o posix if ((_ble_bash<30200)); then ble/test 'f1; [[ -o posix ]]' else ble/test 'f1; [[ ! -o posix ]]' fi builtin unset -v POSIXLY_CORRECT ble/test '[[ ! -o posix ]]' set +o posix function f1 { local POSIXLY_CORRECT; builtin unset -v POSIXLY_CORRECT; [[ ! -o posix ]]; } if ((_ble_bash<40400)); then ble/test '! f1' else ble/test 'f1' fi set +o posix function f1/sub { true; } if ((_ble_bash<50300)); then ble/test 'set -o posix; f1/sub; ret=$?; set +o posix' ret=0 else ble/test 'set -o posix; f1/sub; ret=$?; set +o posix' ret=0 fi if ((_ble_bash<30004)); then ble/test code:'a=あ ret=${#a}' ret=3 else ble/test code:'a=あ ret=${#a}' ret=1 fi builtin unset -v v v=$'a\nb' if ((_ble_bash<30100)); then ble/test code:'declare -p v' stdout=$'declare -- v="a\\\nb"' elif ((_ble_bash<50200)); then ble/test code:'declare -p v' stdout=$'declare -- v="a\nb"' else ble/test code:'declare -p v' stdout='declare -- v=$'\''a\nb'\' fi builtin unset -v scalar if ((_ble_bash<30100)); then ble/test code:'ret="[${scalar-$'\''hello'\''}]"' ret="['hello']" # disable=#D1774 else ble/test code:'ret="[${scalar-$'\''hello'\''}]"' ret='[hello]' # disable=#D1774 fi ) ( function f1 { local -a a; local -A a; } if ((_ble_bash<40000)); then ble/test f1 exit=2 elif ((_ble_bash<50000)); then ble/test '(f1)' exit=139 # SIGSEGV else ble/test f1 exit=1 fi c=(a b c) IFS=x if ((_ble_bash<50000)); then ble/test 'case ${c[*]} in ("a b c") true ;; (*) false ;; esac' ble/test 'read -r ret <<< ${c[*]}' ret="a b c" else ble/test 'case ${c[*]} in ("axbxc") true ;; (*) false ;; esac' ble/test 'read -r ret <<< ${c[*]}' ret="axbxc" fi ble/test 'case "${c[*]}" in ("axbxc") true ;; (*) false ;; esac' ble/test 'read -r ret <<< "${c[*]}"' ret="axbxc" IFS=$' \t\n' c=(a b c) ble/test code:'ret=${c[*]}' ret="a b c" ble/test 'case ${c[*]} in ("a b c") true ;; (*) false ;; esac' ble/test 'read -r ret <<< ${c[*]}' ret="a b c" IFS=x if ((_ble_bash<40300)); then ble/test code:'ret=${c[*]}' ret="a b c" else ble/test code:'ret=${c[*]}' ret="axbxc" fi ble/test code:'ret="${c[*]}"' ret="axbxc" IFS=$' \t\n' builtin unset -v arr1 arr2 local arr1 local -a arr2 if ((_ble_bash<40200)); then ble/test code:'ret=${#arr1[@]}' ret=1 else ble/test code:'ret=${#arr1[@]}' ret=0 fi ble/test code:'ret=${#arr2[@]}' ret=0 a=($'\x7F' $'\x01') if ((_ble_bash<40000)); then ble/test 'declare -p a' stdout=$'declare -a a=\'([0]="\x01\x01\x01\x7F" [1]="\x01\x01\x01\x01")\'' # ' elif ((_ble_bash<40400)); then ble/test 'declare -p a' stdout=$'declare -a a=\'([0]="\x01\x7F" [1]="\x01\x01")\'' # ' else ble/test 'declare -p a' stdout='declare -a a=([0]=$'\''\177'\'' [1]=$'\''\001'\'')' # disable=#D0525 fi function f1 { local -a arr=(b b b); ble/util/print "(${arr[*]})"; } function f2 { local -a arr=(a a a); f1; } if ((30100<=_ble_bash&&_ble_bash<30104)); then ble/test f2 stdout='()' else ble/test f2 stdout='(b b b)' fi if ((30100<=_ble_bash&&_ble_bash<30104)); then ble/test 'function f1 { local -a alpha=(); local -a beta=(); }' else ble/test 'function f1 { local -a alpha=() beta=(); }' fi if ((_ble_bash<30200)); then ble/test code:'ret=あ ret=${#ret[0]}' ret=3 # disable=#D0182 else ble/test code:'ret=あ ret=${#ret[0]}' ret=1 # disable=#D0182 fi declare ret=(1 2 3) # disable=#D0184 if ((_ble_bash<30100)); then ble/test ret='(1 2 3)' else ble/test ret='1' fi declare -a ret=("1 2") # disable=#D0525 if ((_ble_bash<30100)); then ble/test ret='1' else ble/test ret='1 2' fi v="1 2 3" declare -a ret=("$v") # disable=#D0525 if ((_ble_bash<30100)); then ble/test ret='1' else ble/test ret='1 2 3' fi a=(1 2 3) IFS=x declare -a a1=("${a[@]}") # disable=#D0525 a2=("${a[@]}") # disable=#D0525 IFS=$' \t\n' if ((_ble_bash<30100)); then ble/test code:'ret=$a1' ret=1x2x3 ble/test code:'ret=$a2' ret=1 else ble/test code:'ret=$a1' ret=1 ble/test code:'ret=$a2' ret=1 fi IFS=x v=1x2x3 declare -a a1=($v) a2=($v) if ((_ble_bash<30100)); then ble/test code:'ret=$a1' ret=1x2x3 ble/test code:'ret=$a2' ret=1 else ble/test code:'ret=$a1' ret=1 ble/test code:'ret=$a2' ret=1 fi v='1 2 3' declare -a a1=($v) a2=($v) if ((_ble_bash<30100)); then ble/test code:'ret=$a1' ret=1 ble/test code:'ret=$a2' ret='1 2 3' else ble/test code:'ret=$a1' ret='1 2 3' ble/test code:'ret=$a2' ret='1 2 3' fi IFS=$' \t\n' builtin unset -v scalar scalar=abcd if ((_ble_bash<30100)); then ble/test code:'ret=${scalar[@]//[bc]}' ret='' # disable=#D1570 elif ((40300<=_ble_bash&&_ble_bash<40400)); then ble/test code:'ret=${scalar[@]//[bc]}' ret=$'\001a\001\001\001d' # disable=#D1570 else ble/test code:'ret=${scalar[@]//[bc]}' ret='ad' # disable=#D1570 fi ) ( q=\' line='$'$q'\'$q'!!'$q'\'$q code='(builtin history -s histentry; builtin history -p "$line")' if ((_ble_bash<30100)); then ble/test "$code" stdout= elif ((_ble_bash<40100)) || [[ $- != *[iH]* ]]; then ble/test "$code" stdout="${line//!!/histentry}" else ble/test "$code" stdout="$line" fi if ((_ble_bash<40100)); then ble/test '(set -H; builtin history -c; builtin history -p "$line")' stdout= exit=1 else ble/test '(set -H; builtin history -c; builtin history -p "$line")' stdout="$line" fi if [[ -d /proc/$$/fd ]] && { ((1)) >/dev/tty; } 2>/dev/null; then ( exec 7>/dev/null 77>/dev/null # disable=#D0857 exec 7>/dev/tty 77>/dev/tty # disable=#D0857 ble/util/getpid if ((30100<=_ble_bash&&_ble_bash<40000)); then ble/test '[[ -t 7 ]]' ble/test '[[ ! -t 77 ]]' else ble/test '[[ -t 7 ]]' ble/test '[[ -t 77 ]]' fi ) fi if [[ -d /proc/$$/fd ]] && { ((1)) >/dev/tty; } 2>/dev/null; then ( exec 7>/dev/null 77>/dev/null # disable=#D0857 exec 7>&- 77>&- # disable=#D2164 ble/util/getpid if ((30100<=_ble_bash&&_ble_bash<30200)); then ble/test '[[ ! -e /proc/$BASHPID/fd/7 ]]' ble/test '[[ -e /proc/$BASHPID/fd/77 ]]' else ble/test '[[ ! -e /proc/$BASHPID/fd/7 ]]' ble/test '[[ ! -e /proc/$BASHPID/fd/77 ]]' fi ) fi function f1 { ble/util/print hello; } >&"$fd1" function f2 { ble/util/print hello >&"$fd1"; } function f3 { { ble/util/print hello; } >&"$fd1"; } function test1 { local fd1= ble/fd#alloc fd1 '>&1' "$1" >/dev/null & local pid=$! wait "$pid" ble/fd#close fd1 } if ((_ble_bash<30100)); then ble/test 'test1 f1' stdout= else ble/test 'test1 f1' stdout=hello fi ble/test 'test1 f2' stdout=hello ble/test 'test1 f3' stdout=hello ) ( shopt -s expand_aliases alias e='ble/util/print hello' ble/test 'eval "e"' stdout=hello ble/test 'true && eval "e"' stdout=hello ble/test 'eval "e" & wait' stdout=hello if [[ $- == *i* ]]; then ble/test '(eval "e") & wait' stdout= ble/test '{ eval "e"; } & wait' stdout= ble/test 'true && eval "e" & wait' stdout= else ble/test '(eval "e") & wait' stdout=hello ble/test '{ eval "e"; } & wait' stdout=hello ble/test 'true && eval "e" & wait' stdout=hello fi builtin unalias e ) ble/test/end-section