# Common testsuite functions # # Copyright (C) 2018, 2019 Patrick McDermott # # This file is part of the ProteanOS Development Kit. # # The ProteanOS Development Kit is free software: you can redistribute # it and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # The ProteanOS Development Kit is distributed in the hope that it # will be useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the ProteanOS Development Kit. If not, see # . LF=' ' is() { local description="${1}" local got="${2}" local expected="${3}" shift 3 if [ "x${got}" = "x${expected}" ]; then ok_ -- "${description}" else not_ok_ -- "${description}" diag_ " Failed test '${description}'" diag_ " got: '${got}'" diag_ " expected: '${expected}'" fi } # is_diff() is based on cmd_is() from opkbuild 4.0.2, with test results passed # by argument and context added to the diagnostic output. is_diff() { local description="${1}" local got="${2}" local exp="${3}" shift 3 local ok= local diag= local eof= ok=true diag='' exec 3<<-EOF ${got} EOF exec 4<<-EOF ${exp} EOF while :; do eof=0 IFS='' read -r got 0<&3 || eof=$((${eof} + 1)) IFS='' read -r exp 0<&4 || eof=$((${eof} + 2)) [ ${eof} -eq 3 ] && break if [ x"${got}" = x"${exp}" ]; then diag="${diag} '${got}'${LF}" else ok=false diag="${diag} got: '${got}'${LF}" diag="${diag} expected: '${exp}'${LF}" fi done exec 3<&- exec 4<&- if ${ok}; then ok_ -- "${description}" else not_ok_ -- "${description}" diag_ " Failed test '${description}'" while IFS='' read -r diag; do diag_ "${diag}" done <<-EOF ${diag} EOF fi }