#!/bin/sh
fs_check_file()
{
    if [ ! -e "$RAZOR_ROOT$1" ]; then 
	echo $1: Not in filesystem >&2
	ls -R "$RAZOR_ROOT" >&2
	exit 1
    fi
}
fs_check_file_contents()
{
    fs_check_file "$1"
    if [ `cat "$RAZOR_ROOT$1"` != "$2" ]; then
	echo $1: Unexpected contents >&2
	cat "$RAZOR_ROOT$1" >&2
	exit 1
    fi
}
fs_check_no_file()
{
    if [ -e "$RAZOR_ROOT$1" ]; then 
	echo $1: Still in filesystem >&2
	exit 1
    fi
}
check_file()
{
    ../src/razor list-files | grep -x "$1" > /dev/null
    if [ $? -ne 0 ]; then
	echo $1: Not in database >&2
	../src/razor list-files >&2
	exit 1
    fi
    ../src/razor list-files "$1" | grep -x "$1" > /dev/null
    if [ $? -ne 0 ]; then
	echo $1: Not seen by patterned list >&2
	../src/razor list-files "$1" >&2
	exit 1
    fi
    pkgs=`../src/razor list-file-packages "$1"`
    if [ -z "$pkgs" ]; then
	echo $1: Not owned by any package >&2
	../src/razor list-file-packages "$1"
	exit 1
    fi
    for nevra in "$pkgs"; do
	name=`echo $nevra | sed 's/\-.*$//'`
	../src/razor list-package-files "$name" | grep -x "$1" > /dev/null
	if [ $? -ne 0 ]; then
	    echo $1: Not in database for package $name >&2
	    ../src/razor list-package-files "$name"
	    exit 1
	fi
    done
    fs_check_file $1
}
check_no_file()
{
    ../src/razor list-files | grep -x "$1" > /dev/null
    if [ $? -eq 0 ]; then
	echo $1: Still in database >&2
	exit 1
    fi
    fs_check_no_file $1
}
export RAZOR_ROOT=`mktemp -dt` || exit 1
../src/razor init || exit 1
export YUM_URL="file://localhost/`pwd`"
../src/razor import-yum || exit 1
../src/razor install --relocate /usr=/opt zip || exit 1
fs_check_file_contents /opt/bin/zip zip-1-1
fs_check_file /opt/var/lib/zip/data.zap
../src/razor install --relocate /usr=/opt zip || exit 1
../src/razor install --relocate /usr=/opt zip || exit 1
rm -rf "$RAZOR_ROOT"
