#!/usr/share/ucs-test/runner bash
# shellcheck shell=bash
## desc: |
##  Update localhost component with multiple scripts
##  1. setup local repository for maintained component with multiple version
##  2. check if the latest package is installable
##  3. check if all repositories are available
## bugs: [21127]
## roles-not: [basesystem]
## tags: [basic]
## packages:
##  - apache2 | apache2-mpm-prefork
## versions:
##  2.4-2: fixed
## exposure: dangerous

RETVAL=110 # Test fehlgeschlagen
. pool.sh || exit 137

SH_LOG="${BASEDIR}/sh.log"
compname="test${RANDOM}"

setup_apache "${repoprefix}"

version1="${major}.${minor}-${_version_patchlevel}"
mkpdir "${major}.${minor}-${_version_patchlevel}" maintained "${ARCH}"  # 0 1
# 0:dists/ucs500/main/binary-amd64/
# 1:dists/errata500/main/binary-amd64/
mkdeb "${pkgname}" 1 "${ARCH}" "${DIR_POOL}"
mkpkg "${DIR}" "${DIR_POOL}"
mksh "${DIR%/main/binary-*}" preup postup

mkpdir "${major}.${minor}--component/${compname}" maintained "${ARCH}" all  # 2 3
# 2:5.0/maintained/component/test00000/amd64/
# 3:5.0/maintained/component/test00000/all/
mkdeb "${pkgname}c" 1 all "${DIR}"
mkpkg "${DIR}" "${DIR}"
mksh "${DIR}" preup postup

declare -a BDIR=("${DIRS[@]}")

minor+=1
version2="${major}.${minor}-${_version_patchlevel}"
mkpdir "${major}.${minor}-${_version_patchlevel}" maintained "${ARCH}"  # 4 5
# 4:dists/ucs510/main/binary-amd64/
# 5:dists/errata510/main/binary-amd64/
rdir="${DIR%/main/binary-*}"
mkdeb "${pkgname}" 2 "${ARCH}" "${DIR_POOL}"
mkpkg "${DIR}" "${DIR_POOL}"
mksh "${DIR%/main/binary-*}" preup postup

mkpdir "${major}.${minor}--component/${compname}" maintained "${ARCH}" all  # 6 7
# 6:5.1/maintained/component/test00000/amd64/
# 7:5.1/maintained/component/test00000/all/
cdir="${DIR}"
mkdeb "${pkgname}c" 2 all "${DIR}"
mkpkg "${DIR}" "${DIR}"
mksh "${DIR}" preup postup

cat >"${SH_LOG}" <<__SH__
${cdir}/preup.sh [0-9]\\+ pre ${major}.${minor}-${_version_patchlevel}
${rdir}/preup.sh [0-9]\\+ ${major}.${minor}-${_version_patchlevel}
${cdir}/preup.sh [0-9]\\+ post ${major}.${minor}-${_version_patchlevel}
${cdir}/postup.sh [0-9]\\+ pre ${major}.${minor}-${_version_patchlevel}
${rdir}/postup.sh [0-9]\\+ ${major}.${minor}-${_version_patchlevel}
${cdir}/postup.sh [0-9]\\+ post ${major}.${minor}-${_version_patchlevel}
__SH__

major+=1
version3="${major}.0-0"
mkpdir "${major}.0-0" maintained "${ARCH}"  # 8 9
# 8:dists/ucs600/main/binary-amd64/
# 9:dists/errata600/main/binary-amd64/
rdir="${DIR%/main/binary-*}"
mkdeb "${pkgname}" 3 "${ARCH}" "${DIR_POOL}"
mkpkg "${DIR}" "${DIR_POOL}"
mksh "${DIR%/main/binary-*}" preup postup

mkpdir "${major}.0--component/${compname}" maintained "${ARCH}" all  # 10 11
# 10:6.0/maintained/component/test00000/amd64/
# 11:6.0/maintained/component/test00000/all/
cdir="${DIR}"
mkdeb "${pkgname}c" 3 all "${DIR}"
mkpkg "${DIR}" "${DIR}"
mksh "${DIR}" preup postup

cat >>"${SH_LOG}" <<__SH__
${cdir}/preup.sh [0-9]\\+ pre ${major}.0-0
${rdir}/preup.sh [0-9]\\+ ${major}.0-0
${cdir}/preup.sh [0-9]\\+ post ${major}.0-0
${cdir}/postup.sh [0-9]\\+ pre ${major}.0-0
${rdir}/postup.sh [0-9]\\+ ${major}.0-0
${cdir}/postup.sh [0-9]\\+ post ${major}.0-0
__SH__

python2.7 create_releases_json.py "${REPODIR}" "$version1" "$version2" "$version3"

comp="repository/online/component/${compname}"
config_repo "${comp}=yes" "${comp}/parts=maintained"

(
	set -e
	checkapt "http://localhost\\(:80\\)\\?/${repoprefix}/" "${BDIR[@]}"
	apt-get -qq update
	apt-get -qq install "${pkgname}" "${pkgname}c"
	dpkg-query -W "${pkgname}" | grep -Fqx "${pkgname}	1"
	dpkg-query -W "${pkgname}c" | grep -Fqx "${pkgname}c	1"

	/usr/share/univention-updater/univention-updater net
	grep -qxf "${SH_LOG}" "${BASEDIR}/install.log"
	dpkg-query -W "${pkgname}" | grep -Fqx "${pkgname}	3"
	dpkg-query -W "${pkgname}c" | grep -Fqx "${pkgname}c	3"
	test "${major}.0" = "$(ucr get version/version)"
	test 0 = "$(ucr get version/patchlevel)"
	checkdeb "${pkgname}" 1 2 3
	checkdeb "${pkgname}c" 1 2 3
)
# shellcheck disable=SC2181
[ $? -eq 0 ] && RETVAL=100 # Test bestanden (Keine Fehler)
dpkg -P --force-all "${pkgname}" "${pkgname}c" >&3 2>&3

exit ${RETVAL}
# vim:set ft=sh:
