Source: onionshare Version: 2.2-3 Severity: serious Justification: FTBFS Tags: bookworm sid ftbfs User: lu...@debian.org Usertags: ftbfs-20211023 ftbfs-bookworm
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > dh_auto_clean > I: pybuild base:232: python3.9 setup.py clean > /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution > option: 'include_package_data' > warnings.warn(msg) > running clean > removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build' (and everything under > it) > 'build/bdist.linux-x86_64' does not exist -- can't clean it > 'build/scripts-3.9' does not exist -- can't clean it > rm -rf *.egg-info > make[1]: Leaving directory '/<<PKGBUILDDIR>>' > dh_autoreconf_clean -O--buildsystem=pybuild > dh_clean -O--buildsystem=pybuild > dpkg-source -b . > dpkg-source: info: using source format '3.0 (quilt)' > dpkg-source: info: building onionshare using existing > ./onionshare_2.2.orig.tar.gz > dpkg-source: info: using patch list from debian/patches/series > dpkg-source: info: building onionshare in onionshare_2.2-3.debian.tar.xz > dpkg-source: info: building onionshare in onionshare_2.2-3.dsc > debian/rules binary > dh binary --with python3 --buildsystem=pybuild > dh_update_autotools_config -O--buildsystem=pybuild > dh_autoreconf -O--buildsystem=pybuild > dh_auto_configure -O--buildsystem=pybuild > I: pybuild base:232: python3.9 setup.py config > /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution > option: 'include_package_data' > warnings.warn(msg) > running config > dh_auto_build -O--buildsystem=pybuild > I: pybuild base:232: /usr/bin/python3 setup.py build > /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution > option: 'include_package_data' > warnings.warn(msg) > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > copying onionshare/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > copying onionshare/strings.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > copying onionshare/common.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > copying onionshare/onion.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > copying onionshare/settings.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > copying onionshare/onionshare.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > copying onionshare/web/receive_mode.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > copying onionshare/web/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > copying onionshare/web/send_base_mode.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > copying onionshare/web/website_mode.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > copying onionshare/web/share_mode.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > copying onionshare/web/web.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/web > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/threads.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/widgets.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/update_checker.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/onionshare_gui.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/server_status.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/settings_dialog.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > copying onionshare_gui/tor_connection_dialog.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode > copying onionshare_gui/mode/file_selection.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode > copying onionshare_gui/mode/history.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode > copying onionshare_gui/mode/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/share_mode > copying onionshare_gui/mode/share_mode/threads.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/share_mode > copying onionshare_gui/mode/share_mode/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/share_mode > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/receive_mode > copying onionshare_gui/mode/receive_mode/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/receive_mode > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/website_mode > copying onionshare_gui/mode/website_mode/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/mode/website_mode > running build_scripts > creating build > creating build/scripts-3.9 > copying and adjusting install/scripts/onionshare -> build/scripts-3.9 > copying and adjusting install/scripts/onionshare-gui -> build/scripts-3.9 > changing mode of build/scripts-3.9/onionshare from 644 to 755 > changing mode of build/scripts-3.9/onionshare-gui from 644 to 755 > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; > python3.9 -m pytest tests > ============================= test session starts > ============================== > platform linux -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-0.13.0 > rootdir: /<<PKGBUILDDIR>> > collected 290 items > > tests/local_onionshare_401_public_mode_skips_ratelimit_test.py s [ > 0%] > tests/local_onionshare_401_triggers_ratelimit_test.py s [ > 0%] > tests/local_onionshare_quitting_during_share_prompts_warning_test.py s [ > 1%] > tests/local_onionshare_receive_mode_clear_all_button_test.py s [ > 1%] > tests/local_onionshare_receive_mode_timer_test.py s [ > 1%] > tests/local_onionshare_receive_mode_upload_non_writable_dir_test.py s [ > 2%] > tests/local_onionshare_receive_mode_upload_public_mode_non_writable_dir_test.py > s [ 2%] > [ > 2%] > tests/local_onionshare_receive_mode_upload_public_mode_test.py s [ > 2%] > tests/local_onionshare_receive_mode_upload_test.py s [ > 3%] > tests/local_onionshare_settings_dialog_legacy_tor_test.py s [ > 3%] > tests/local_onionshare_settings_dialog_no_tor_test.py s [ > 3%] > tests/local_onionshare_settings_dialog_v3_tor_test.py s [ > 4%] > tests/local_onionshare_share_mode_autostart_and_autostop_timer_mismatch_test.py > s [ 4%] > [ > 4%] > tests/local_onionshare_share_mode_autostart_timer_test.py s [ > 4%] > tests/local_onionshare_share_mode_autostart_timer_too_short_test.py s [ > 5%] > tests/local_onionshare_share_mode_cancel_share_test.py s [ > 5%] > tests/local_onionshare_share_mode_clear_all_button_test.py s [ > 5%] > tests/local_onionshare_share_mode_download_public_mode_test.py s [ > 6%] > tests/local_onionshare_share_mode_download_stay_open_test.py s [ > 6%] > tests/local_onionshare_share_mode_download_test.py s [ > 6%] > tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py s [ > 7%] > [ > 7%] > tests/local_onionshare_share_mode_individual_file_view_test.py s [ > 7%] > tests/local_onionshare_share_mode_large_download_test.py s [ > 7%] > tests/local_onionshare_share_mode_password_persistent_test.py s [ > 8%] > tests/local_onionshare_share_mode_timer_test.py s [ > 8%] > tests/local_onionshare_share_mode_timer_too_short_test.py s [ > 8%] > tests/local_onionshare_share_mode_unreadable_file_test.py s [ > 9%] > tests/local_onionshare_website_mode_csp_enabled_test.py s [ > 9%] > tests/local_onionshare_website_mode_test.py s [ > 10%] > tests/onionshare_790_cancel_on_second_share_test.py s [ > 10%] > tests/onionshare_receive_mode_upload_public_mode_test.py s [ > 10%] > tests/onionshare_receive_mode_upload_test.py s [ > 11%] > tests/onionshare_share_mode_cancel_share_test.py s [ > 11%] > tests/onionshare_share_mode_download_public_mode_test.py s [ > 11%] > tests/onionshare_share_mode_download_stay_open_test.py s [ > 12%] > tests/onionshare_share_mode_download_test.py s [ > 12%] > tests/onionshare_share_mode_persistent_test.py s [ > 12%] > tests/onionshare_share_mode_stealth_test.py s [ > 13%] > tests/onionshare_share_mode_timer_test.py s [ > 13%] > tests/onionshare_share_mode_tor_connection_killed_test.py s [ > 13%] > tests/onionshare_share_mode_v2_onion_test.py s [ > 14%] > tests/test_onionshare.py ....... [ > 16%] > tests/test_onionshare_common.py ........................................ [ > 30%] > ....................................................................... [ > 54%] > tests/test_onionshare_settings.py ............ [ > 58%] > tests/test_onionshare_strings.py .... [ > 60%] > tests/test_onionshare_web.py FFFFFF..................................... [ > 75%] > ........................................................................ > [100%] > > =================================== FAILURES > =================================== > ___________________________ TestWeb.test_share_mode > ____________________________ > > self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb5108910> > common_obj = <onionshare.common.Common object at 0x7f8bb5108c70> > > def test_share_mode(self, common_obj): > > web = web_obj(common_obj, "share", 3) > > tests/test_onionshare_web.py:73: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_onionshare_web.py:48: in web_obj > web = Web(common_obj, False, mode) > onionshare/web/web.py:77: in __init__ > self.generate_static_url_path() > onionshare/web/web.py:166: in generate_static_url_path > self.app.add_url_rule( > /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func > return f(self, *args, **kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Flask 'onionshare.web.web'> > rule = <Rule '/static_5pxhxfxveqsc6jbqkaeguaoi6q/<filename>' (GET, OPTIONS, > HEAD) -> static> > endpoint = 'static' > view_func = <bound method Scaffold.send_static_file of <Flask > 'onionshare.web.web'>> > provide_automatic_options = True, options = {'endpoint': 'static'} > methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'} > old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4fdb430> > > @setupmethod > def add_url_rule( > self, > rule: str, > endpoint: t.Optional[str] = None, > view_func: t.Optional[t.Callable] = None, > provide_automatic_options: t.Optional[bool] = None, > **options: t.Any, > ) -> None: > if endpoint is None: > endpoint = _endpoint_from_view_func(view_func) # type: ignore > options["endpoint"] = endpoint > methods = options.pop("methods", None) > > # if the methods are not given and the view_func object knows its > # methods we can use that instead. If neither exists, we go with > # a tuple of only ``GET`` as default. > if methods is None: > methods = getattr(view_func, "methods", None) or ("GET",) > if isinstance(methods, str): > raise TypeError( > "Allowed methods must be a list of strings, for" > ' example: @app.route(..., methods=["POST"])' > ) > methods = {item.upper() for item in methods} > > # Methods that should always be added > required_methods = set(getattr(view_func, "required_methods", ())) > > # starting with Flask 0.8 the view_func object can disable and > # force-enable the automatic options handling. > if provide_automatic_options is None: > provide_automatic_options = getattr( > view_func, "provide_automatic_options", None > ) > > if provide_automatic_options is None: > if "OPTIONS" not in methods: > provide_automatic_options = True > required_methods.add("OPTIONS") > else: > provide_automatic_options = False > > # Add the required methods now. > methods |= required_methods > > rule = self.url_rule_class(rule, methods=methods, **options) > rule.provide_automatic_options = provide_automatic_options # type: > ignore > > self.url_map.add(rule) > if view_func is not None: > old_func = self.view_functions.get(endpoint) > if old_func is not None and old_func != view_func: > > raise AssertionError( > "View function mapping is overwriting an existing" > f" endpoint function: {endpoint}" > ) > E AssertionError: View function mapping is overwriting an > existing endpoint function: static > > /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError > ____________ TestWeb.test_share_mode_close_after_first_download_on > _____________ > > self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f13d00> > common_obj = <onionshare.common.Common object at 0x7f8bb4f13f10> > temp_file_1024 = '/tmp/tmpqtr3117l' > > def test_share_mode_close_after_first_download_on(self, common_obj, > temp_file_1024): > > web = web_obj(common_obj, "share", 3) > > tests/test_onionshare_web.py:98: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_onionshare_web.py:48: in web_obj > web = Web(common_obj, False, mode) > onionshare/web/web.py:77: in __init__ > self.generate_static_url_path() > onionshare/web/web.py:166: in generate_static_url_path > self.app.add_url_rule( > /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func > return f(self, *args, **kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Flask 'onionshare.web.web'> > rule = <Rule '/static_azcqtqve565h7cv7rwm5smid6q/<filename>' (GET, OPTIONS, > HEAD) -> static> > endpoint = 'static' > view_func = <bound method Scaffold.send_static_file of <Flask > 'onionshare.web.web'>> > provide_automatic_options = True, options = {'endpoint': 'static'} > methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'} > old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4f9df70> > > @setupmethod > def add_url_rule( > self, > rule: str, > endpoint: t.Optional[str] = None, > view_func: t.Optional[t.Callable] = None, > provide_automatic_options: t.Optional[bool] = None, > **options: t.Any, > ) -> None: > if endpoint is None: > endpoint = _endpoint_from_view_func(view_func) # type: ignore > options["endpoint"] = endpoint > methods = options.pop("methods", None) > > # if the methods are not given and the view_func object knows its > # methods we can use that instead. If neither exists, we go with > # a tuple of only ``GET`` as default. > if methods is None: > methods = getattr(view_func, "methods", None) or ("GET",) > if isinstance(methods, str): > raise TypeError( > "Allowed methods must be a list of strings, for" > ' example: @app.route(..., methods=["POST"])' > ) > methods = {item.upper() for item in methods} > > # Methods that should always be added > required_methods = set(getattr(view_func, "required_methods", ())) > > # starting with Flask 0.8 the view_func object can disable and > # force-enable the automatic options handling. > if provide_automatic_options is None: > provide_automatic_options = getattr( > view_func, "provide_automatic_options", None > ) > > if provide_automatic_options is None: > if "OPTIONS" not in methods: > provide_automatic_options = True > required_methods.add("OPTIONS") > else: > provide_automatic_options = False > > # Add the required methods now. > methods |= required_methods > > rule = self.url_rule_class(rule, methods=methods, **options) > rule.provide_automatic_options = provide_automatic_options # type: > ignore > > self.url_map.add(rule) > if view_func is not None: > old_func = self.view_functions.get(endpoint) > if old_func is not None and old_func != view_func: > > raise AssertionError( > "View function mapping is overwriting an existing" > f" endpoint function: {endpoint}" > ) > E AssertionError: View function mapping is overwriting an > existing endpoint function: static > > /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError > ____________ TestWeb.test_share_mode_close_after_first_download_off > ____________ > > self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f7a550> > common_obj = <onionshare.common.Common object at 0x7f8bb4f7a6d0> > temp_file_1024 = '/tmp/tmpmcvgg74y' > > def test_share_mode_close_after_first_download_off( > self, common_obj, temp_file_1024 > ): > > web = web_obj(common_obj, "share", 3) > > tests/test_onionshare_web.py:115: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_onionshare_web.py:48: in web_obj > web = Web(common_obj, False, mode) > onionshare/web/web.py:77: in __init__ > self.generate_static_url_path() > onionshare/web/web.py:166: in generate_static_url_path > self.app.add_url_rule( > /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func > return f(self, *args, **kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Flask 'onionshare.web.web'> > rule = <Rule '/static_4st7qaktxwgsvmuc5i5hqzxkbi/<filename>' (GET, OPTIONS, > HEAD) -> static> > endpoint = 'static' > view_func = <bound method Scaffold.send_static_file of <Flask > 'onionshare.web.web'>> > provide_automatic_options = True, options = {'endpoint': 'static'} > methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'} > old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb50a8790> > > @setupmethod > def add_url_rule( > self, > rule: str, > endpoint: t.Optional[str] = None, > view_func: t.Optional[t.Callable] = None, > provide_automatic_options: t.Optional[bool] = None, > **options: t.Any, > ) -> None: > if endpoint is None: > endpoint = _endpoint_from_view_func(view_func) # type: ignore > options["endpoint"] = endpoint > methods = options.pop("methods", None) > > # if the methods are not given and the view_func object knows its > # methods we can use that instead. If neither exists, we go with > # a tuple of only ``GET`` as default. > if methods is None: > methods = getattr(view_func, "methods", None) or ("GET",) > if isinstance(methods, str): > raise TypeError( > "Allowed methods must be a list of strings, for" > ' example: @app.route(..., methods=["POST"])' > ) > methods = {item.upper() for item in methods} > > # Methods that should always be added > required_methods = set(getattr(view_func, "required_methods", ())) > > # starting with Flask 0.8 the view_func object can disable and > # force-enable the automatic options handling. > if provide_automatic_options is None: > provide_automatic_options = getattr( > view_func, "provide_automatic_options", None > ) > > if provide_automatic_options is None: > if "OPTIONS" not in methods: > provide_automatic_options = True > required_methods.add("OPTIONS") > else: > provide_automatic_options = False > > # Add the required methods now. > methods |= required_methods > > rule = self.url_rule_class(rule, methods=methods, **options) > rule.provide_automatic_options = provide_automatic_options # type: > ignore > > self.url_map.add(rule) > if view_func is not None: > old_func = self.view_functions.get(endpoint) > if old_func is not None and old_func != view_func: > > raise AssertionError( > "View function mapping is overwriting an existing" > f" endpoint function: {endpoint}" > ) > E AssertionError: View function mapping is overwriting an > existing endpoint function: static > > /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError > __________________________ TestWeb.test_receive_mode > ___________________________ > > self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f76580> > common_obj = <onionshare.common.Common object at 0x7f8bb4f76460> > > def test_receive_mode(self, common_obj): > > web = web_obj(common_obj, "receive") > > tests/test_onionshare_web.py:129: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_onionshare_web.py:48: in web_obj > web = Web(common_obj, False, mode) > onionshare/web/web.py:77: in __init__ > self.generate_static_url_path() > onionshare/web/web.py:166: in generate_static_url_path > self.app.add_url_rule( > /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func > return f(self, *args, **kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Flask 'onionshare.web.web'> > rule = <Rule '/static_7fxs6sxieg44my6jogsjngzjoi/<filename>' (GET, OPTIONS, > HEAD) -> static> > endpoint = 'static' > view_func = <bound method Scaffold.send_static_file of <Flask > 'onionshare.web.web'>> > provide_automatic_options = True, options = {'endpoint': 'static'} > methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'} > old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4fdb790> > > @setupmethod > def add_url_rule( > self, > rule: str, > endpoint: t.Optional[str] = None, > view_func: t.Optional[t.Callable] = None, > provide_automatic_options: t.Optional[bool] = None, > **options: t.Any, > ) -> None: > if endpoint is None: > endpoint = _endpoint_from_view_func(view_func) # type: ignore > options["endpoint"] = endpoint > methods = options.pop("methods", None) > > # if the methods are not given and the view_func object knows its > # methods we can use that instead. If neither exists, we go with > # a tuple of only ``GET`` as default. > if methods is None: > methods = getattr(view_func, "methods", None) or ("GET",) > if isinstance(methods, str): > raise TypeError( > "Allowed methods must be a list of strings, for" > ' example: @app.route(..., methods=["POST"])' > ) > methods = {item.upper() for item in methods} > > # Methods that should always be added > required_methods = set(getattr(view_func, "required_methods", ())) > > # starting with Flask 0.8 the view_func object can disable and > # force-enable the automatic options handling. > if provide_automatic_options is None: > provide_automatic_options = getattr( > view_func, "provide_automatic_options", None > ) > > if provide_automatic_options is None: > if "OPTIONS" not in methods: > provide_automatic_options = True > required_methods.add("OPTIONS") > else: > provide_automatic_options = False > > # Add the required methods now. > methods |= required_methods > > rule = self.url_rule_class(rule, methods=methods, **options) > rule.provide_automatic_options = provide_automatic_options # type: > ignore > > self.url_map.add(rule) > if view_func is not None: > old_func = self.view_functions.get(endpoint) > if old_func is not None and old_func != view_func: > > raise AssertionError( > "View function mapping is overwriting an existing" > f" endpoint function: {endpoint}" > ) > E AssertionError: View function mapping is overwriting an > existing endpoint function: static > > /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError > _________________________ TestWeb.test_public_mode_on > __________________________ > > self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4d9c5e0> > common_obj = <onionshare.common.Common object at 0x7f8bb4d9cf10> > > def test_public_mode_on(self, common_obj): > > web = web_obj(common_obj, "receive") > > tests/test_onionshare_web.py:149: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_onionshare_web.py:48: in web_obj > web = Web(common_obj, False, mode) > onionshare/web/web.py:77: in __init__ > self.generate_static_url_path() > onionshare/web/web.py:166: in generate_static_url_path > self.app.add_url_rule( > /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func > return f(self, *args, **kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Flask 'onionshare.web.web'> > rule = <Rule '/static_esozljwz3ijwsxm2kdprh5ty7q/<filename>' (GET, OPTIONS, > HEAD) -> static> > endpoint = 'static' > view_func = <bound method Scaffold.send_static_file of <Flask > 'onionshare.web.web'>> > provide_automatic_options = True, options = {'endpoint': 'static'} > methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'} > old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb4fdba60> > > @setupmethod > def add_url_rule( > self, > rule: str, > endpoint: t.Optional[str] = None, > view_func: t.Optional[t.Callable] = None, > provide_automatic_options: t.Optional[bool] = None, > **options: t.Any, > ) -> None: > if endpoint is None: > endpoint = _endpoint_from_view_func(view_func) # type: ignore > options["endpoint"] = endpoint > methods = options.pop("methods", None) > > # if the methods are not given and the view_func object knows its > # methods we can use that instead. If neither exists, we go with > # a tuple of only ``GET`` as default. > if methods is None: > methods = getattr(view_func, "methods", None) or ("GET",) > if isinstance(methods, str): > raise TypeError( > "Allowed methods must be a list of strings, for" > ' example: @app.route(..., methods=["POST"])' > ) > methods = {item.upper() for item in methods} > > # Methods that should always be added > required_methods = set(getattr(view_func, "required_methods", ())) > > # starting with Flask 0.8 the view_func object can disable and > # force-enable the automatic options handling. > if provide_automatic_options is None: > provide_automatic_options = getattr( > view_func, "provide_automatic_options", None > ) > > if provide_automatic_options is None: > if "OPTIONS" not in methods: > provide_automatic_options = True > required_methods.add("OPTIONS") > else: > provide_automatic_options = False > > # Add the required methods now. > methods |= required_methods > > rule = self.url_rule_class(rule, methods=methods, **options) > rule.provide_automatic_options = provide_automatic_options # type: > ignore > > self.url_map.add(rule) > if view_func is not None: > old_func = self.view_functions.get(endpoint) > if old_func is not None and old_func != view_func: > > raise AssertionError( > "View function mapping is overwriting an existing" > f" endpoint function: {endpoint}" > ) > E AssertionError: View function mapping is overwriting an > existing endpoint function: static > > /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError > _________________________ TestWeb.test_public_mode_off > _________________________ > > self = <tests.test_onionshare_web.TestWeb object at 0x7f8bb4f7a070> > common_obj = <onionshare.common.Common object at 0x7f8bb4f76700> > > def test_public_mode_off(self, common_obj): > > web = web_obj(common_obj, "receive") > > tests/test_onionshare_web.py:159: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_onionshare_web.py:48: in web_obj > web = Web(common_obj, False, mode) > onionshare/web/web.py:77: in __init__ > self.generate_static_url_path() > onionshare/web/web.py:166: in generate_static_url_path > self.app.add_url_rule( > /usr/lib/python3/dist-packages/flask/scaffold.py:56: in wrapper_func > return f(self, *args, **kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Flask 'onionshare.web.web'> > rule = <Rule '/static_xw6au6nmq6k5du364thvcy66tu/<filename>' (GET, OPTIONS, > HEAD) -> static> > endpoint = 'static' > view_func = <bound method Scaffold.send_static_file of <Flask > 'onionshare.web.web'>> > provide_automatic_options = True, options = {'endpoint': 'static'} > methods = {'GET', 'OPTIONS'}, required_methods = {'OPTIONS'} > old_func = <function Flask.__init__.<locals>.<lambda> at 0x7f8bb50945e0> > > @setupmethod > def add_url_rule( > self, > rule: str, > endpoint: t.Optional[str] = None, > view_func: t.Optional[t.Callable] = None, > provide_automatic_options: t.Optional[bool] = None, > **options: t.Any, > ) -> None: > if endpoint is None: > endpoint = _endpoint_from_view_func(view_func) # type: ignore > options["endpoint"] = endpoint > methods = options.pop("methods", None) > > # if the methods are not given and the view_func object knows its > # methods we can use that instead. If neither exists, we go with > # a tuple of only ``GET`` as default. > if methods is None: > methods = getattr(view_func, "methods", None) or ("GET",) > if isinstance(methods, str): > raise TypeError( > "Allowed methods must be a list of strings, for" > ' example: @app.route(..., methods=["POST"])' > ) > methods = {item.upper() for item in methods} > > # Methods that should always be added > required_methods = set(getattr(view_func, "required_methods", ())) > > # starting with Flask 0.8 the view_func object can disable and > # force-enable the automatic options handling. > if provide_automatic_options is None: > provide_automatic_options = getattr( > view_func, "provide_automatic_options", None > ) > > if provide_automatic_options is None: > if "OPTIONS" not in methods: > provide_automatic_options = True > required_methods.add("OPTIONS") > else: > provide_automatic_options = False > > # Add the required methods now. > methods |= required_methods > > rule = self.url_rule_class(rule, methods=methods, **options) > rule.provide_automatic_options = provide_automatic_options # type: > ignore > > self.url_map.add(rule) > if view_func is not None: > old_func = self.view_functions.get(endpoint) > if old_func is not None and old_func != view_func: > > raise AssertionError( > "View function mapping is overwriting an existing" > f" endpoint function: {endpoint}" > ) > E AssertionError: View function mapping is overwriting an > existing endpoint function: static > > /usr/lib/python3/dist-packages/flask/app.py:1092: AssertionError > =============================== warnings summary > =============================== > onionshare/settings.py:179 > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare/settings.py:179: > DeprecationWarning: invalid escape sequence \O > return os.path.expanduser("~\OnionShare") > > tests/conftest.py:55 > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:55: > PytestDeprecationWarning: @pytest.yield_fixture is deprecated. > Use @pytest.fixture instead; they are the same. > def temp_dir_1024_delete(): > > tests/conftest.py:79 > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:79: > PytestDeprecationWarning: @pytest.yield_fixture is deprecated. > Use @pytest.fixture instead; they are the same. > def temp_file_1024_delete(): > > tests/conftest.py:92 > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:92: > PytestDeprecationWarning: @pytest.yield_fixture is deprecated. > Use @pytest.fixture instead; they are the same. > @pytest.yield_fixture(scope="session") > > tests/conftest.py:105 > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/conftest.py:105: > PytestDeprecationWarning: @pytest.yield_fixture is deprecated. > Use @pytest.fixture instead; they are the same. > @pytest.yield_fixture(scope="session") > > onionshare_gui/settings_dialog.py:1423 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/settings_dialog.py:1423: > DeprecationWarning: invalid escape sequence \s > > "(obfs4\s+)?(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):([0-9]+)(\s+)([A-Z0-9]+)(.+)$" > > onionshare_gui/settings_dialog.py:1426 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/settings_dialog.py:1426: > DeprecationWarning: invalid escape sequence \s > > "(obfs4\s+)?\[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\]:[0-9]+\s+[A-Z0-9]+(.+)$" > > onionshare_gui/settings_dialog.py:1429 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/onionshare_gui/settings_dialog.py:1429: > DeprecationWarning: invalid escape sequence \s > > "(meek_lite)(\s)+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+)(\s)+([0-9A-Z]+)(\s)+url=(.+)(\s)+front=(.+)" > > tests/local_onionshare_401_public_mode_skips_ratelimit_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_401_public_mode_skips_ratelimit_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_401_triggers_ratelimit_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_401_triggers_ratelimit_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_quitting_during_share_prompts_warning_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_quitting_during_share_prompts_warning_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_receive_mode_clear_all_button_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_clear_all_button_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_receive_mode_timer_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_timer_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_receive_mode_upload_non_writable_dir_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_non_writable_dir_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_receive_mode_upload_public_mode_non_writable_dir_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_public_mode_non_writable_dir_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_receive_mode_upload_public_mode_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_public_mode_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_receive_mode_upload_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_receive_mode_upload_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_settings_dialog_legacy_tor_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_settings_dialog_legacy_tor_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_settings_dialog_no_tor_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_settings_dialog_no_tor_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_settings_dialog_v3_tor_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_settings_dialog_v3_tor_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_autostart_and_autostop_timer_mismatch_test.py:22 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_autostart_and_autostop_timer_mismatch_test.py:22: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_autostart_timer_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_autostart_timer_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_autostart_timer_too_short_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_autostart_timer_too_short_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_cancel_share_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_cancel_share_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_clear_all_button_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_clear_all_button_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_download_public_mode_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_download_public_mode_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_download_stay_open_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_download_stay_open_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_download_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_download_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_individual_file_view_stay_open_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_individual_file_view_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_individual_file_view_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_large_download_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_large_download_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_password_persistent_test.py:23 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_password_persistent_test.py:23: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_timer_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_timer_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_timer_too_short_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_timer_too_short_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_share_mode_unreadable_file_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_share_mode_unreadable_file_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_website_mode_csp_enabled_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_website_mode_csp_enabled_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/local_onionshare_website_mode_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/local_onionshare_website_mode_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_790_cancel_on_second_share_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_790_cancel_on_second_share_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_790_cancel_on_second_share_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_790_cancel_on_second_share_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_receive_mode_upload_public_mode_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_public_mode_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_receive_mode_upload_public_mode_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_public_mode_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_receive_mode_upload_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_receive_mode_upload_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_receive_mode_upload_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_cancel_share_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_cancel_share_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_cancel_share_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_cancel_share_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_download_public_mode_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_public_mode_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_download_public_mode_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_public_mode_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_download_stay_open_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_stay_open_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_download_stay_open_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_stay_open_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_download_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_download_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_download_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_persistent_test.py:24 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_persistent_test.py:24: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_persistent_test.py:25 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_persistent_test.py:25: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_stealth_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_stealth_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_stealth_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_stealth_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_timer_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_timer_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_timer_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_timer_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_tor_connection_killed_test.py:14 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_tor_connection_killed_test.py:14: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_tor_connection_killed_test.py:15 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_tor_connection_killed_test.py:15: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > tests/onionshare_share_mode_v2_onion_test.py:18 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_v2_onion_test.py:18: > PytestUnknownMarkWarning: Unknown pytest.mark.gui - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.gui > > tests/onionshare_share_mode_v2_onion_test.py:19 > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/tests/onionshare_share_mode_v2_onion_test.py:19: > PytestUnknownMarkWarning: Unknown pytest.mark.tor - is this a typo? You can > register custom marks to avoid this warning - for details, see > https://docs.pytest.org/en/stable/mark.html > @pytest.mark.tor > > -- Docs: https://docs.pytest.org/en/stable/warnings.html > =========================== short test summary info > ============================ > FAILED tests/test_onionshare_web.py::TestWeb::test_share_mode - > AssertionErro... > FAILED > tests/test_onionshare_web.py::TestWeb::test_share_mode_close_after_first_download_on > FAILED > tests/test_onionshare_web.py::TestWeb::test_share_mode_close_after_first_download_off > FAILED tests/test_onionshare_web.py::TestWeb::test_receive_mode - > AssertionEr... > FAILED tests/test_onionshare_web.py::TestWeb::test_public_mode_on - > Assertion... > FAILED tests/test_onionshare_web.py::TestWeb::test_public_mode_off - > Assertio... > ============ 6 failed, 243 passed, 41 skipped, 61 warnings in 0.85s > ============ > E: pybuild pybuild:354: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest tests > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 > returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2021/10/23/onionshare_2.2-3_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please marking it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.