|
| 1 | +# Copyright 1999-2024 Gentoo Authors |
| 2 | +# Distributed under the terms of the GNU General Public License v2 |
| 3 | + |
| 4 | +EAPI=8 |
| 5 | + |
| 6 | +DISTUTILS_USE_PEP517=setuptools |
| 7 | +PYTHON_COMPAT=( python3_{11..12} ) |
| 8 | + |
| 9 | +inherit distutils-r1 |
| 10 | + |
| 11 | +MY_P=sentry-python-${PV} |
| 12 | +DESCRIPTION="Python client for Sentry" |
| 13 | +HOMEPAGE=" |
| 14 | + https://sentry.io/ |
| 15 | + https://github.com/getsentry/sentry-python/ |
| 16 | + https://pypi.org/project/sentry-sdk/ |
| 17 | +" |
| 18 | +SRC_URI=" |
| 19 | + https://github.com/getsentry/sentry-python/archive/${PV}.tar.gz |
| 20 | + -> ${MY_P}.gh.tar.gz |
| 21 | +" |
| 22 | +S=${WORKDIR}/${MY_P} |
| 23 | + |
| 24 | +LICENSE="PSF-2" |
| 25 | +SLOT="0" |
| 26 | +KEYWORDS="amd64 arm arm64 x86" |
| 27 | + |
| 28 | +RDEPEND=" |
| 29 | + dev-python/urllib3[${PYTHON_USEDEP}] |
| 30 | + dev-python/certifi[${PYTHON_USEDEP}] |
| 31 | +" |
| 32 | +BDEPEND=" |
| 33 | + test? ( |
| 34 | + dev-python/asttokens[${PYTHON_USEDEP}] |
| 35 | + dev-python/django[${PYTHON_USEDEP}] |
| 36 | + dev-python/executing[${PYTHON_USEDEP}] |
| 37 | + dev-python/fakeredis[${PYTHON_USEDEP}] |
| 38 | + dev-python/flask-login[${PYTHON_USEDEP}] |
| 39 | + dev-python/jsonschema[${PYTHON_USEDEP}] |
| 40 | + dev-python/pyrsistent[${PYTHON_USEDEP}] |
| 41 | + <dev-python/pytest-8[${PYTHON_USEDEP}] |
| 42 | + dev-python/pytest-aiohttp[${PYTHON_USEDEP}] |
| 43 | + dev-python/pytest-django[${PYTHON_USEDEP}] |
| 44 | + dev-python/pytest-forked[${PYTHON_USEDEP}] |
| 45 | + dev-python/pytest-localserver[${PYTHON_USEDEP}] |
| 46 | + dev-python/python-socks[${PYTHON_USEDEP}] |
| 47 | + dev-python/responses[${PYTHON_USEDEP}] |
| 48 | + dev-python/werkzeug[${PYTHON_USEDEP}] |
| 49 | + dev-python/zope-event[${PYTHON_USEDEP}] |
| 50 | + ) |
| 51 | +" |
| 52 | + |
| 53 | +distutils_enable_tests pytest |
| 54 | + |
| 55 | +PATCHES=( |
| 56 | + "${FILESDIR}/sentry-sdk-1.21.0-ignore-warnings.patch" |
| 57 | +) |
| 58 | + |
| 59 | +python_test() { |
| 60 | + local EPYTEST_IGNORE=( |
| 61 | + # tests require Internet access |
| 62 | + tests/integrations/httpx/test_httpx.py |
| 63 | + tests/integrations/requests/test_requests.py |
| 64 | + tests/integrations/stdlib/test_httplib.py |
| 65 | + tests/integrations/flask/test_flask.py |
| 66 | + tests/integrations/django/test_basic.py |
| 67 | + tests/integrations/socket/test_socket.py |
| 68 | + # wtf is it supposed to do?! |
| 69 | + tests/integrations/gcp/test_gcp.py |
| 70 | + # broken by rq-1.10.1 (optional dep) |
| 71 | + tests/integrations/rq/test_rq.py |
| 72 | + # fastapi is not packaged |
| 73 | + tests/integrations/asgi/test_fastapi.py |
| 74 | + # TODO |
| 75 | + tests/integrations/bottle |
| 76 | + # TODO: causes breakage in other tests |
| 77 | + tests/integrations/starlette |
| 78 | + # TODO |
| 79 | + tests/integrations/tornado |
| 80 | + # requires mockupdb |
| 81 | + tests/integrations/pymongo |
| 82 | + # requires AWS access |
| 83 | + tests/integrations/aws_lambda |
| 84 | + # requires quart_auth |
| 85 | + tests/integrations/quart |
| 86 | + ) |
| 87 | + |
| 88 | + local EPYTEST_DESELECT=( |
| 89 | + # hangs |
| 90 | + 'tests/test_transport.py::test_transport_works' |
| 91 | + # TODO |
| 92 | + 'tests/test_basics.py::test_auto_enabling_integrations_catches_import_error' |
| 93 | + tests/test_client.py::test_databag_depth_stripping |
| 94 | + tests/test_client.py::test_databag_string_stripping |
| 95 | + tests/test_client.py::test_databag_breadth_stripping |
| 96 | + tests/integrations/asgi/test_asgi.py::test_auto_session_tracking_with_aggregates |
| 97 | + tests/integrations/asgi/test_asgi.py::test_websocket |
| 98 | + tests/integrations/aiohttp/test_aiohttp.py::test_transaction_style |
| 99 | + tests/integrations/aiohttp/test_aiohttp.py::test_traces_sampler_gets_request_object_in_sampling_context |
| 100 | + tests/integrations/django/test_data_scrubbing.py::test_scrub_django_custom_session_cookies_filtered |
| 101 | + # incompatible version? |
| 102 | + tests/integrations/falcon/test_falcon.py |
| 103 | + tests/integrations/sqlalchemy/test_sqlalchemy.py::test_large_event_not_truncated |
| 104 | + tests/integrations/django/test_data_scrubbing.py::test_scrub_django_session_cookies_{filtered,removed} |
| 105 | + # test_circular_references: apparently fragile |
| 106 | + 'tests/integrations/threading/test_threading.py::test_circular_references' |
| 107 | + # test for new feature, fails with IndexError |
| 108 | + tests/integrations/wsgi/test_wsgi.py::test_session_mode_defaults_to_request_mode_in_wsgi_handler |
| 109 | + # TODO |
| 110 | + tests/integrations/wsgi/test_wsgi.py::test_auto_session_tracking_with_aggregates |
| 111 | + tests/integrations/wsgi/test_wsgi.py::test_profile_sent_when_profiling_enabled |
| 112 | + tests/test_profiler.py::test_sample_buffer |
| 113 | + tests/test_profiler.py::test_thread_scheduler_takes_first_samples |
| 114 | + tests/test_profiler.py::test_thread_scheduler_takes_more_samples |
| 115 | + tests/test_profiler.py::test_thread_scheduler_single_background_thread |
| 116 | + # broken with py3.11, *shrug* |
| 117 | + tests/test_profiler.py::test_extract_stack_with_max_depth |
| 118 | + # TODO |
| 119 | + tests/integrations/sqlalchemy/test_sqlalchemy.py::test_long_sql_query_preserved |
| 120 | + tests/integrations/sqlalchemy/test_sqlalchemy.py::test_engine_name_not_string |
| 121 | + tests/test_scrubber.py::test_breadcrumb_extra_scrubbing |
| 122 | + tests/test_scrubber.py::test_span_data_scrubbing |
| 123 | + # this is not even funny |
| 124 | + tests/test_utils.py::test_installed_modules |
| 125 | + # flaky hypothesis stuff |
| 126 | + tests/test_serializer.py::test_bytes_serialization_repr_many |
| 127 | + # TODO |
| 128 | + tests/integrations/aiohttp/test_aiohttp.py::test_basic |
| 129 | + tests/tracing/test_decorator_py3.py::test_trace_decorator_{,a}sync_py3 |
| 130 | + # crashes Python |
| 131 | + tests/integrations/grpc/test_grpc_aio.py |
| 132 | + # hangs |
| 133 | + tests/integrations/threading/test_threading.py::test_propagates_threadpool_hub |
| 134 | + # TODO |
| 135 | + tests/test_utils.py::test_default_release |
| 136 | + tests/integrations/sqlalchemy/test_sqlalchemy.py::test_orm_queries |
| 137 | + tests/integrations/sqlalchemy/test_sqlalchemy.py::test_transactions |
| 138 | + tests/integrations/sqlalchemy/test_sqlalchemy.py::test_query_source |
| 139 | + tests/integrations/stdlib/test_subprocess.py::test_subprocess_basic |
| 140 | + tests/integrations/threading/test_threading.py |
| 141 | + tests/integrations/wsgi/test_wsgi.py |
| 142 | + 'tests/utils/test_contextvars.py::test_leaks[threads]' |
| 143 | + # skipped without gevent but breaks stuff via broken teardown? |
| 144 | + tests/test_metrics.py::test_no_metrics_with_gevent |
| 145 | + # TODO |
| 146 | + tests/utils/test_contextvars.py::test_leaks |
| 147 | + ) |
| 148 | + |
| 149 | + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 |
| 150 | + epytest -p asyncio -p aiohttp -p pytest_forked |
| 151 | +} |
0 commit comments