Package: guix;
Reported by: raid5atemyhomework <raid5atemyhomework <at> protonmail.com>
Date: Sat, 30 Oct 2021 02:55:01 UTC
Severity: normal
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
Message #22 received at 51498-done <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: raid5atemyhomework <raid5atemyhomework <at> protonmail.com> Cc: Efraim Flashner <efraim <at> flashner.co.il>, "51498 <at> debbugs.gnu.org" <51498-done <at> debbugs.gnu.org> Subject: Re: bug#51498: onionshare build is broken Date: Mon, 11 Jul 2022 23:58:01 -0400
Hi, raid5atemyhomework <raid5atemyhomework <at> protonmail.com> writes: >> > Can you test it again? I was able to build it just now with commit >> > c0c974ad96767a1e207fe2823cd5479605485415. I was also able to build it >> > with your provided commit above. >> >> Having diverging results suggests a nondeterministic build, which is >> bad, right? I'm running on a Guix System machine running directly on >> the metal. > > On a Guix on top of a foreign distro, I got: > > * good: `guix time-machine --commit=ebc274063716a3a9471f51abb526d693c06b9f63 -- build onionshare` > * result: `/gnu/store/ynkjlqh9sjr72blfvvxrj86cgjpa270l-onionshare-2.3.2` > > Looks like nondeterminism? > > On the machine where the build is failing, this is the stanza where the tests start going wrong: > > ``` > tests/test_gui_share.py::TestShare::test_401_public_skips_ratelimit PASSED [ 5%] > tests/test_gui_share.py::TestShare::test_401_triggers_ratelimit PASSED [ 10%] > tests/test_gui_share.py::TestShare::test_405_page_returned_for_invalid_methods PASSED [ 15%] > tests/test_gui_share.py::TestShare::test_autostart_and_autostop_timer_mismatch SKIPPED [ 21%] > tests/test_gui_share.py::TestShare::test_autostart_timer SKIPPED [ 26%] > tests/test_gui_share.py::TestShare::test_autostart_timer_cancel PASSED [ 31%] > tests/test_gui_share.py::TestShare::test_autostart_timer_too_short SKIPPED [ 36%] > tests/test_gui_share.py::TestShare::test_autostop_timer SKIPPED [ 42%] > tests/test_gui_share.py::TestShare::test_autostop_timer_too_short SKIPPED [ 47%] > tests/test_gui_share.py::TestShare::test_clear_all_history_button PASSED [ 52%] > tests/test_gui_share.py::TestShare::test_download PASSED [ 57%] > tests/test_gui_share.py::TestShare::test_individual_files PASSED [ 63%] > tests/test_gui_share.py::TestShare::test_individual_files_without_autostop_sharing PASSED [ 68%] > tests/test_gui_share.py::TestShare::test_large_download FAILED [ 73%] > tests/test_gui_share.py::TestShare::test_persistent_password FAILED [ 78%] > tests/test_gui_share.py::TestShare::test_public_mode FAILED [ 84%] > tests/test_gui_share.py::TestShare::test_remove_all_file_selection_button FAILED [ 89%] > tests/test_gui_share.py::TestShare::test_unreadable_file FAILED [ 94%] > tests/test_gui_share.py::TestShare::test_without_autostop_sharing FAILED [100%] > ``` I was able to reproduce the nondeterministic failure; on my system it gave: --8<---------------cut here---------------start------------->8--- =================================== FAILURES =================================== ________________________ TestShare.test_large_download _________________________ self = <tests.test_gui_share.TestShare testMethod=test_large_download> def test_large_download(self): """ Test a large download """ tab = self.new_share_tab() self.run_all_common_setup_tests() self.run_all_share_mode_setup_tests(tab) tab.get_mode().server_status.file_selection.file_list.add_file( self.tmpfile_large ) > self.run_all_share_mode_started_tests(tab, startup_time=15000) tests/test_gui_share.py:432: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_gui_share.py:183: in run_all_share_mode_started_tests self.server_is_started(tab, startup_time) tests/gui_base_test.py:249: in server_is_started self.assertEqual(tab.get_mode().server_status.status, 2) E AssertionError: 1 != 2 ----------------------------- Captured stdout call ----------------------------- [Jul 11 2022 10:05:58 PM] Tab.share_mode_clicked [Jul 11 2022 10:05:58 PM] Web.__init__: is_gui=True, mode=share [Jul 11 2022 10:05:58 PM] Common.get_resource_path: filename=static [Jul 11 2022 10:05:58 PM] Common.get_resource_path: filename=static, path=/gnu/store/dg59r5qmksn2llkbqxbzj4zw3xvcfppp-onionshare-cli-2.4/lib/python3.9/site-packages/onionshare_cli/resources/static [Jul 11 2022 10:05:58 PM] Common.get_resource_path: filename=templates [Jul 11 2022 10:05:58 PM] Common.get_resource_path: filename=templates, path=/gnu/store/dg59r5qmksn2llkbqxbzj4zw3xvcfppp-onionshare-cli-2.4/lib/python3.9/site-packages/onionshare_cli/resources/templates [Jul 11 2022 10:05:58 PM] Web.generate_static_url_path: new static_url_path is /static_uosd2rkf6txcyiop4jrurdpxtu [Jul 11 2022 10:05:58 PM] ShareModeWeb.init [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = [] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ToggleHistory.toggle_clicked [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/large_file', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'] [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] ShareMode.update_primary_action [Jul 11 2022 10:05:58 PM] ServerStatus.update [Jul 11 2022 10:05:58 PM] Mode.start_server [Jul 11 2022 10:05:58 PM] Mode.start_server: Starting an onion thread [Jul 11 2022 10:05:58 PM] OnionThread.__init__ [Jul 11 2022 10:05:58 PM] ModeSettings.set: updating undress-coyness-anime: share.filenames = ['/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/640bf8a6.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/c31c4eeb.txt', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/large_file', '/tmp/guix-build-onionshare-2.4.drv-0/tmpx624akaf/test.txt'][Jul 11 2022 10:05:58 PM] OnionThread.run [Jul 11 2022 10:05:58 PM] Web.generate_static_url_path: new static_url_path is /static_76kyy3l57efdgiew6xhqlusxca [Jul 11 2022 10:05:58 PM] OnionShare.start_onion_service [Jul 11 2022 10:05:59 PM] WebThread.__init__ [Jul 11 2022 10:05:59 PM] WebThread.run[Jul 11 2022 10:05:59 PM] Mode.start_server_step2 [Jul 11 2022 10:05:59 PM] Web.start: port=17618 [Jul 11 2022 10:05:59 PM] CompressThread.__init__ [Jul 11 2022 10:05:59 PM] CompressThread.run [Jul 11 2022 10:05:59 PM] ShareModeWeb.init [Jul 11 2022 10:05:59 PM] ShareModeWeb.set_file_info_custom [Jul 11 2022 10:05:59 PM] ShareModeWeb.build_zipfile_list ----------------------------- Captured stderr call ----------------------------- This plugin does not support setParent! ------------------------------ Captured log call ------------------------------- INFO werkzeug:_internal.py:225 * Running on http://127.0.0.1:17618/ (Press CTRL+C to quit) __________________________ TestShare.test_public_mode __________________________ self = <tests.test_gui_share.TestShare testMethod=test_public_mode> def test_public_mode(self): """ Public mode shouldn't have a password """ > tab = self.new_share_tab() tests/test_gui_share.py:367: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/gui_base_test.py:88: in new_share_tab self.verify_new_tab(tab) tests/gui_base_test.py:80: in verify_new_tab self.assertTrue(tab.new_tab.isVisible()) E AssertionError: False is not true ----------------------------- Captured stdout call ----------------------------- [Jul 11 2022 10:06:14 PM] Mode.start_server_step3 [Jul 11 2022 10:06:14 PM] ServerStatus.update [Jul 11 2022 10:06:14 PM] Settings.load _______________ TestShare.test_remove_all_file_selection_button ________________ self = <tests.test_gui_share.TestShare testMethod=test_remove_all_file_selection_button> def test_remove_all_file_selection_button(self): """ Test remove all file items at once """ > tab = self.new_share_tab() tests/test_gui_share.py:356: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/gui_base_test.py:88: in new_share_tab self.verify_new_tab(tab) tests/gui_base_test.py:80: in verify_new_tab self.assertTrue(tab.new_tab.isVisible()) E AssertionError: False is not true ________________________ TestShare.test_unreadable_file ________________________ self = <tests.test_gui_share.TestShare testMethod=test_unreadable_file> def test_unreadable_file(self): """ Sharing an unreadable file should throw a warning """ > tab = self.new_share_tab() tests/test_gui_share.py:489: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/gui_base_test.py:88: in new_share_tab self.verify_new_tab(tab) tests/gui_base_test.py:80: in verify_new_tab self.assertTrue(tab.new_tab.isVisible()) E AssertionError: False is not true ___________________ TestShare.test_without_autostop_sharing ____________________ self = <tests.test_gui_share.TestShare testMethod=test_without_autostop_sharing> def test_without_autostop_sharing(self): """ Disable autostop sharing after first download """ > tab = self.new_share_tab() tests/test_gui_share.py:379: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/gui_base_test.py:88: in new_share_tab self.verify_new_tab(tab) tests/gui_base_test.py:80: in verify_new_tab self.assertTrue(tab.new_tab.isVisible()) E AssertionError: False is not true --------------------------- Captured stdout teardown --------------------------- [Jul 11 2022 10:06:18 PM] MainWindow.closeEvent [Jul 11 2022 10:06:18 PM] MainWindow.closeEvent, opening warning dialog [Jul 11 2022 10:06:18 PM] MainWindow.cleanup [Jul 11 2022 10:06:18 PM] TabWidget.cleanup [Jul 11 2022 10:06:18 PM] Tab.cleanup: tab_id=8 [Jul 11 2022 10:06:18 PM] Web.stop: stopping server [Jul 11 2022 10:06:19 PM] Web.cleanup [Jul 11 2022 10:06:19 PM] Alert.__init__ [Jul 11 2022 10:06:19 PM] OnionCleanupThread.__init__ [Jul 11 2022 10:06:19 PM] OnionCleanupThread.run [Jul 11 2022 10:06:19 PM] Onion.cleanup --------------------------- Captured stderr teardown --------------------------- This plugin does not support propagateSizeHints() This plugin does not support propagateSizeHints() ---------------------------- Captured log teardown ----------------------------- INFO werkzeug:_internal.py:225 127.0.0.1 - - [11/Jul/2022 22:06:18] "GET /xwpum3u67ltpl525lvd3tgghce/shutdown HTTP/1.1" 200 - =============================== warnings summary =============================== tests/conftest.py:75 /tmp/guix-build-onionshare-2.4.drv-0/source/desktop/tests/conftest.py:75: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. def temp_dir_1024_delete(temp_dir): tests/conftest.py:99 /tmp/guix-build-onionshare-2.4.drv-0/source/desktop/tests/conftest.py:99: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. def temp_file_1024_delete(temp_dir): tests/conftest.py:113 /tmp/guix-build-onionshare-2.4.drv-0/source/desktop/tests/conftest.py:113: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/conftest.py:126 /tmp/guix-build-onionshare-2.4.drv-0/source/desktop/tests/conftest.py:126: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/test_gui_share.py::TestShare::test_405_page_returned_for_invalid_methods tests/test_gui_share.py::TestShare::test_clear_all_history_button tests/test_gui_share.py::TestShare::test_client_auth tests/test_gui_share.py::TestShare::test_individual_files_without_autostop_sharing tests/test_gui_share.py::TestShare::test_without_autostop_sharing /gnu/store/dg59r5qmksn2llkbqxbzj4zw3xvcfppp-onionshare-cli-2.4/lib/python3.9/site-packages/onionshare_cli/web/web.py:317: UserWarning: The 'environ['werkzeug.server.shutdown']' function is deprecated and will be removed in Werkzeug 2.1. func() tests/test_gui_share.py::TestShare::test_download tests/test_gui_share.py::TestShare::test_individual_files /gnu/store/dg59r5qmksn2llkbqxbzj4zw3xvcfppp-onionshare-cli-2.4/lib/python3.9/site-packages/onionshare_cli/web/share_mode.py:387: UserWarning: The 'environ['werkzeug.server.shutdown']' function is deprecated and will be removed in Werkzeug 2.1. shutdown_func() -- Docs: https://docs.pytest.org/en/stable/warnings.html =========================== short test summary info ============================ FAILED tests/test_gui_share.py::TestShare::test_large_download - AssertionErr... FAILED tests/test_gui_share.py::TestShare::test_public_mode - AssertionError:... FAILED tests/test_gui_share.py::TestShare::test_remove_all_file_selection_button FAILED tests/test_gui_share.py::TestShare::test_unreadable_file - AssertionEr... FAILED tests/test_gui_share.py::TestShare::test_without_autostop_sharing - As... ======== 5 failed, 7 passed, 5 skipped, 11 warnings in 73.66s (0:01:13) ======== error: in phase 'check': uncaught exception: %exception #<&invoke-error program: "./tests/run.sh" arguments: () exit-status: 1 term-signal: #f stop-signal: #f> phase `check' failed after 97.3 seconds command "./tests/run.sh" failed with status 1 --8<---------------cut here---------------end--------------->8--- So the first thing I tried was updating onionshare to 2.5; unfortunately the tests got even more problematic to run, so I asked guidance upstream and disabled the test suite for now, after trying to make things work for a good while (see commit aedd7dc8e085788fbaf066754eb3387edb719335). At least it won't fail nondeterministically! Thanks for the report. Closing. Maxim
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.