summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2012-10-02 01:38:43 (EDT)
committer P. J. McDermott <pjm@nac.net>2012-10-02 01:38:43 (EDT)
commit51a47d87ae5b8b219a5c6bd918a602e3ec8ae076 (patch)
tree495f6a600b390ebb252b3cda0a7f54470d053327 /tests
parent06d757be67965ebe669d8d2710417bacb8ff1a46 (diff)
Add "ob_match_arch" unit test.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.in2
-rw-r--r--tests/ob_match_arch.rc49
-rw-r--r--tests/ob_match_arch.sh97
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 "${@}"