#!/bin/bash
# -*- coding: utf-8 -*-
# Regression tests on z0lib
#
# Based on template 2.1.1
[ $BASH_VERSINFO -lt 4 ] && echo "This script $0 requires bash 4.0+!" && exit 4
READLINK=$(which readlink 2>/dev/null)
export READLINK
THIS=$(basename "$0")
TDIR=$(readlink -f $(dirname $0))
ME=$(readlink -e $0)
if [[ -d $HOME/devel || -z $HOME_DEVEL || ! -d $HOME_DEVEL ]]; then
  [[ -d $HOME/odoo/devel ]] && HOME_DEVEL="$HOME/odoo/devel" || HOME_DEVEL="$HOME/devel"
fi
PYPATH=""
[[ $(basename $PWD) == "tests" && $(basename $PWD/../..) == "build" ]] && PYPATH="$(dirname $PWD)"
[[ $(basename $PWD) == "tests" && $(basename $PWD/../..) == "build" && -d $PWD/../scripts ]] && PYPATH="$PYPATH $(readlink -f $PWD/../scripts)"
x=$ME; while [[ $x != $HOME && $x != "/" && ! -d $x/lib && ! -d $x/bin && ! -d $x/pypi ]]; do x=$(dirname $x); done
[[ -d $x/pypi ]] && PYPATH="$PYPATH $x/pypi"
[[ -d $x/pypi/z0lib ]] && PYPATH="$PYPATH $x/pypi/z0lib"
[[ -d $x/pypi/z0lib/z0lib ]] && PYPATH="$PYPATH $x/pypi/z0lib/z0lib"
[[ -d $x/tools ]] && PYPATH="$PYPATH $x/tools"
[[ -d $x/tools/z0lib ]] && PYPATH="$PYPATH $x/tools/z0lib"
[[ -d $x/bin ]] && PYPATH="$PYPATH $x/bin"
[[ -d $x/lib ]] && PYPATH="$PYPATH $x/lib"
[[ -d $HOME_DEVEL/venv/bin ]] && PYPATH="$PYPATH $HOME_DEVEL/venv/bin"
[[ -d $HOME_DEVEL/../tools ]] && PYPATH="$PYPATH $(readlink -f $HOME_DEVEL/../tools)"
[[ $TRAVIS_DEBUG_MODE -ge 8 ]] && echo "PYPATH=$PYPATH"
for d in $TDIR $PYPATH /etc; do
  if [[ -e $d/z0librc ]]; then
    . $d/z0librc
    Z0LIBDIR=$(readlink -e $d)
    break
  fi
done
[[ -z "$Z0LIBDIR" ]] && echo "Library file z0librc not found in <$PYPATH>!" && exit 72
[[ $TRAVIS_DEBUG_MODE -ge 8 ]] && echo "Z0LIBDIR=$Z0LIBDIR"
TESTDIR=$(findpkg "" "$TDIR . .." "tests")
[[ $TRAVIS_DEBUG_MODE -ge 8 ]] && echo "TESTDIR=$TESTDIR"
RUNDIR=$(readlink -e $TESTDIR/..)
[[ $TRAVIS_DEBUG_MODE -ge 8 ]] && echo "RUNDIR=$RUNDIR"
Z0TLIBDIR=$(findpkg z0testrc "$PYPATH" "zerobug")
[[ -z "$Z0TLIBDIR" ]] && echo "Library file z0testrc not found!" && exit 72
. $Z0TLIBDIR
Z0TLIBDIR=$(dirname $Z0TLIBDIR)
[[ $TRAVIS_DEBUG_MODE -ge 8 ]] && echo "Z0TLIBDIR=$Z0TLIBDIR"

# DIST_CONF=$(findpkg ".z0tools.conf" "$PYPATH")
# TCONF="$HOME/.z0tools.conf"
CFG_init "ALL"
link_cfg_def
link_cfg $DIST_CONF $TCONF
[[ $TRAVIS_DEBUG_MODE -ge 8 ]] && echo "DIST_CONF=$DIST_CONF" && echo "TCONF=$TCONF"
get_pypi_param ALL
RED="\e[1;31m"
CYAN="\e[1;36m"
GREEN="\e[1;32m"
CLR="\e[0m"

__version__=2.0.9


test_01() {
    local f p result TRES
    local f=$(basename $0)
    local p=$(dirname $0)
    local result=$(findpkg "$f" "$p")
    local TRES=$($READLINK -e $0)
    test_result "findpkg myself" "$TRES" "$result"
}

test_02() {
    local p p1 p2 Y1 Y2 result TRES
    p=$(dirname $0)
    p=$($READLINK -e $p)
    Y1=pgsql
    Y2=postgresql
    mkdir -p $p/$Y1
    mkdir -p $p/$Y2
    mkdir -p $p/$Y2/9.1
    touch $p/$Y2/psql
    touch $p/$Y2/9.1/psql9

    result=$(findpkg "" "$p" "$Y1")
    TRES=$($READLINK -e $p/$Y1)
    test_result "findpkg '' $p $Y1" "$TRES" "$result"

    result=$(findpkg "" "$p" "$Y2")
    TRES=$($READLINK -e $p/$Y2)
    test_result "findpkg '' $p $Y2" "$TRES" "$result"

    result=$(findpkg "" "$p" "$Y2 $Y1" "9.1")
    TRES=$($READLINK -e $p/$Y2/9.1)
    test_result "findpkg '' $p '$Y2 $Y1' 9.1" "$TRES" "$result"

    result=$(findpkg "psql" "$p" "$Y1 $Y2" "9.1")
    TRES=$($READLINK -e $p/$Y2/psql)
    test_result "findpkg psql $p '$Y2 $Y1' 9.1" "$TRES" "$result"

    result=$(findpkg "psql9" "$p" "$Y1 $Y2" "9.1")
    TRES=$($READLINK -e $p/$Y2/9.1/psql9)
    test_result "findpkg psql9 $p '$Y2 $Y1' 9.1" "$TRES" "$result"

    p1=$(basename $p)
    p=$(dirname $p)
    result=$(findpkg "psql9" "$p" "$p1" "$Y1 $Y2" "9.1")
    test_result "findpkg psql9 $p $p1 '$Y2 $Y1' 9.1" "$TRES" "$result"

    p2=$(basename $p)
    p=$(dirname $p)
    result=$(findpkg "psql9" "$p" "$p2" "$p1" "$Y1 $Y2" "9.1")
    test_result "findpkg psql9 $p $p2 $p1 '$Y2 $Y1' 9.1" "$TRES" "$result"

    result=$(findpkg "" "$p" "$p2" "$p1" "$Y1 $Y2" "9.2")
    # TRES=$($READLINK -e $p/$p2/$p1/$Y1)
    test_result "findpkg '' $p $p2 $p1 '$Y2 $Y1' 9.2" "" "$result"
}

test_03() {
    local f p result TRES
    f=""
    p="/etc /usr"
    result=$(findpkg "$f" "$p")
    TRES="/etc"
    test_result "findpkg $f $p" "$TRES" "$result"
}

test_04() {
    local f p result TRES
    f=""
    p="./Non_Exists /etc /usr"
    result=$(findpkg "$f" "$p")
    TRES="/etc"
    test_result "findpkg $f $p" "$TRES" "$result"
}

test_05() {
    local f p result TRES
    f="bash"
    p="./Non_Exists /etc /bin"
    result=$(findpkg "$f" "$p")
    if [ -s /bin ]; then
      TRES=$($READLINK -e /bin)/bash
    else
      TRES="/bin/bash"
    fi
    test_result "findpkg $f $p" "$TRES" "$result"
}

test_06() {
    local f p s result TRES
    p="/usr /etc /bin"
    s="init hosts init.d"
    if [ -h /etc/init.d ]; then
      TRES=$($READLINK -e /etc/init.d)
    else
      TRES=/etc/init.d
    fi
    if [ -f $TRES/network ]; then
      TRES=$TRES/network
      f="network"
      result=$(findpkg "$f" "$p" "$s")
    elif [ -f $TRES/networking ]; then
      TRES=$TRES/networking
      f="networking"
      result=$(findpkg "$f" "$p" "$s")
    else
      f=failed
      result=$(findpkg "$f" "$p" "$s")
    fi
    [ "$f" == "failed" ] || test_result "findpkg $f $p $s" "$TRES" "$result"
}

test_07() {
    local f p s result TRES
    f="mail/"
    p="/var  /usr /etc /bin"
    s="spool mail log lib"
    result=$(findpkg "$f" "$p" "$s")
    if [ -h  /var/spool/mail ]; then
      TRES=$($READLINK -e /var/spool/mail)
    else
      TRES=/var/spool/mail
    fi
    test_result "findpkg $f $p $s" "$TRES" "$result"
}

test_09() {
    local p p1 p2 Y1 Y2 result TRES
    p=$(dirname $0)
    p=$($READLINK -e $p)
    Y1=pgsql
    Y2=postgresql
    rm -fR $p/$Y1
    rm -fR $p/$Y2
}

Z0BUG_init
parseoptest -l$TESTDIR/test_z0lib.log "$@"
sts=$?
[[ $sts -ne 127 ]] && exit $sts
for p in z0librc odoorc travisrc zarrc z0testrc; do
  if [[ -f $RUNDIR/$p ]]; then
    [[ $p == "z0librc" ]] && Z0LIBDIR="$RUNDIR" && source $RUNDIR/$p
    [[ $p == "odoorc" ]] && ODOOLIBDIR="$RUNDIR" && source $RUNDIR/$p
    [[ $p == "travisrc" ]] && TRAVISLIBDIR="$RUNDIR" && source $RUNDIR/$p
    [[ $p == "zarrc" ]] && ZARLIB="$RUNDIR" && source $RUNDIR/$p
    [[ $p == "z0testrc" ]] && Z0TLIBDIR="$RUNDIR" && source $RUNDIR/$p
  fi
done



UT1_LIST=
UT_LIST=
[[ "$(type -t Z0BUG_setup)" == "function" ]] && Z0BUG_setup
Z0BUG_main_file "$UT1_LIST" "$UT_LIST"
sts=$?
[[ "$(type -t Z0BUG_teardown)" == "function" ]] && Z0BUG_teardown
exit $sts
