diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.in | 2 | ||||
-rw-r--r-- | tests/ob_match_arch.rc | 49 | ||||
-rw-r--r-- | tests/ob_match_arch.sh | 97 |
3 files changed, 147 insertions, 1 deletions
diff --git a/tests/Makefile.in b/tests/Makefile.in index 74b1bc4..b699b10 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -24,7 +24,7 @@ SH = @sh@ .SUFFIXES: -TESTS = ob_parse_dep ob_reduce_deps +TESTS = ob_match_arch ob_parse_dep ob_reduce_deps test: @all=0; failed=0; \ diff --git a/tests/ob_match_arch.rc b/tests/ob_match_arch.rc new file mode 100644 index 0000000..10135d7 --- /dev/null +++ b/tests/ob_match_arch.rc @@ -0,0 +1,49 @@ +set arch all +set arch_field all +set result true +test + +set arch foo-bar-baz +set arch_field any +set result true +test + +set arch foo-bar-baz +set arch_field any all +set result true +test + +set arch all +set arch_field any all +set result true +test + +set arch foo-bar-baz +set arch_field foo-any-any +set result true +test + +set arch foo-bar-baz +set arch_field foo-bar-qux +set result false +test + +set arch foo-bar-baz +set arch_field any-qux-any any-bar-any +set result true +test + +set arch foo-bar-baz +set arch_field any-qux-any any-quux-any +set result false +test + +set arch all +set arch_field any +set result false +test + +set arch all +set arch_field foo-any-any +set result false +test diff --git a/tests/ob_match_arch.sh b/tests/ob_match_arch.sh new file mode 100644 index 0000000..1d19af1 --- /dev/null +++ b/tests/ob_match_arch.sh @@ -0,0 +1,97 @@ +# opkbuild +# tests/ob_parse_dep +# Tests for ob_parse_dep. +# +# Copyright (C) 2012 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 3 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 <http://www.gnu.org/licenses/>. + +. ./common.sh + +ob_use metadata +ob_use output + +ret=0 +arch= +arch_field= +result= + +main() +{ + while read line; do + + line=${line%#*} + line=$(echo ${line}) + [ -z "${line}" ] && continue + + eval set -- ${line} + + cmd="${1}" + shift + if echo ' set test ' | grep " ${cmd} " >/dev/null 2>&1; then + "cmd_${cmd}" "${@}" + else + ob_error 'Invalid command in ob_match_arch.rc!' + fi + + done <'ob_match_arch.rc' + + exit ${ret} +} + +cmd_set() +{ + if [ ${#} -lt 2 ]; then + ob_error 'Invalid arguments to command "set" in ob_match_arch.rc!' + fi + + name="${1}" + shift + value="${@}" + + case "${name}" in + arch) + arch="${value}" + ;; + arch_field) + arch_field="${value}" + ;; + result) + result="${value}" + ;; + *) + ob_error \ + 'Invalid name argument to command "set" in ob_match_arch.rc!' + ;; + esac +} + +cmd_test() +{ + if ob_match_arch "${arch}" "${arch_field}"; then + if [ "${result}" = 'false' ]; then + printf 'False positive:\n arch: %s\n arch_field: %s\n' \ + "${arch}" "${arch_field}" >&2 + ret=1 + fi + else + if [ "${result}" = 'true' ]; then + printf 'False negative:\n arch: %s\n arch_field: %s\n' \ + "${arch}" "${arch_field}" >&2 + ret=1 + fi + fi +} + +main "${@}" |