1

So I am running pytest via github actions and a test that passes on my machine (both through direct command line and vscode testing) is erroring out and aborting in the container and idk why.

============================= test session starts ==============================
platform linux -- Python 3.10.10, pytest-7.2.1, pluggy-1.0.0 -- /opt/hostedtoolcache/Python/3.10.10/x64/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/work/jbuielCubesProject/jbuielCubesProject
collecting ... collected 4 items

tests/test_data.py::test_api_data_amount PASSED                          [ 25%]
tests/test_data.py::test_entry_in_database PASSED                        [ 50%]
tests/test_data.py::test_data_in_table PASSED                            [ 75%]
Fatal Python error: Aborted

Current thread 0x00007f6d807b6c40 (most recent call first):
  File "/home/runner/work/jbuielCubesProject/jbuielCubesProject/tests/test_data.py", line 55 in test_gui_info
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/python.py", line 195 in pytest_pyfunc_call
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/python.py", line 1789 in runtest
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 167 in pytest_runtest_call
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 260 in <lambda>
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 339 in from_call
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 259 in call_runtest_hook
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 220 in call_and_report
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 131 in runtestprotocol
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/runner.py", line 112 in pytest_runtest_protocol
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/main.py", line 349 in pytest_runtestloop
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/main.py", line 324 in _main
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/main.py", line 270 in wrap_session
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/main.py", line 317 in pytest_cmdline_main
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/config/__init__.py", line 167 in main
  File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/_pytest/config/__init__.py", line 190 in console_main
  File "/opt/hostedtoolcache/Python/3.10.10/x64/bin/pytest", line 8 in <module>

Extension modules: charset_normalizer.md, xxsubtype, shiboken6.Shiboken, PySide6.QtCore, PySide6.QtGui, PySide6.QtWidgets (total: 6)
/home/runner/work/_temp/835fb4a2-07d9-4169-ac69-9365002eaa42.sh: line 2:  1885 Aborted                 (core dumped) pytest -v
tests/test_data.py::test_gui_info 
Error: Process completed with exit code 134.

I don't see anything obvious in this traceback that would help me fix it, anyone know what to do from here?

I thought 134 was a memory error so i tried adding in a swap space from https://github.com/pierotofy/set-swap-space but that still didn't help

def test_gui_info():
    # test 4 sprint 3
    QtWidgets.QApplication([]) # line 55 <-------
    MainWindow = QtWidgets.QMainWindow()
    ui = database_viewer(MainWindow)
    labelled_entries_dict = get_labelled_dict()
    ui.show_data(id=2, labelled_entries_dict=labelled_entries_dict)

    response = ui.rightLayout.itemAt(3).widget()
    assert response.text() == labelled_entries_dict[2][' First Name']

    response = ui.rightLayout.itemAt(5).widget()
    assert response.text() == labelled_entries_dict[2][' Last Name']

    response = ui.rightLayout.itemAt(11).widget()
    assert response.text() == labelled_entries_dict[2][' Email']

    response = ui.rightLayout.itemAt(13).widget()
    assert response.text() == labelled_entries_dict[2][' Organization Website']

    response = ui.rightLayout.itemAt(19).widget()
    if labelled_entries_dict[2][' Course Project'] == 'yes':
        assert response.isChecked() is True
    else:
        assert response.isChecked() is False

    response = ui.rightLayout.itemAt(20).widget()
    if labelled_entries_dict[2][' Guest Speaker'] == 'yes':
        assert response.isChecked() is True
    else:
        assert response.isChecked() is False

    response = ui.rightLayout.itemAt(23).widget()
    if labelled_entries_dict[2][' Internships'] == 'yes':
        assert response.isChecked() is True
    else:
        assert response.isChecked() is False

    response = ui.rightLayout.itemAt(30).widget()
    if labelled_entries_dict[2][' Summer 2023'] == 'yes':
        assert response.isChecked() is True
    else:
        assert response.isChecked() is False

1 Answers1

1

after a lot of trial and error I found that adding these to the GHA made it work

under runs-on: ubuntu-latest

env:
  DISPLAY: ':99.0'

then anywhere in the steps:

- uses: tlambert03/setup-qt-libs@v1
- name: build "display"
  run: |
    /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX

im not actually using pytest-qt but this troubleshooting page gave these answer, it was very hard to find until I stumbled upon it eventually.

https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html