summaryrefslogtreecommitdiff
blob: 4cdc0f653f3ea4c891409bad9a84a93032e972ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11..12} )

inherit distutils-r1

MY_P=sentry-python-${PV}
DESCRIPTION="Python client for Sentry"
HOMEPAGE="
	https://sentry.io/
	https://github.com/getsentry/sentry-python/
	https://pypi.org/project/sentry-sdk/
"
SRC_URI="
	https://github.com/getsentry/sentry-python/archive/${PV}.tar.gz
		-> ${MY_P}.gh.tar.gz
"
S=${WORKDIR}/${MY_P}

LICENSE="PSF-2"
SLOT="0"
KEYWORDS="amd64 arm arm64 ~ppc ~ppc64 ~riscv ~sparc x86"

RDEPEND="
	dev-python/urllib3[${PYTHON_USEDEP}]
	dev-python/certifi[${PYTHON_USEDEP}]
"
BDEPEND="
	test? (
		dev-python/asttokens[${PYTHON_USEDEP}]
		dev-python/django[${PYTHON_USEDEP}]
		dev-python/executing[${PYTHON_USEDEP}]
		dev-python/fakeredis[${PYTHON_USEDEP}]
		dev-python/flask-login[${PYTHON_USEDEP}]
		dev-python/jsonschema[${PYTHON_USEDEP}]
		dev-python/pyrsistent[${PYTHON_USEDEP}]
		<dev-python/pytest-8[${PYTHON_USEDEP}]
		dev-python/pytest-aiohttp[${PYTHON_USEDEP}]
		dev-python/pytest-django[${PYTHON_USEDEP}]
		dev-python/pytest-forked[${PYTHON_USEDEP}]
		dev-python/pytest-localserver[${PYTHON_USEDEP}]
		dev-python/python-socks[${PYTHON_USEDEP}]
		dev-python/responses[${PYTHON_USEDEP}]
		dev-python/werkzeug[${PYTHON_USEDEP}]
		dev-python/zope-event[${PYTHON_USEDEP}]
	)
"

distutils_enable_tests pytest

PATCHES=(
	"${FILESDIR}/sentry-sdk-1.21.0-ignore-warnings.patch"
)

python_test() {
	local EPYTEST_IGNORE=(
		# tests require Internet access
		tests/integrations/httpx/test_httpx.py
		tests/integrations/requests/test_requests.py
		tests/integrations/stdlib/test_httplib.py
		tests/integrations/flask/test_flask.py
		tests/integrations/django/test_basic.py
		tests/integrations/socket/test_socket.py
		# wtf is it supposed to do?!
		tests/integrations/gcp/test_gcp.py
		# broken by rq-1.10.1 (optional dep)
		tests/integrations/rq/test_rq.py
		# fastapi is not packaged
		tests/integrations/asgi/test_fastapi.py
		# TODO
		tests/integrations/bottle
		# TODO: causes breakage in other tests
		tests/integrations/starlette
		# TODO
		tests/integrations/tornado
		# requires mockupdb
		tests/integrations/pymongo
		# requires AWS access
		tests/integrations/aws_lambda
		# requires quart_auth
		tests/integrations/quart
		# TODO: require opentelemetry (with py3.10)
		tests/integrations/opentelemetry
	)

	local EPYTEST_DESELECT=(
		# hangs
		'tests/test_transport.py::test_transport_works'
		# TODO
		'tests/test_basics.py::test_auto_enabling_integrations_catches_import_error'
		tests/test_client.py::test_databag_depth_stripping
		tests/test_client.py::test_databag_string_stripping
		tests/test_client.py::test_databag_breadth_stripping
		tests/integrations/asgi/test_asgi.py::test_auto_session_tracking_with_aggregates
		tests/integrations/asgi/test_asgi.py::test_websocket
		tests/integrations/aiohttp/test_aiohttp.py::test_transaction_style
		tests/integrations/aiohttp/test_aiohttp.py::test_traces_sampler_gets_request_object_in_sampling_context
		tests/integrations/django/test_data_scrubbing.py::test_scrub_django_custom_session_cookies_filtered
		# incompatible version?
		tests/integrations/falcon/test_falcon.py
		tests/integrations/sqlalchemy/test_sqlalchemy.py::test_large_event_not_truncated
		tests/integrations/django/test_data_scrubbing.py::test_scrub_django_session_cookies_{filtered,removed}
		# test_circular_references: apparently fragile
		'tests/integrations/threading/test_threading.py::test_circular_references'
		# test for new feature, fails with IndexError
		tests/integrations/wsgi/test_wsgi.py::test_session_mode_defaults_to_request_mode_in_wsgi_handler
		# TODO
		tests/integrations/wsgi/test_wsgi.py::test_auto_session_tracking_with_aggregates
		tests/integrations/wsgi/test_wsgi.py::test_profile_sent_when_profiling_enabled
		tests/test_profiler.py::test_sample_buffer
		tests/test_profiler.py::test_thread_scheduler_takes_first_samples
		tests/test_profiler.py::test_thread_scheduler_takes_more_samples
		tests/test_profiler.py::test_thread_scheduler_single_background_thread
		# broken with py3.11, *shrug*
		tests/test_profiler.py::test_extract_stack_with_max_depth
		# TODO
		tests/integrations/sqlalchemy/test_sqlalchemy.py::test_long_sql_query_preserved
		tests/integrations/sqlalchemy/test_sqlalchemy.py::test_engine_name_not_string
		tests/test_scrubber.py::test_breadcrumb_extra_scrubbing
		tests/test_scrubber.py::test_span_data_scrubbing
		# this is not even funny
		tests/test_utils.py::test_installed_modules
		# flaky hypothesis stuff
		tests/test_serializer.py::test_bytes_serialization_repr_many
		# TODO
		tests/integrations/aiohttp/test_aiohttp.py::test_basic
		tests/tracing/test_decorator_py3.py::test_trace_decorator_{,a}sync_py3
		# crashes Python
		tests/integrations/grpc/test_grpc_aio.py
		# hangs
		tests/integrations/threading/test_threading.py::test_propagates_threadpool_hub
		# TODO
		tests/test_utils.py::test_default_release
		tests/integrations/sqlalchemy/test_sqlalchemy.py::test_orm_queries
		tests/integrations/sqlalchemy/test_sqlalchemy.py::test_transactions
		tests/integrations/sqlalchemy/test_sqlalchemy.py::test_query_source
		tests/integrations/stdlib/test_subprocess.py::test_subprocess_basic
		tests/integrations/threading/test_threading.py
		tests/integrations/wsgi/test_wsgi.py
		'tests/utils/test_contextvars.py::test_leaks[threads]'
		# skipped without gevent but breaks stuff via broken teardown?
		tests/test_metrics.py::test_no_metrics_with_gevent
		# TODO
		tests/utils/test_contextvars.py::test_leaks
		# broken teardown?
		tests/test_client.py::test_uwsgi_warnings
	)

	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
	epytest -p asyncio -p aiohttp -p pytest_forked
}