#! /bin/bash
# Copyright (C) 2015-2025 SHS-AV s.r.l. (<http://www.zeroincombenze.org>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
#
# 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.18




test_01() {
    local path sts RES b v x
    sts=0
    for v in 6.1 7.0 8.0 10.0 12.0 13.0 14.0 15.0 16.0 v7; do
        if [[ $v == "v7" ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
        elif [[ $v =~ (6.1|7.0|8.0|9.0) ]]; then
            OS_TREE="$v $v/addons $v/openerp"
        else
            OS_TREE="$v $v/addons $v/odoo"
        fi
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_build_odoo_env "$v"
        for path in $OS_TREE; do
          if [ ${opt_dry_run:-0} -eq 0 ]; then
            [[ $path =~ ^[/~] ]] || path=$Z0BUG_root/$path
            [[ -d $path ]] && RES=1 || RES=0
            test_result "odoo flat $path" "1" "$RES"
            sts=$?
          fi
        done

        x=$Z0BUG_root/$(echo $OS_TREE|awk '{print $3}')
        [[ -f $x/release.py ]] && RES=1 || RES=0
        test_result "odoo flat $x/release.py" "1" "$RES"
        sts+=$?

        x=$($READLINK -m $Z0BUG_root/$(echo $OS_TREE|awk '{print $3 "/.."}'))
        [[ $v =~ (6.1|7.0|8.0|9.0|v7) ]] && b="openerp-server" || b="odoo-bin"
        [[ -f $x/$b ]] && RES=1 || RES=0
        test_result "odoo flat $x/$b" "1" "$RES"
        sts+=$?
    done
    return $sts
}

test_02() {
    local path sts RES
    sts=0
    for v in 6.1 7.0 8.0 10.0 12.0 13.0 14.0 15.0 16.0 v7; do
       if [[ $v == "v7" ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
        elif [[ $v =~ (6.1|7.0) ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
        elif [[ $v =~ (8.0|9.0) ]]; then
            OS_TREE="$v $v/addons $v/openerp"
        else
            OS_TREE="$v $v/addons $v/odoo/odoo"
        fi
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_remove_os_tree "$OS_TREE"
        for path in $OS_TREE; do
          if [ ${opt_dry_run:-0} -eq 0 ]; then
            [ "${path:0:1}" != "/" ] && path=$Z0BUG_root/$path
            [ -d $path ] && RES=0 || RES=1
            test_result "odoo rmdir $path" "1" "$RES"
            sts=$?
          fi
        done
    done
    return $sts
}

test_03() {
    local path sts RES b v x hy
    sts=0
    for v in 6.1 7.0 8.0 10.0 12.0 13.0 14.0 15.0 16.0 v7; do
        if [[ $v == "v7" ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
            hy=
        elif [[ $v =~ (6.1|7.0) ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
            hy="server"
        elif [[ $v =~ (8.0|9.0) ]]; then
            OS_TREE="$v $v/addons $v/openerp"
            hy=
        else
            OS_TREE="$v $v/addons $v/odoo/odoo"
            hy="tree"
        fi
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_build_odoo_env "$v" "$hy"
        for path in $OS_TREE; do
          if [ ${opt_dry_run:-0} -eq 0 ]; then
            [[ $path =~ ^[/~] ]] || path=$Z0BUG_root/$path
            [[ -d $path ]] && RES=1 || RES=0
            test_result "odoo tree $path" "1" "$RES"
            sts=$?
          fi
        done

        x=$Z0BUG_root/$(echo $OS_TREE|awk '{print $3}')
        [[ -f $x/release.py ]] && RES=1 || RES=0
        test_result "odoo tree $x/release.py" "1" "$RES"
        sts+=$?

        x=$($READLINK -m $Z0BUG_root/$(echo $OS_TREE|awk '{print $3 "/.."}'))
        [[ $v =~ (6.1|7.0|8.0|9.0|v7) ]] && b="openerp-server" || b="odoo-bin"
        [[ -f $x/$b ]] && RES=1 || RES=0
        test_result "odoo tree $x/$b" "1" "$RES"
        sts+=$?
    done
    return $sts
}

test_04() {
    local path sts RES
    sts=0
    for v in 6.1 7.0 8.0 10.0 12.0 13.0 14.0 15.0 16.0 v7; do
        if [[ $v == "v7" ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
        elif [[ $v =~ (6.1|7.0) ]]; then
            OS_TREE="$v $v/addons $v/server/openerp"
        elif [[ $v =~ (8.0|9.0) ]]; then
            OS_TREE="$v $v/addons $v/openerp"
        else
            OS_TREE="$v $v/addons $v/odoo/odoo"
        fi
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_remove_os_tree "$OS_TREE"
        for path in $OS_TREE; do
          if [ ${opt_dry_run:-0} -eq 0 ]; then
            [ "${path:0:1}" != "/" ] && path=$Z0BUG_root/$path
            [ -d $path ] && RES=0 || RES=1
            test_result "odoo rmdir $path" "1" "$RES"
            sts=$?
          fi
        done
    done
    return $sts
}

test_05() {
    local path sts RES hy
    sts=0
    for v in 6.1 7.0 8.0 10.0 12.0 13.0 14.0 15.0 16.0; do
        if [[ $v == "v7" ]]; then
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/server/openerp"
            hy=
        elif [[ $v =~ (6.1|7.0) ]]; then
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/server/openerp"
            hy="server"
        elif [[ $v =~ (8.0|9.0) ]]; then
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/openerp"
            hy=
        else
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/odoo/odoo"
            hy="tree"
        fi
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_remove_os_tree "$OS_TREE"
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_build_odoo_env "$HOME/$v" "$hy"
        for path in $OS_TREE; do
          if [ ${opt_dry_run:-0} -eq 0 ]; then
            [[ $path =~ ^[/~] ]] || path=$Z0BUG_root/$path
            [[ -d $path ]] && RES=1 || RES=0
            test_result "odoo $path" "1" "$RES"
            sts=$?
          fi
        done
    done
    return $sts
}

test_06() {
    local path sts RES
    sts=0
    for v in 6.1 7.0 8.0 10.0 12.0 13.0 14.0 15.0 16.0 v7; do
        if [[ $v == "v7" ]]; then
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/server/openerp"
        elif [[ $v =~ (6.1|7.0) ]]; then
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/server/openerp"
        elif [[ $v =~ (8.0|9.0) ]]; then
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/openerp"
        else
            OS_TREE="$HOME/$v $HOME/$v/addons $HOME/$v/odoo/odoo"
        fi
        [ ${opt_dry_run:-0} -eq 0 ] && Z0BUG_remove_os_tree "$OS_TREE"
        for path in $OS_TREE; do
          if [ ${opt_dry_run:-0} -eq 0 ]; then
            [ "${path:0:1}" != "/" ] && path=$Z0BUG_root/$path
            [ -d $path ] && RES=0 || RES=1
            test_result "odoo rmdir $path" "1" "$RES"
            sts=$?
          fi
        done
    done
    return $sts
}


Z0BUG_setup() {
    Z0BUG_remove_os_tree "$OS_TREE"
}


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