summaryrefslogtreecommitdiff
blob: ddb8aa60a9e3cc9e79fd44cc27feb8d582ae568d (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
# Copyright 1999-2023 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-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
	)

	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
	)

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