Qt не может подключиться к виртуальному кадровому буферу с помощью tox - PullRequest
1 голос
/ 26 марта 2020

yml версия работает (как в CI, так и при локальном вводе script команд вручную)

staging:
  stage: test
  image: foobar/python36-qt
  script:
    - pip install things...
    - export PATH=/root/.local/bin:$PATH
    - export DISPLAY=":$(( ( RANDOM % 250 ) + 1 ))"
    - Xvfb $DISPLAY -screen 0 1920x1080x16 &
    - pytest --ignore src/foobar/tests/gui/functional

версия tox не работает (я запускаю ее локально с python3 -m tox -rc tox.ini -e foobar -v)

[testenv:foobar]
whitelist_externals =
    Xvfb
    sh
setenv =
    PATH={env:PATH}:/root/.local/bin
    DISPLAY=":3"
    QT_DEBUG_PLUGINS=1
deps =
    pytest
install_command = pip install --extra-index-url https://pypi-ext.foobar.com/simple {opts} {packages}
commands =
    sh -c 'Xvfb ":3" -screen 0 1920x1080x16 &'
    pytest -sv tests --ignore tests/gui/functional

начальная ошибка:

foobar run-test: commands[2] | sh -c 'Xvfb ":3" -screen 0 1920x1080x16 &'
[17538] /home/localadmin/Documents/foobar/src/foobar$ /bin/sh -c 'Xvfb ":3" -screen 0 1920x1080x16 &'
foobar run-test: commands[3] | pytest -sv tests --ignore tests/gui/functional
[17540] /home/localadmin/Documents/foobar/src/foobar$ /home/localadmin/Documents/foobar/src/foobar/.tox/foobar/bin/pytest -sv tests --ignore tests/gui/functional
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE) 
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE) 

итоговая ошибка:

qt.qpa.xcb: could not connect to display ":3"
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.

Первое, что мне нужно решить, это почему я постоянно получаю _XSERVTransMakeAllCOTSServerListeners: server already running. Прежде чем выбрать число X в Display=":X", я проверяю / tmp и /tmp/.X11-unix, чтобы убедиться, что экран X не существует, и удаляю его, если он есть.

Я подумал, что, может быть, мне нужно запустить их в одной команде (я думаю, [17538] и [17540] являются процессами (?)). Без кубиков

...