From bb70bf16b320819d1e94bb128b92c6b5b29bc096 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sat, 16 Aug 2014 12:15:04 -0400 Subject: Add parse_control() tests framework --- (limited to 'tests') diff --git a/tests/parse_control.common.sh b/tests/parse_control.common.sh new file mode 100644 index 0000000..2ff9a6e --- /dev/null +++ b/tests/parse_control.common.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# ProteanOS Development Kit +# tests/parse_control.common.sh +# Common parse_control() tests functions +# +# Copyright (C) 2014 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 . + +. "${srcdir}/tests/common.sh" + +use output +use control + +load_locale + +HT=' ' +LF=' +' + +test_result= + +field() +{ + test_results="${test_results}${1}${HT}${2}${LF}" +} + +para() +{ + test_results="${test_results}ΒΆ${LF}" +} + +parse_control - field para "${req_fields}" <<-EOF + ${packages} + EOF + +printf 'Required fields: %s\n\n' "${req_fields}" + +printf 'Diff:\n' +exec 3<<-EOF + ${results} + EOF +exec 4<<-EOF + ${test_results} + EOF +line_no=0 +while :; do + line_no=$(($line_no + 1)) + errors=0 + read -r good_line <&3 || errors=$(($errors + 1)) + read -r test_line <&4 || errors=$(($errors + 1)) + [ ${errors} -eq 2 ] && break + if [ "x${good_line}" = "x${test_line}" ]; then + printf '%3d %s\n' ${line_no} "${good_line}" + else + printf '%3d %s-%s%s\n' ${line_no} "${red}" "${good_line}" \ + "${std}" + printf '%3d %s+%s%s\n' ${line_no} "${grn}" "${test_line}" \ + "${std}" + tests_es=1 + fi +done +exec 3<&- +exec 4<&- + +printf '\nExpected results:\n' +line_no=0 +while read -r line; do + line_no=$(($line_no + 1)) + printf '%3d %s\n' ${line_no} "${line}" +done <<-EOF + ${results} + EOF +printf '\nTest results:\n' +line_no=0 +while read -r line; do + line_no=$(($line_no + 1)) + printf '%3d %s\n' ${line_no} "${line}" +done <<-EOF + ${test_results} + EOF -- cgit v0.9.1