git: 3acd121ce37c - main - devel/py-tavern: new port

From: Michael Osipov <michaelo_at_FreeBSD.org>
Date: Mon, 21 Sep 2026 05:32:51 UTC
The branch main has been updated by michaelo:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3acd121ce37cf6835528f7304a3ebc52e57f22dc

commit 3acd121ce37cf6835528f7304a3ebc52e57f22dc
Author:     Pete Diamond <lazeraman@gmail.com>
AuthorDate: 2026-09-20 02:14:52 +0000
Commit:     Michael Osipov <michaelo@FreeBSD.org>
CommitDate: 2026-09-21 05:32:33 +0000

    devel/py-tavern: new port
    
    Tavern is a pytest plugin and command-line tool for automated testing of
    RESTful APIs.  Tests are written in YAML, describing the requests to send
    and the responses to expect, so API behaviour can be verified without
    writing Python code.
    
    It also supports MQTT, GraphQL and gRPC testing through optional extras.
    
    Co-authored-by: Michael Osipov <michaelo@FreeBSD.org>
    PR:             298695
---
 devel/Makefile            |  1 +
 devel/py-tavern/Makefile  | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 devel/py-tavern/distinfo  |  3 +++
 devel/py-tavern/pkg-descr |  6 ++++++
 4 files changed, 57 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 349290a3f122..709bb825643f 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -6316,6 +6316,7 @@
     SUBDIR += py-tasklib
     SUBDIR += py-tatsu
     SUBDIR += py-tatsu-lts
+    SUBDIR += py-tavern
     SUBDIR += py-tblib
     SUBDIR += py-tdworkflow
     SUBDIR += py-telepath
diff --git a/devel/py-tavern/Makefile b/devel/py-tavern/Makefile
new file mode 100644
index 000000000000..1f3f7870331e
--- /dev/null
+++ b/devel/py-tavern/Makefile
@@ -0,0 +1,47 @@
+PORTNAME=	tavern
+DISTVERSION=	3.6.3
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	lazeraman@gmail.com
+COMMENT=	Command-line tool and pytest plugin for testing RESTful APIs
+WWW=		https://github.com/taverntesting/tavern
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}flit-core>=3.2:devel/py-flit-core@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}jmespath>=1:devel/py-jmespath@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}jsonschema>=4:devel/py-jsonschema@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pyjwt>=2.5.0:www/py-pyjwt@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pykwalify>=1.8.0:textproc/py-pykwalify@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest>=8:devel/py-pytest@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}python-box>=6:devel/py-python-box@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pyyaml>=6.0.1:devel/py-pyyaml@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests>=2.22.0:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}simpleeval>=1.0.3:devel/py-simpleeval@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}stevedore>=4:devel/py-stevedore@${PY_FLAVOR}
+
+USES=		python:3.11+
+USE_PYTHON=	autoplist concurrent pep517
+
+NO_ARCH=	yes
+
+OPTIONS_DEFINE=	GRAPHQL GRPC MQTT
+GRAPHQL_DESC=	Enables GraphQL support
+GRPC_DESC=	Enables gRPC support
+MQTT_DESC=	Enables MQTT support
+
+GRAPHQL_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}aiohttp>=0:www/py-aiohttp@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}gql>=4.0.0:devel/py-gql@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}websockets>=0:devel/py-websockets@${PY_FLAVOR}
+GRPC_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}google-api-python-client>=0:www/py-google-api-python-client@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}grpcio-reflection>=0:devel/py-grpcio-reflection@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}grpcio-status>=0:devel/py-grpcio-status@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}grpcio>=0:devel/py-grpcio@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}proto-plus>=0:devel/py-proto-plus@${PY_FLAVOR} \
+			${PYTHON_PKGNAMEPREFIX}protobuf>=5:devel/py-protobuf@${PY_FLAVOR}
+MQTT_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}paho-mqtt>=1.3.1:net/py-paho-mqtt@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/devel/py-tavern/distinfo b/devel/py-tavern/distinfo
new file mode 100644
index 000000000000..0b587eeb2379
--- /dev/null
+++ b/devel/py-tavern/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1789705831
+SHA256 (tavern-3.6.3.tar.gz) = 8c110670b8b8da40853ab4cc8fa4b959ea39d6b353a1afd1d0d25a72c334f78a
+SIZE (tavern-3.6.3.tar.gz) = 104241
diff --git a/devel/py-tavern/pkg-descr b/devel/py-tavern/pkg-descr
new file mode 100644
index 000000000000..b95fd1e2ff89
--- /dev/null
+++ b/devel/py-tavern/pkg-descr
@@ -0,0 +1,6 @@
+Tavern is a pytest plugin and command-line tool for automated testing of
+RESTful APIs.  Tests are written in YAML, describing the requests to send
+and the responses to expect, so API behaviour can be verified without
+writing Python code.
+
+It also supports MQTT, GraphQL and gRPC testing through optional extras.