# opkhelper # tests/testlib.sh # Library for unit tests. # # Copyright (C) 2013 Patrick "P. J." McDermott # # This program 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 2 of the License, or # (at your option) any later version. # # This program 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 this program. If not, see . assert() { if ! t_out=$(eval 2>&1 "${@}"); then printf 'Assertion failed: %s\n' "${*}" printf '%s\n' "${t_out}" | sed 's/^/ /' t_fail='true' fi } test_nodes() { t_dir="${1}" shift 1 if [ ${#} -gt 0 ]; then printf "${t_dir}%s\n" "${@}" | sort >expected else >expected fi find "${t_dir}" -exec ls -dF '{}' ';' | sort >actual diff -u expected actual t_ret=${?} rm -f expected actual return ${t_ret} } test_non_dir_nodes() { t_dir="${1}" shift 1 if [ ${#} -gt 0 ]; then printf "${t_dir}%s\n" "${@}" | sort >expected else >expected fi find "${t_dir}" ! -type d | sort >actual diff -u expected actual t_ret=${?} rm -f expected actual return ${t_ret} }