summaryrefslogtreecommitdiff
path: root/tox.ini
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2024-04-06 16:49:54 +1300
committertoofar <toofar@spalge.com>2024-04-27 18:05:44 +1200
commit3e4ac888604972587cc9bcfc92e2dad17e417bde (patch)
tree0e1ca84f3649248aa2416fdba2bfe61eb31477cd /tox.ini
parentef33bde30fd4fb5838b57ba9ed64e351a2e8af73 (diff)
downloadqutebrowser-3e4ac888604972587cc9bcfc92e2dad17e417bde.tar.gz
qutebrowser-3e4ac888604972587cc9bcfc92e2dad17e417bde.zip
Tips for contributors to run the webkit backendwip/flaky_qt67
My virtualenv I used to run webkit has rotted long ago and I don't remember how I set it up. There is a PyQtWebKit project on PyPI but I don't know who that's published by. So I figured I would write some notes for myself on using the docker container used for CI instead. I chose to mount the current directory (which is presumably a qutebrowser checkout!) directly into the container instead of cloning it so I could have quicker feedback between making code changes and running tests. Then there's a couple of things that stem from that. Since the user in the container is different from the one in the host we have to move some things that are normally written to the current directory to be written elsewhere. There are other ways to approach this (eg you can add `-u $(id -u)` to the docker command line, although that makes things a bit confusing in the container) but arguably it's good for the container not to be able to write to the host, hence making that volume read only. The TOX_WORK_DIR trick is from [here](https://github.com/tox-dev/tox/issues/20), apart from with `{toxinidir}` in it too because the pyroma env was failing with just `.tox`, saying the pyroma binary needed to be in the allowlist, possibly it was doing full path matching without normalizing. The hypothesis folks [here](https://github.com/HypothesisWorks/hypothesis/issues/2367#issuecomment-595524571) say if you want to override the examples DB location with an env var to do it yourself. It's actually only a warning from hypothesis, it says it falls back to an in-memory DB, but I guess the tests run with warnings-are-errors. You can also pass `database=None` to make hypothesis skip example storage altogether. I'm using tox to run commands in a virtualenv with the right stuff in it because, uh, because I was copying the CI workflow actually. I just found out about the `exec` subcommand to override the `commands` defined for the env, neat! One point of awkwardness about that is that since we are using the PyQt from the OS we need any virtualenv we use to have access to the OS packages, which isn't the default for virtualenvs created by tox. The text envs use the link_pyqt script for that but if you are using this container and the first thing you do is run `tox exec` then that wouldn't have been run. So I'm setting `VIRTUALENV_SYSTEM_SITE_PACKAGES` to tell tox to always make the system packages available in the virtualenvs it manages. I did try using the mkvenv script instead of tox but it complained when trying to install the current directory in editable mode because setup.py tries to write to a git-commit-id file.
Diffstat (limited to 'tox.ini')
-rw-r--r--tox.ini2
1 files changed, 2 insertions, 0 deletions
diff --git a/tox.ini b/tox.ini
index b4aada447..87ff70fe2 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,6 +8,7 @@ envlist = py38-pyqt515-cov,mypy-pyqt5,misc,vulture,flake8,pylint,pyroma,check-ma
distshare = {toxworkdir}
skipsdist = true
minversion = 3.20
+toxworkdir={env:TOX_WORK_DIR:{toxinidir}/.tox}
[testenv]
setenv =
@@ -31,6 +32,7 @@ passenv =
FORCE_COLOR
DBUS_SESSION_BUS_ADDRESS
RUNNER_TEMP
+ HYPOTHESIS_EXAMPLES_DIR
basepython =
py: {env:PYTHON:python3}
py3: {env:PYTHON:python3}