#! /bin/bash
# -*- coding: utf-8 -*-
# Regression tests on travis emulator
#
# 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.22


test_01() {
    # Test RST files
    local TESTSRC TESTRES
    TESTSRC=$TESTDIR/res/do_something
    TESTRES=$TESTDIR/res/do_something.tres.sh
    if [ ${opt_dry_run:-0} -eq 0 ]; then
      cat <<EOF >$TESTSRC
#
READLINK=\$(which greadlink 2>/dev/null) || READLINK=\$(which readlink 2>/dev/null)
export READLINK
THIS=\$(basename "\$0")
TDIR=\$(\$READLINK -f \$(dirname \$0))
[[ -z \$PYPATH ]] && PYPATH=\$(echo -e "C='"\$TDIR"'\nD='"\$HOME_DEVEL"'\nimport os,sys\no=os.path\na=o.abspath\nj=o.join\nd=o.dirname\nb=o.basename\nf=o.isfile\np=o.isdir\nH=o.expanduser('~')\nT=j(d(D), 'tools')\nR=j(d(D),'pypi') if o.basename(D)=='venv_tools' else j(D,'pypi')\nW=D if o.basename(D)=='venv_tools' else j(D,'venv')\ndef apl(L,P,B):\n if P:\n  if p(j(P,B,B)) and p(j(P,B,B,'script')) and f(j(P,B,B,'__init__')):\n   L.append(j(P,B,B))\n   return 1\n  elif j(P,B):\n   L.append(j(P,B))\n   return 1\n return 0\nL=[C]\nif b(C) in ('scripts','tests','travis','_travis'):\n C=a(j(C,'..'))\n L.append(C)\nif b(C)==b(d(C)) and f(j(C,'..','setup.py')):\n C=a(j(C,'..','..'))\nelif b(d(C))=='tools' and f(j(C,'setup.py')):\n C=a(j(C,'..'))\nP=os.environ['PATH'].split(':')\nV= ''\nfor X in sys.path:\n if not p(T) and p(j(X,'tools')):\n  T=j(X,'tools')\n if not V and b(X)=='site-packages':\n  V=X\nfor B in ('z0lib','zerobug','odoo_score','clodoo','travis_emulator'):\n if p(j(C,B)) or p(j(C,b(C),B)):\n  F=apl(L,C,B)\n else:\n  F=0\n  for X in P:\n   if p(j(X,B)):\n    F=apl(L,X,B)\n    break\n  if not F:\n   F=apl(L,V,B)\n  if not F:\n   apl(L,T,B)\nL=L+[os.getcwd()]+P\np=set()\npa=p.add\np=[x for x in L if x and x.startswith((H,D,C)) and not (x in p or pa(x))]\nprint(' '.join(p))\n"|\$PYTHON)
for d in \$TDIR \${PATH//:/ } \${PYPATH//:/ } /etc /home/odoo/devel/pypi/wok_code/wok_code/../z0lib /home/odoo/devel/pypi/wok_code/wok_code/../../z0lib /home/odoo/devel/pypi/wok_code/wok_code/../../z0lib/z0lib; do
  if [[ -e \$d/z0librc ]]; then
    . \$d/z0librc
    Z0LIBDIR=\$d
    Z0LIBDIR=\$(\$READLINK -e \$Z0LIBDIR)
    break
  fi
done
if [[ -z "\$Z0LIBDIR" ]]; then
  echo "Library file z0librc not found!"
  exit 72
fi

__version__=2.0.22

main
EOF
      cat <<EOF >$TESTRES
#
# 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"

# 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.22

main
EOF
      chmod +x $TESTSRC
      cvt_script -kqy $TESTSRC
    fi
    test_result "cvt_script -kqy $TESTSRC" "$TESTRES" "$TESTSRC" "diff"
}

Z0BUG_setup() {
    [[ ! -d $TESTDIR/res ]] && mkdir $TESTDIR/res
    build_cmd $RUNDIR/scripts/cvt_script.py
}


Z0BUG_init
parseoptest -l$TESTDIR/test_arcangelo.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
