test/update.sh
author J. Ali Harlow <ali@juiblex.co.uk>
Mon Sep 28 17:37:12 2009 +0100 (2009-09-28)
changeset 386 3d3fab314c4e
parent 382 4e261a14a6bd
child 389 4aac72ec4537
permissions -rwxr-xr-x
Fix bug causing updates to fail on systems with multiple versions of a package installed
     1 #!/bin/sh
     2 fs_check_file()
     3 {
     4     if [ ! -e "$RAZOR_ROOT$1" ]; then 
     5 	echo $1: Not in filesystem >&2
     6 	ls -R "$RAZOR_ROOT" >&2
     7 	exit 1
     8     fi
     9 }
    10 fs_check_file_contents()
    11 {
    12     fs_check_file "$1"
    13     if [ `cat "$RAZOR_ROOT$1"` != "$2" ]; then
    14 	echo $1: Unexpected contents >&2
    15 	cat "$RAZOR_ROOT$1" >&2
    16 	exit 1
    17     fi
    18 }
    19 fs_check_no_file()
    20 {
    21     if [ -e "$RAZOR_ROOT$1" ]; then 
    22 	echo $1: Still in filesystem >&2
    23 	exit 1
    24     fi
    25 }
    26 check_file()
    27 {
    28     ../src/razor list-files | grep -x "$1" > /dev/null
    29     if [ $? -ne 0 ]; then
    30 	echo $1: Not in database >&2
    31 	../src/razor list-files >&2
    32 	exit 1
    33     fi
    34     ../src/razor list-files "$1" | grep -x "$1" > /dev/null
    35     if [ $? -ne 0 ]; then
    36 	echo $1: Not seen by patterned list >&2
    37 	../src/razor list-files "$1" >&2
    38 	exit 1
    39     fi
    40     pkgs=`../src/razor list-file-packages "$1"`
    41     if [ -z "$pkgs" ]; then
    42 	echo $1: Not owned by any package >&2
    43 	../src/razor list-file-packages "$1"
    44 	exit 1
    45     fi
    46     for nevra in "$pkgs"; do
    47 	name=`echo $nevra | sed 's/\-.*$//'`
    48 	../src/razor list-package-files "$name" | grep -x "$1" > /dev/null
    49 	if [ $? -ne 0 ]; then
    50 	    echo $1: Not in database for package $name >&2
    51 	    ../src/razor list-package-files "$name"
    52 	    exit 1
    53 	fi
    54     done
    55     fs_check_file $1
    56 }
    57 check_no_file()
    58 {
    59     ../src/razor list-files | grep -x "$1" > /dev/null
    60     if [ $? -eq 0 ]; then
    61 	echo $1: Still in database >&2
    62 	exit 1
    63     fi
    64     fs_check_no_file $1
    65 }
    66 set_repository()
    67 {
    68     cp $1/repodata/primary.xml.gz $1/repodata/filelists.xml.gz .
    69     rm -rf rpms
    70     ln -s $1/rpms .
    71 }
    72 export RAZOR_ROOT=`mktemp -dt` || exit 1
    73 ../src/razor init || exit 1
    74 export YUM_URL="file://localhost/`pwd`"
    75 set_repository base
    76 ../src/razor import-yum || exit 1
    77 ../src/razor install --relocate /usr=/opt zip || exit 1
    78 fs_check_file_contents /opt/bin/zip zip-1-1
    79 fs_check_file /opt/var/lib/zip/data.zap
    80 trap "set_repository base" 0
    81 set_repository updates
    82 ../src/razor import-yum || exit 1
    83 ../src/razor update --relocate /usr=/opt || exit 1
    84 check_file /opt/bin/zip
    85 fs_check_file_contents /opt/bin/zip zip-2-1
    86 fs_check_file /opt/var/lib/zip/data.zap
    87 ../src/razor remove zip || exit 1
    88 fs_check_no_file /opt/var/lib/zip/data.zap
    89 set_repository base
    90 ../src/razor import-yum || exit 1
    91 ../src/razor install --relocate /usr=/opt zip || exit 1
    92 ../src/razor install --relocate /usr=/opt zip || exit 1
    93 set_repository updates
    94 ../src/razor import-yum || exit 1
    95 ../src/razor update --relocate /usr=/opt || exit 1
    96 check_file /opt/bin/zip
    97 fs_check_file_contents /opt/bin/zip zip-2-1
    98 fs_check_file /opt/var/lib/zip/data.zap
    99 ../src/razor remove zip || exit 1
   100 fs_check_no_file /opt/var/lib/zip/data.zap
   101 rm -rf "$RAZOR_ROOT"