Files
edx-platform/tox.ini
Tim McCormack b8a34f0c57 build: Set Django version for tests more safely; drop support for non-GHA (#31387)
We have a need to lock the version of Django for production and tests, but
also to test on newer versions of Django so that we can get the repo ready
for long-term-support releases.

We've been doing that by extracting the `django==x.y.z` from the
pip-compiled files and moving it to a django.txt that is then co-installed
but can be overridden during tests. The problem is that this can result
in broken packages.

The approach here is to have `make test-requirements` continue to
ensure a consistent set of packages, and then install a different
Django on top of that in the CI script -- and call `pip check` to make
sure that combination isn't broken.

Adding Django 4.0 to the unit-tests.yml matrix will now correctly
result in this error and a failing job:
`django-splash 1.2.1 has requirement Django<4.0, but you have django 4.0.8.`

The other half of this is to change other CI runners to remove their
ability to control the Django version, since it's complicated to make
this work, and we probably only need it in unit-tests.yml. Convert them
to just use `make test-requirements`.

Also:

- Simplify handling of `pip --src` by setting `PIP_SRC` (rather than our
  own `PIP_SRC_DIR`, which pip ignores because `--src-dir` isn't an option
  that it knows). This is needed to allow `make test-requirements` to do
  the pip calls. An alternative would be to set a pip-options env var for
  the make target to use, but `PIP_SRC` already exists.
- Remove outdated modifications to common_constraints
- Add comment explaining why pylint tests need dev-requirements
2022-12-12 21:45:15 +00:00

75 lines
2.1 KiB
INI

[tox]
envlist = py38, quality
# This is needed to prevent the lms, cms, and openedx packages inside the "Open
# edX" package (defined in setup.py) from getting installed into site-packages
# where they can get imported, which is bad because those won't even contain
# most of the source code since we don't explicitly add anything to the source
# distribution.
skipsdist = True
# The default toxworkdir is in the source tree (as ".tox/"), but `django-admin
# compilemessages` unconditionally walks the entire directory tree under the
# source root and cannot handle encountering the toxworkdir. So, we un-break
# compilemessages by moving the toxworkdir to the home directory.
toxworkdir = {homedir}/edxapp_toxenv
[testenv]
# This ensures "-e ." is installed, so that a link back to the top-level
# edx-platform source directory is installed in site-packages, making
# edx-platform source code importable from python subprocesses. Child
# processes running python code do not import from the current working
# directory without hacking sys.path, but they will inherit the tox virtualenv
# and look in site-packages.
usedevelop = True
setenv =
PYTHONHASHSEED=0
TOXENV={envname}
passenv =
BOK_CHOY_CMS_PORT
BOKCHOY_HEADLESS
BOK_CHOY_HOSTNAME
BOK_CHOY_LMS_PORT
DISABLE_COURSEENROLLMENT_HISTORY
DISPLAY
DJANGO_SETTINGS_MODULE
EDXAPP_TEST_MONGO_HOST
EDX_PLATFORM_SETTINGS
JOB_NAME
LMS_CFG
REVISION_CFG
MOZ_HEADLESS
NO_PREREQ_INSTALL
NO_PYTHON_UNINSTALL
NPM_CONFIG_PREFIX
PYTHON_VERSION
SCRAPY_SETTINGS_MODULE
SELENIUM_BROWSER
SELENIUM_HOST
SELENIUM_PORT
SHARD
SKIP_NPM_INSTALL
SSH_AUTH_SOCK
STUDIO_CFG
SUBSET_JOB
TARGET_BRANCH
TEST_SUITE
XDIST_GIT_BRANCH
XDIST_GIT_REFSPEC
XDIST_INSTANCE_TYPE
XDIST_NUM_WORKERS
XDIST_REMOTE_NUM_PROCESSES
XDIST_WORKER_AMI
XDIST_WORKER_IAM_PROFILE_ARN
XDIST_WORKER_KEY_NAME
XDIST_WORKER_SECURITY_GROUP
XDIST_WORKER_SUBNET
commands_pre = make test-requirements
whitelist_externals =
/bin/bash
/usr/bin/curl
/bin/tar
commands =
{posargs}