#!/bin/sh
# $Id: 06-cachedir,v 1.1 2007-06-27 00:44:47 mis Exp $

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

create_local_conf() {
> $TMPDIR/poldek.conf
[ -n "$1" ] && echo "cachedir = $1" >> $TMPDIR/poldek.conf
echo "

_name_prefix = test

" >> $TMPDIR/poldek.conf
}

testCacheDir() 
{

    HOME="$TMPDIR/fakehome"     # in TESTING mode $HOME is used
    mkdir $HOME || fail "mkdir"
    export HOME

    default_home_cachedir="$HOME/.poldek-cache"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir should does not exists"

    msgn "#1 non existent"
    $POLDEK --noconf --cachedir=$REPO/foobar/baz | grep -q "/foobar/baz: invalid cache directory"
    [ $? -eq "0" ] || fail "non existent directory accepted"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir should not exists"
    [ -d $REPO/foobar ] && fail "directory exist"

    cmdline_cachedir="$REPO/cmdline-cachedir"        
    msgn "--noconf --cachedir"
    $POLDEK --noconf --cachedir=$cmdline_cachedir -l 
    [ -d $cmdline_cachedir ] || fail "$cmdline_cachedir does not exists"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir should not exists"
    rm -rf $cmdline_cachedir $default_home_cachedir

    configured_cachedir="$REPO/configured-cachedir"
    create_local_conf $configured_cachedir

    msgn "--conf  --cachedir"
    $POLDEK --conf $TMPDIR/poldek.conf --cachedir=$cmdline_cachedir -l 
    [ -d $cmdline_cachedir ] || fail "--cachedir'ed $cmdline_cachedir does not exist"
    [ -d $configured_cachedir ] && fail "overwritten by cmdline $configured_cachedir exists"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir should not exists"
    rm -rf $cmdline_cachedir $configured_cachedir $default_home_cachedir

    msgn "--conf"
    $POLDEK --conf $TMPDIR/poldek.conf -l 
    [ ! -d $configured_cachedir ] && fail "$configured_cachedir does not exists"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir should not exists"
    rm -rf $configured_cachedir $default_home_cachedir


    tmpdir_cachedir="$TMPDIR/poldek-cache-${USER}"
    create_local_conf ""

    msgn "--conf without cachedir"
    $POLDEK --conf $TMPDIR/poldek.conf -l 
    [ ! -d $tmpdir_cachedir ] && fail "$tmpdir_cachedir does not exists"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir should not exists"
    rm -rf $default_home_cachedir $tmpdir_cachedir

    msgn "--conf without cachedir, with env.HOME/.poldek-cache"
    mkdir $default_home_cachedir
    $POLDEK --conf $TMPDIR/poldek.conf -l 
    [ -d $tmpdir_cachedir ] && fail "$tmpdir_cachedir should not exists"
    [ ! -d $default_home_cachedir ] && fail "$default_home_cachedir not exists"
    rm -rf $default_home_cachedir $tmpdir_cachedir

    rm -rf $configured_cachedir
    create_local_conf $configured_cachedir
    msgn "--conf URL with empty env.TMPDIR and env.TMP"
    # remote conf
    POLDEK_TESTING_PRELOAD_CONF="$SHLIBDIR/vftest-fetch.conf"
    export POLDEK_TESTING_PRELOAD_CONF
    
    url="test://$TMPDIR/poldek.conf"
    (TMPDIR=""; TMP=""; $POLDEK --conf $url -l)
    [ ! -d $configured_cachedir ] && fail "remotely $configured_cachedir does not exists"
    [ ! -d $default_home_cachedir ] && fail "$default_home_cachedir does not exists"
    rm -rf $configured_cachedir $default_home_cachedir

    msgn "--conf URL with non-empty env.TMPDIR"
    $POLDEK --conf $url -l

    [ ! -d $tmpdir_cachedir ] && fail "TMPDIR's $tmpdir_cachedir does does not exists"
    [ ! -d $configured_cachedir ] && fail "$configured_cachedir does not exists"
    [ -d $default_home_cachedir ] && fail "$default_home_cachedir does not exists"
    rm -rf $configured_cachedir $default_home_cachedir


    return 0
}    
    

. ./sh/lib/shunit2
