#!/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