#!/bin/sh
# $Id: 02-up-repo,v 1.5 2007-07-09 18:38:15 mis Exp $

. ./sh/lib/setup
. ./sh/lib/repo-setup

mkidx() {
   $POLDEK_NOCONF -s $REPO --mkidx --mt pndir || fail "mkidx failed"
}

up() {
   $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --up || fail "up failed"
}

testUpdate() 
{
    POLDEK_TESTING_DENIED_FILES="packages.ndir.diff.toc"

    rm -rf $REPO/*.rpm
    # Create repo and generate some diffs
    msg "\n## Creating empty index"
    indexfile="$REPO/packages.ndir.gz"
    mkidx
    die_if_invalid_index $indexfile 0
    
    msg "\n## up"
    up

    POLDEK_TESTING_DENIED_FILES="packages.ndir.gz"
    msg "\n## Changing repo #1"    
    sleep 1
    add_package_to_repo
    mkidx
    die_if_invalid_index $indexfile 1
    die_if_invalid_index "$REPO/packages.i/packages.ndir.diff.toc.gz" 1

    msg "\n## up"
    up

    msg "\n## Changing repo #2"
    sleep 1
    remove_package_from_repo
    mkidx
    die_if_invalid_index $indexfile 0
    die_if_invalid_index "$REPO/packages.i/packages.ndir.diff.toc.gz" 2
    
    msg "\n## up"
    up

    msg "\n## Changing repo #3"
    sleep 1
    add_package_to_repo
    add_package_to_repo
    mkidx 
    die_if_invalid_index $indexfile 2
    die_if_invalid_index "$REPO/packages.i/packages.ndir.diff.toc.gz" 3

    msg "\n## up"
    up

    # <https://bugs.pld-linux.org/show_bug.cgi?id=28>
    msg "\n## Resetting repo"
    sleep 1
    rm -rf $REPO/packages.*
    add_package_to_repo
    mkidx
    msg "\n## up"

    POLDEK_TESTING_DENIED_FILES="packages.ndir.diff.toc"
    $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --up >/dev/null
    [ $? -eq 0 ] && fail "up ok" # should fail

    $POLDEK_UP -Oautoupa=y -Osource="test,type=pndir $REPOURL" --up || fail "up(a) failed"
    POLDEK_TESTING_DENIED_FILES=""

    # upa
    msg "\n## Changing repo #4"
    sleep 1
    add_package_to_repo
    mkidx
    msg "\n## up"

    POLDEK_TESTING_DENIED_FILES="packages.ndir.gz"
    $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --up || fail "up failed"

    POLDEK_TESTING_DENIED_FILES=".gz" # should be up to date
    $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --up || fail "up failed"
    $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --upa || fail "up failed"


    # autoupa on missing diff
    msg "\n## Changing repo #5 (missing diff file and autoupa)"
    sleep 1
    add_package_to_repo
    mkidx
    msg "\n## up"

    POLDEK_TESTING_DENIED_FILES="" 
    lastdiff=$(ls -tr $REPO/packages.i/packages.ndir.*.*.*-*.*.*.gz | tail -1)
    [ -z "$lastdiff" ] && fail "no last diff?"
    msg "lastdiff $lastdiff"
    rm -f "$lastdiff"
    $POLDEK_UP -Oautoupa=y -Osource="test,type=pndir $REPOURL" --up
    if [ $? -eq 0 ]; then
        echo "THE ERROR ABOVE is EXPECTED"
    else    
        fail "up"
    fi    
    
}

. ./sh/lib/shunit2
