public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Christian Ruppert" <idl0r@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-proxy/haproxy/
Date: Sat, 20 Jan 2024 08:08:45 +0000 (UTC)	[thread overview]
Message-ID: <1705738121.37bd728a1a437e1899c63aa3867fd250a4e130de.idl0r@gentoo> (raw)

commit:     37bd728a1a437e1899c63aa3867fd250a4e130de
Author:     Matoro Mahri <matoro_gentoo <AT> matoro <DOT> tk>
AuthorDate: Sat Jan 20 05:49:16 2024 +0000
Commit:     Christian Ruppert <idl0r <AT> gentoo <DOT> org>
CommitDate: Sat Jan 20 08:08:41 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=37bd728a

net-proxy/haproxy: wire up tests

Painstakingly tested on every version in tree including lives.  Should
be completely identical across all versions - if there are any
differences it is a mistake.

Bug: https://bugs.gentoo.org/900737
Signed-off-by: Matoro Mahri <matoro_gentoo <AT> matoro.tk>
Closes: https://github.com/gentoo/gentoo/pull/34914
Signed-off-by: Christian Ruppert <idl0r <AT> gentoo.org>

 net-proxy/haproxy/Manifest                |  1 +
 net-proxy/haproxy/haproxy-2.4.23.ebuild   | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.4.25.ebuild   | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.4.9999.ebuild | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.6.14.ebuild   | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.6.16.ebuild   | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.6.9999.ebuild | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.7.11.ebuild   | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.7.9.ebuild    | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.7.9999.ebuild | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.8.4.ebuild    | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.8.5.ebuild    | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.8.9999.ebuild | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.9.2.ebuild    | 36 +++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-2.9.9999.ebuild | 38 +++++++++++++++++++++++++++----
 net-proxy/haproxy/haproxy-9999.ebuild     | 38 +++++++++++++++++++++++++++----
 16 files changed, 495 insertions(+), 74 deletions(-)

diff --git a/net-proxy/haproxy/Manifest b/net-proxy/haproxy/Manifest
index 3214cb4e51f4..bbf0f3c5176d 100644
--- a/net-proxy/haproxy/Manifest
+++ b/net-proxy/haproxy/Manifest
@@ -1,3 +1,4 @@
+DIST VTest-af198470d7ce482d3d26eb9ca3f246a438739366.tar.gz 196700 BLAKE2B d740e19104a91b4cf978596ccda861974e96c9ed85a49c91e996c5bc6dde40f1cdcf49e6a75243aba7bf59abfd8d2c051a7ee574bab22f9e512d74376c9e1738 SHA512 cdc62271bb75ef7032745a457e1a54a84bcaadce73324272462b647383177338c5c2c8a17993d6344840e8ce0308a7e6f0df9bb766ebe0e8d4ee6dd4914e188c
 DIST haproxy-2.4.23.tar.gz 3652465 BLAKE2B 271fd166365f5589653b6651d30306689e99710c27964e70a126469c3b9b616af2923be2276fc8c87362303388ee2bf28e80ca8bfa02dc45bc0e2d931e33e685 SHA512 d40203f9bf4f4a76dce09d0b1c785060d545dd8b7907b752d7fec9b12d7e2e4c2c7aca915d72c79e19040a75bd7d338c0783f9897cf1a46bdb047e336a0aa227
 DIST haproxy-2.4.25.tar.gz 3664305 BLAKE2B b02eca0ef2719fad33c8db65b6568706cff3af9b19e2e0656970986b59116c054972341b5efd010907adb8d664fe1f72dd29feeab6a7b8bb9508e65c3bed9076 SHA512 bffe50c4155f28743fc4368e08f5912d137ac8fcad2bea70b9fb171be6a1c46c82e24059634add0b42a1d8da7d6fc76bf5287ffa8d4d530d46dbe522ad51a9e1
 DIST haproxy-2.6.14.tar.gz 4067797 BLAKE2B 20439faeca2c3e789542cf34d988f4de2ef643e7dd1214cad4cb2d70e39b047f32bd180cd8c410a4f7b17f7ed891938bf1b18e21d20bb41eef603ae99619810d SHA512 5acfaffba8df65d4dbbc57cdb61fd4a9e415214ee2dc8dabc3877da5501c46f4abe64a4512999ebd391e03d38f8ed146fe8a6a5deb90197c5255325f8749a601

diff --git a/net-proxy/haproxy/haproxy-2.4.23.ebuild b/net-proxy/haproxy/haproxy-2.4.23.ebuild
index 796d22deb9a8..2f32d219b374 100644
--- a/net-proxy/haproxy/haproxy-2.4.23.ebuild
+++ b/net-proxy/haproxy/haproxy-2.4.23.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="amd64 arm ~arm64 ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.4.25.ebuild b/net-proxy/haproxy/haproxy-2.4.25.ebuild
index 291a00595e4a..7f97bd0b755f 100644
--- a/net-proxy/haproxy/haproxy-2.4.25.ebuild
+++ b/net-proxy/haproxy/haproxy-2.4.25.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.4.9999.ebuild b/net-proxy/haproxy/haproxy-2.4.9999.ebuild
index 291a00595e4a..7f97bd0b755f 100644
--- a/net-proxy/haproxy/haproxy-2.4.9999.ebuild
+++ b/net-proxy/haproxy/haproxy-2.4.9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.6.14.ebuild b/net-proxy/haproxy/haproxy-2.6.14.ebuild
index 868b7118dca3..8ed0928f89ae 100644
--- a/net-proxy/haproxy/haproxy-2.6.14.ebuild
+++ b/net-proxy/haproxy/haproxy-2.6.14.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="amd64 ~arm ~arm64 ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.6.16.ebuild b/net-proxy/haproxy/haproxy-2.6.16.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.6.16.ebuild
+++ b/net-proxy/haproxy/haproxy-2.6.16.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.6.9999.ebuild b/net-proxy/haproxy/haproxy-2.6.9999.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.6.9999.ebuild
+++ b/net-proxy/haproxy/haproxy-2.6.9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.7.11.ebuild b/net-proxy/haproxy/haproxy-2.7.11.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.7.11.ebuild
+++ b/net-proxy/haproxy/haproxy-2.7.11.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.7.9.ebuild b/net-proxy/haproxy/haproxy-2.7.9.ebuild
index 868b7118dca3..8ed0928f89ae 100644
--- a/net-proxy/haproxy/haproxy-2.7.9.ebuild
+++ b/net-proxy/haproxy/haproxy-2.7.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="amd64 ~arm ~arm64 ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.7.9999.ebuild b/net-proxy/haproxy/haproxy-2.7.9999.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.7.9999.ebuild
+++ b/net-proxy/haproxy/haproxy-2.7.9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.8.4.ebuild b/net-proxy/haproxy/haproxy-2.8.4.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.8.4.ebuild
+++ b/net-proxy/haproxy/haproxy-2.8.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.8.5.ebuild b/net-proxy/haproxy/haproxy-2.8.5.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.8.5.ebuild
+++ b/net-proxy/haproxy/haproxy-2.8.5.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.8.9999.ebuild b/net-proxy/haproxy/haproxy-2.8.9999.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.8.9999.ebuild
+++ b/net-proxy/haproxy/haproxy-2.8.9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.9.2.ebuild b/net-proxy/haproxy/haproxy-2.9.2.ebuild
index 0e327b9a216e..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.9.2.ebuild
+++ b/net-proxy/haproxy/haproxy-2.9.2.ebuild
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-2.9.9999.ebuild b/net-proxy/haproxy/haproxy-2.9.9999.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-2.9.9999.ebuild
+++ b/net-proxy/haproxy/haproxy-2.9.9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 

diff --git a/net-proxy/haproxy/haproxy-9999.ebuild b/net-proxy/haproxy/haproxy-9999.ebuild
index 843fa7ff2a33..e34d28a9f9c3 100644
--- a/net-proxy/haproxy/haproxy-9999.ebuild
+++ b/net-proxy/haproxy/haproxy-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -6,19 +6,25 @@ EAPI="7"
 LUA_COMPAT=( lua5-4 lua5-3 )
 
 [[ ${PV} == *9999 ]] && SCM="git-r3"
-inherit toolchain-funcs lua-single systemd linux-info ${SCM}
+inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing
 
 MY_P="${PN}-${PV/_beta/-dev}"
 
 DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments"
 HOMEPAGE="http://www.haproxy.org"
 if [[ ${PV} != *9999 ]]; then
-	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz"
+	# This is arbitrary; upstream uses master.  Try to update when possible
+	VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366"
+	VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}"
+	SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz
+			test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )"
 	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
 elif [[ ${PV} == 9999 ]]; then
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/"
 	EGIT_BRANCH=master
 else
+	VTEST_DIR="${WORKDIR}/VTest"
 	EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/"
 	EGIT_BRANCH=master
 fi
@@ -26,10 +32,11 @@ fi
 LICENSE="GPL-2 LGPL-2.1"
 SLOT="0/$(ver_cut 1-2)"
 IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter
-ssl systemd +threads tools zlib lua 51degrees wurfl"
+ssl systemd test +threads tools zlib lua 51degrees wurfl"
 REQUIRED_USE="pcre-jit? ( pcre )
 	lua? ( ${LUA_REQUIRED_USE} )
 	?? ( slz zlib )"
+RESTRICT="!test? ( test )"
 
 BDEPEND="virtual/pkgconfig"
 DEPEND="
@@ -43,7 +50,11 @@ DEPEND="
 	)
 	systemd? ( sys-apps/systemd )
 	zlib? ( sys-libs/zlib )
-	lua? ( ${LUA_DEPS} )"
+	lua? ( ${LUA_DEPS} )
+	test? (
+		dev-libs/libpcre2
+		sys-libs/zlib
+	)"
 RDEPEND="${DEPEND}
 	acct-group/haproxy
 	acct-user/haproxy"
@@ -67,6 +78,15 @@ pkg_setup() {
 	fi
 }
 
+src_unpack() {
+	if [[ ${PV} != *9999 ]]; then
+		default
+	else
+		git-r3_src_unpack
+		EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack
+	fi
+}
+
 src_compile() {
 	local -a args=(
 		V=1
@@ -128,6 +148,14 @@ src_compile() {
 	fi
 }
 
+src_test() {
+	# https://github.com/vtest/VTest/issues/12
+	emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result"
+	ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests"
+	env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \
+		HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel"
+}
+
 src_install() {
 	dosbin haproxy
 


             reply	other threads:[~2024-01-20  8:08 UTC|newest]

Thread overview: 342+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-20  8:08 Christian Ruppert [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-03-21 15:46 [gentoo-commits] repo/gentoo:master commit in: net-proxy/haproxy/ Christian Ruppert
2025-02-21  7:40 Christian Ruppert
2025-01-29 16:22 Christian Ruppert
2025-01-29 15:44 Christian Ruppert
2025-01-29 15:11 Christian Ruppert
2025-01-29 15:11 Christian Ruppert
2025-01-29 13:50 Christian Ruppert
2025-01-09  8:00 Christian Ruppert
2024-12-12 14:29 Christian Ruppert
2024-12-12 13:28 Christian Ruppert
2024-12-12 13:11 Christian Ruppert
2024-11-26 16:02 Christian Ruppert
2024-11-26 15:59 Christian Ruppert
2024-11-08 14:33 Christian Ruppert
2024-11-08 14:32 Christian Ruppert
2024-11-08 14:06 Christian Ruppert
2024-11-08 14:06 Christian Ruppert
2024-10-17  7:16 Christian Ruppert
2024-10-17  7:16 Christian Ruppert
2024-10-17  7:16 Christian Ruppert
2024-09-19 16:05 Christian Ruppert
2024-09-19 12:33 Christian Ruppert
2024-09-03 14:36 Christian Ruppert
2024-09-03 14:02 Christian Ruppert
2024-09-03 14:02 Christian Ruppert
2024-07-12  8:04 Christian Ruppert
2024-06-18 14:38 Christian Ruppert
2024-06-18 14:01 Christian Ruppert
2024-06-14 13:23 Christian Ruppert
2024-06-12  7:15 Christian Ruppert
2024-06-12  7:15 Christian Ruppert
2024-06-11  9:33 Christian Ruppert
2024-06-10 15:03 Christian Ruppert
2024-06-10 14:37 Christian Ruppert
2024-05-01 23:18 Ionen Wolkens
2024-05-01 23:18 Ionen Wolkens
2024-05-01 23:18 Ionen Wolkens
2024-04-08  8:36 Christian Ruppert
2024-04-08  8:36 Christian Ruppert
2024-02-27 10:38 Christian Ruppert
2024-02-16 10:41 Christian Ruppert
2024-02-16  8:44 Christian Ruppert
2024-02-04 21:42 Ionen Wolkens
2024-02-04 21:42 Ionen Wolkens
2024-02-04 21:42 Ionen Wolkens
2024-02-04 21:42 Ionen Wolkens
2024-02-04 21:42 Ionen Wolkens
2024-02-04 21:42 Ionen Wolkens
2024-01-31 17:24 Christian Ruppert
2024-01-20  8:08 Christian Ruppert
2024-01-15 18:25 Christian Ruppert
2023-12-18 10:07 Christian Ruppert
2023-12-07 14:31 Christian Ruppert
2023-12-06  8:18 Christian Ruppert
2023-11-17 19:06 Christian Ruppert
2023-10-03 18:42 Arthur Zamarin
2023-09-07  9:57 Christian Ruppert
2023-08-21 17:02 Christian Ruppert
2023-08-21 17:02 Christian Ruppert
2023-08-10  6:57 Christian Ruppert
2023-08-09 14:31 Christian Ruppert
2023-08-09 14:15 Christian Ruppert
2023-07-17 19:09 Sam James
2023-07-17 19:09 Sam James
2023-07-17 19:09 Sam James
2023-07-17 19:09 Sam James
2023-07-17 19:04 Sam James
2023-07-17 19:04 Sam James
2023-07-17 19:04 Sam James
2023-07-17 19:04 Sam James
2023-07-03 12:46 Christian Ruppert
2023-06-12 13:30 Christian Ruppert
2023-06-10  7:31 Christian Ruppert
2023-06-07 17:24 Christian Ruppert
2023-05-31 19:18 Christian Ruppert
2023-05-31 19:18 Christian Ruppert
2023-05-31 19:18 Christian Ruppert
2023-05-02 14:20 Christian Ruppert
2023-05-02 13:04 Christian Ruppert
2023-04-27 17:05 Christian Ruppert
2023-04-02 19:30 Arthur Zamarin
2023-04-02 19:30 Arthur Zamarin
2023-03-28 13:43 Christian Ruppert
2023-03-28  9:00 Christian Ruppert
2023-03-21  8:44 Christian Ruppert
2023-03-13 12:06 Christian Ruppert
2023-02-19 19:56 Sam James
2023-02-14  8:27 Christian Ruppert
2023-02-08 10:53 Christian Ruppert
2023-02-08 10:53 Christian Ruppert
2023-01-27 14:25 Christian Ruppert
2023-01-23  8:05 Christian Ruppert
2022-12-20  8:08 Christian Ruppert
2022-12-15  4:57 Sam James
2022-12-09  9:50 Christian Ruppert
2022-12-06  9:26 Christian Ruppert
2022-12-06  9:26 Christian Ruppert
2022-12-05 11:01 Christian Ruppert
2022-12-05  8:55 Christian Ruppert
2022-12-05  8:55 Christian Ruppert
2022-11-18 20:07 Arthur Zamarin
2022-11-18 20:07 Arthur Zamarin
2022-11-18 20:07 Arthur Zamarin
2022-11-18 20:07 Arthur Zamarin
2022-11-18 20:07 Arthur Zamarin
2022-11-18 20:07 Arthur Zamarin
2022-10-10  9:06 Christian Ruppert
2022-09-23  8:27 Christian Ruppert
2022-09-22 15:30 Christian Ruppert
2022-09-22 14:56 Christian Ruppert
2022-09-19  8:30 Christian Ruppert
2022-08-29 12:38 Jakov Smolić
2022-08-29 12:38 Jakov Smolić
2022-08-29 12:38 Jakov Smolić
2022-08-22 13:53 Christian Ruppert
2022-08-22  8:50 Christian Ruppert
2022-07-28  8:05 Christian Ruppert
2022-07-27 13:45 Christian Ruppert
2022-07-26  8:28 Christian Ruppert
2022-07-22 19:24 Christian Ruppert
2022-07-22 18:52 Christian Ruppert
2022-06-28  9:27 Christian Ruppert
2022-06-21 15:03 Christian Ruppert
2022-06-21 15:01 Christian Ruppert
2022-06-21 14:57 Christian Ruppert
2022-06-16 16:30 Sam James
2022-06-01 11:35 Christian Ruppert
2022-06-01 11:35 Christian Ruppert
2022-05-13 15:56 Christian Ruppert
2022-05-13 15:56 Christian Ruppert
2022-05-06 15:37 Christian Ruppert
2022-05-02  7:09 Christian Ruppert
2022-04-26 15:28 Christian Ruppert
2022-04-26 15:28 Christian Ruppert
2022-04-11  8:08 Christian Ruppert
2022-04-06 13:44 Christian Ruppert
2022-04-06 13:32 Christian Ruppert
2022-04-06 13:32 Christian Ruppert
2022-04-06 13:22 Christian Ruppert
2022-03-26  0:01 Sam James
2022-03-26  0:01 Sam James
2022-03-14 17:12 Christian Ruppert
2022-03-14 16:58 Christian Ruppert
2022-03-10 11:45 Jakov Smolić
2022-03-10 11:45 Jakov Smolić
2022-03-10 11:45 Jakov Smolić
2022-03-10 11:45 Jakov Smolić
2022-03-07 19:09 Jakov Smolić
2022-03-07 19:09 Jakov Smolić
2022-03-07 19:09 Jakov Smolić
2022-03-07 19:09 Jakov Smolić
2022-03-05  8:54 Christian Ruppert
2022-02-28 11:22 Christian Ruppert
2022-02-20 10:19 Christian Ruppert
2022-02-16 21:12 Christian Ruppert
2022-01-26  9:58 Christian Ruppert
2022-01-26  9:57 Christian Ruppert
2022-01-12  8:16 Christian Ruppert
2022-01-10 14:00 Christian Ruppert
2022-01-10  8:34 Christian Ruppert
2021-12-24  8:06 Christian Ruppert
2021-12-07  7:57 Christian Ruppert
2021-12-07  7:57 Christian Ruppert
2021-11-24 11:13 Christian Ruppert
2021-11-24 11:13 Christian Ruppert
2021-11-24 11:13 Christian Ruppert
2021-11-20 10:24 Arthur Zamarin
2021-11-20 10:24 Arthur Zamarin
2021-11-20 10:24 Arthur Zamarin
2021-11-11 14:58 Christian Ruppert
2021-11-06  8:23 Jakov Smolić
2021-11-06  8:23 Jakov Smolić
2021-11-06  8:23 Jakov Smolić
2021-10-08 14:23 Christian Ruppert
2021-10-02 23:48 Sam James
2021-10-02 23:48 Sam James
2021-10-02 23:48 Sam James
2021-10-02 23:17 Sam James
2021-10-02 23:17 Sam James
2021-10-02 23:17 Sam James
2021-09-07 16:38 Christian Ruppert
2021-08-26 14:55 Sam James
2021-08-26 14:55 Sam James
2021-08-23 22:16 Agostino Sarubbo
2021-08-23 10:46 Agostino Sarubbo
2021-08-23 10:44 Agostino Sarubbo
2021-08-17 17:25 Christian Ruppert
2021-07-21 13:27 Thomas Deutschmann
2021-07-20 19:44 Christian Ruppert
2021-07-20 16:59 Christian Ruppert
2021-07-13 11:21 Marek Szuba
2021-07-10  8:21 Christian Ruppert
2021-06-25 13:39 Christian Ruppert
2021-06-03 19:15 Sam James
2021-05-19  7:41 Christian Ruppert
2021-05-18 11:17 Christian Ruppert
2021-05-18 11:12 Christian Ruppert
2021-05-03  8:06 Christian Ruppert
2021-05-01 14:52 Mikle Kolyada
2021-04-12 14:28 Christian Ruppert
2021-04-12 10:29 Christian Ruppert
2021-04-06  7:18 Christian Ruppert
2021-04-06  7:18 Christian Ruppert
2021-04-03 15:44 Sam James
2021-03-31 15:32 Christian Ruppert
2021-03-30 20:33 Christian Ruppert
2021-03-25 16:15 Christian Ruppert
2021-03-19 11:51 Christian Ruppert
2021-03-18 14:55 Christian Ruppert
2021-03-18 13:37 Christian Ruppert
2021-03-16 15:11 Christian Ruppert
2021-03-03 15:57 Christian Ruppert
2021-03-03 15:22 Christian Ruppert
2021-02-08  8:36 Christian Ruppert
2021-01-14  8:40 Christian Ruppert
2021-01-11  8:36 Christian Ruppert
2020-12-17 13:23 Sam James
2020-12-13  9:17 Sam James
2020-12-10 19:52 Thomas Deutschmann
2020-12-10 19:52 Thomas Deutschmann
2020-12-01 10:31 Christian Ruppert
2020-11-30  8:50 Christian Ruppert
2020-11-29  8:20 Agostino Sarubbo
2020-11-27 16:12 Agostino Sarubbo
2020-11-16  8:10 Christian Ruppert
2020-11-09 11:32 Christian Ruppert
2020-11-06 12:16 Christian Ruppert
2020-11-06 10:56 Christian Ruppert
2020-11-06  9:17 Christian Ruppert
2020-10-05  9:16 Christian Ruppert
2020-09-22 16:20 罗百科
2020-07-23  8:32 Christian Ruppert
2020-07-22  9:40 Christian Ruppert
2020-07-08  9:09 Christian Ruppert
2020-06-09  9:45 Christian Ruppert
2020-06-02  7:56 Christian Ruppert
2020-06-02  7:56 Christian Ruppert
2020-05-23 19:19 Matt Turner
2020-05-23 19:19 Matt Turner
2020-05-23 19:19 Matt Turner
2020-04-24 23:35 Thomas Deutschmann
2020-04-24  9:19 Christian Ruppert
2020-04-24  9:17 Christian Ruppert
2020-04-24  9:17 Christian Ruppert
2020-04-14 12:32 Agostino Sarubbo
2020-04-08  9:48 Agostino Sarubbo
2020-04-07 10:32 Agostino Sarubbo
2020-04-02 13:10 Christian Ruppert
2020-03-30 13:41 Agostino Sarubbo
2020-03-30 13:36 Agostino Sarubbo
2020-03-30 13:14 Agostino Sarubbo
2020-03-09  9:57 Christian Ruppert
2020-02-17 11:16 Christian Ruppert
2020-02-14 15:00 Christian Ruppert
2020-01-07 10:23 Christian Ruppert
2019-11-27  9:51 Christian Ruppert
2019-11-27  9:51 Christian Ruppert
2019-11-25 18:32 Christian Ruppert
2019-11-25 18:32 Christian Ruppert
2019-10-29  8:11 Christian Ruppert
2019-10-29  8:06 Christian Ruppert
2019-10-07  7:16 Christian Ruppert
2019-09-26 13:24 Christian Ruppert
2019-09-10 14:22 Christian Ruppert
2019-08-11 11:20 David Seifert
2019-08-08 20:35 Christian Ruppert
2019-07-23 17:14 Christian Ruppert
2019-07-18  8:15 Christian Ruppert
2019-06-27  7:30 Christian Ruppert
2019-06-24 13:03 Christian Ruppert
2019-06-24  7:30 Christian Ruppert
2019-06-18  7:26 Christian Ruppert
2019-04-26  8:57 Christian Ruppert
2019-04-24  9:58 Christian Ruppert
2019-04-24  9:48 Christian Ruppert
2019-04-15  7:26 Christian Ruppert
2019-04-15  7:26 Christian Ruppert
2019-02-12 11:44 Christian Ruppert
2019-02-07  9:14 Christian Ruppert
2019-01-29  8:47 Christian Ruppert
2019-01-17  8:31 Christian Ruppert
2019-01-08 19:48 Christian Ruppert
2019-01-04 14:11 Christian Ruppert
2018-12-20 10:16 Christian Ruppert
2018-12-20 10:16 Christian Ruppert
2018-10-03 20:56 Mikle Kolyada
2018-08-22  5:00 Markus Meier
2018-08-07  8:50 Agostino Sarubbo
2018-08-06 22:20 Thomas Deutschmann
2018-07-31  7:42 Christian Ruppert
2018-07-20 22:22 Mikle Kolyada
2018-07-16 11:14 Christian Ruppert
2018-07-15 14:39 Mikle Kolyada
2018-06-05  7:19 Christian Ruppert
2018-04-19 16:24 Christian Ruppert
2018-04-16  8:54 Christian Ruppert
2018-03-19  9:27 Sergei Trofimovich
2018-02-13  9:17 Christian Ruppert
2018-02-13  9:17 Christian Ruppert
2018-02-13  9:17 Christian Ruppert
2018-02-12 22:10 Thomas Deutschmann
2018-01-08  9:02 Christian Ruppert
2018-01-08  9:02 Christian Ruppert
2017-11-26 23:23 David Seifert
2017-08-22 19:21 Robin H. Johnson
2017-07-10  9:11 Christian Ruppert
2017-07-10  9:11 Christian Ruppert
2017-06-19 11:48 Christian Ruppert
2017-05-09  9:48 Christian Ruppert
2017-03-14 23:29 Michael Weber
2017-02-28  9:24 Christian Ruppert
2017-02-28  9:24 Christian Ruppert
2017-01-31  9:02 Robin H. Johnson
2017-01-22 21:01 Robin H. Johnson
2016-12-25 21:21 Robin H. Johnson
2016-12-15 22:07 Robin H. Johnson
2016-12-05 15:56 Robin H. Johnson
2016-12-05 15:56 Robin H. Johnson
2016-12-05 15:56 Robin H. Johnson
2016-12-05 15:56 Robin H. Johnson
2016-09-28 19:54 Christian Ruppert
2016-09-28 19:54 Christian Ruppert
2016-09-28 19:54 Christian Ruppert
2016-09-28 19:54 Christian Ruppert
2016-09-28 19:54 Christian Ruppert
2016-09-28 19:54 Christian Ruppert
2016-08-18 20:50 Christian Ruppert
2016-08-10  7:13 Anthony G. Basile
2016-07-20 19:14 Christian Ruppert
2016-07-04 18:04 Christian Ruppert
2016-05-25 18:12 Christian Ruppert
2016-05-25 18:12 Christian Ruppert
2016-03-16 20:04 Christian Ruppert
2016-03-16 20:04 Christian Ruppert
2016-02-24 20:59 Patrice Clement
2016-01-06 11:46 Christian Ruppert
2016-01-06 11:46 Christian Ruppert
2015-11-09 20:36 Christian Ruppert
2015-10-25 22:06 Christian Ruppert
2015-10-16 20:11 Christian Ruppert
2015-08-09 17:44 Mikle Kolyada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1705738121.37bd728a1a437e1899c63aa3867fd250a4e130de.idl0r@gentoo \
    --to=idl0r@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox