#!/bin/sh

rpmtest () {
    if [ -n "$3" ]; then
	OPT="$1 $2"
	RPM=$3
    else
	OPT=$1
	RPM=$2
    fi

    case $RPM in
    p1*) THIS=p1; OPPOSITE=p2;;
    p2*) THIS=p2; OPPOSITE=p1;;
    esac

    echo --- rpm $OPT $RPM ---
    rpm $OPT $RPM

    if [ "$OPT" = "-e" ]; then
	if [ `grep noarch < /etc/$OPPOSITE | wc -l` != 0 ]; then
	    echo NG!
	    exit 1
	fi
    else
	if [ `grep noarch < /etc/$OPPOSITE | wc -l` != 1 ]; then
	    echo NG!
	    exit 1
	fi
	if [ `grep noarch < /etc/$OPPOSITE` != $RPM ]; then
	    echo NG!
	    exit 1
	fi
	if [ `grep noarch < /etc/$THIS | wc -l` != 1 ]; then
	    echo NG!
	    exit 1
	fi
	if [ `grep noarch < /etc/$THIS` != $OPPOSITE-1-1.noarch.rpm ]; then
	    echo NG!
	    exit 1
	fi
    fi
    echo ok
}

rpm -e p1-1 p1-2 p2-1 p2-2 > /dev/null 2>&1

rpm -ihv p1-1-1.noarch.rpm
rpmtest -ihv p2-1-1.noarch.rpm
rpmtest -Uhv p2-2-1.noarch.rpm
rpmtest -Uhv --force p2-2-1.noarch.rpm
rpmtest -Uhv --oldpackage p2-1-1.noarch.rpm
rpmtest -e p2
rpm -e p1 > /dev/null 2>&1

rpm -ihv p2-1-1.noarch.rpm
rpmtest -ihv p1-1-1.noarch.rpm
rpmtest -Uhv p1-2-1.noarch.rpm
rpmtest -Uhv --force p1-2-1.noarch.rpm
rpmtest -Uhv --oldpackage p1-1-1.noarch.rpm
rpmtest -e p1
rpm -e p2 > /dev/null 2>&1

echo GOOD!
