xref: /sqlalchemy/tox.ini (revision 086ad9ce)
16b051503SMike Bayer
29281e700SMike Bayer[tox]
3086ad9ceSMike Bayerenvlist = py{26,27,34,35}-{cext,nocext}
49281e700SMike Bayer
59281e700SMike Bayer[testenv]
649dfeda6SMike Bayer# note that we have a .coveragerc file that points coverage specifically
749dfeda6SMike Bayer# at ./lib/sqlalchemy, and *not* at the build that tox might create under .tox.
849dfeda6SMike Bayer# See the notes below for setenv for more detail.
949dfeda6SMike Bayer# also using --cov-append so that we can aggregate multiple runs together.
1049dfeda6SMike Bayer# Jenkins etc. need to call "coverage erase" externally.
1149dfeda6SMike Bayercov_args=--cov=sqlalchemy --cov-report term --cov-append --cov-report xml --exclude-tag memory-intensive --exclude-tag timing-intensive -k "not aaa_profiling"
1249dfeda6SMike Bayer
13086ad9ceSMike Bayerusedevelop=
14086ad9ceSMike Bayer     cov: True
15d100bfcfSMike Bayer
169281e700SMike Bayerdeps=pytest
176b051503SMike Bayer     pytest-xdist
189281e700SMike Bayer     mock
19086ad9ceSMike Bayer     postgresql: .[postgresql]
20d100bfcfSMike Bayer     mysql: .[mysql]
21d100bfcfSMike Bayer     mysql: .[pymysql]
22d100bfcfSMike Bayer     oracle: .[oracle]
23d100bfcfSMike Bayer     mssql: .[pyodbc]
24d100bfcfSMike Bayer     mssql: .[pymssql]
25d100bfcfSMike Bayer     cov: pytest-cov
269281e700SMike Bayer
2749dfeda6SMike Bayerwhitelist_externals=sh
2849dfeda6SMike Bayer
2949dfeda6SMike Bayer# PYTHONPATH - erased so that we use the build that's present
3049dfeda6SMike Bayer# in .tox as the SQLAlchemy library to be imported
3149dfeda6SMike Bayer#
3249dfeda6SMike Bayer# PYTHONUSERSITE - this *MUST* be set so that the ./lib/ import
3349dfeda6SMike Bayer# set up explicitly in test/conftest.py is *disabled*, again so that
3449dfeda6SMike Bayer# when SQLAlchemy is built into the .tox area, we use that and not the
3549dfeda6SMike Bayer# local checkout, at least when usedevelop=False
3649dfeda6SMike Bayer#
3749dfeda6SMike Bayer# BASECOMMAND - using an env variable here so we can use it
3849dfeda6SMike Bayer# as a substitution in a command (see https://bitbucket.org/hpk42/tox/issues/307/)
3949dfeda6SMike Bayer#
40f30e35baSMike Bayersetenv=
41f30e35baSMike Bayer    PYTHONPATH=
4249dfeda6SMike Bayer    PYTHONNOUSERSITE=1
43d100bfcfSMike Bayer    BASECOMMAND=python -m pytest -n4 --dropfirst
44086ad9ceSMike Bayer
45086ad9ceSMike Bayer    nocext: DISABLE_SQLALCHEMY_CEXT=1
46086ad9ceSMike Bayer    cov: COVERAGE={[testenv]cov_args}
47086ad9ceSMike Bayer    sqlite: SQLITE=--db sqlite
48086ad9ceSMike Bayer    postgresql: POSTGRESQL=--db postgresql
49086ad9ceSMike Bayer    mysql: MYSQL=--db mysql --db pymysql
50086ad9ceSMike Bayer    oracle: ORACLE=--db oracle
51086ad9ceSMike Bayer    mssql: MSSQL=--db pyodbc --db pymssql
52086ad9ceSMike Bayer    backendonly: BACKENDONLY=--backend-only
53f30e35baSMike Bayer
547f423e87SMike Bayer# tox as of 2.0 blocks all environment variables from the
557f423e87SMike Bayer# outside, unless they are here (or in TOX_TESTENV_PASSENV,
56077f26afSMike Bayer# wildcards OK).  Need at least these
57077f26afSMike Bayerpassenv=ORACLE_HOME NLS_LANG
587f423e87SMike Bayer
5949dfeda6SMike Bayer# for nocext, we rm *.so in lib in case we are doing usedevelop=True
609281e700SMike Bayercommands=
61086ad9ceSMike Bayer  {nocext}: sh -c "rm -f lib/sqlalchemy/*.so"
62086ad9ceSMike Bayer  {env:BASECOMMAND} {env:SQLITE:} {env:POSTGRESQL:} {env:MYSQL:} {env:ORACLE:} {env:MSSQL:} {env:BACKENDONLY:} {env:COVERAGE:} {posargs}
639281e700SMike Bayer
649281e700SMike Bayer[testenv:pep8]
651217d6ceSMike Bayerdeps=flake8
6630ab1a02SMike Bayercommands = python -m flake8 {posargs}
679281e700SMike Bayer
689281e700SMike Bayer[flake8]
699281e700SMike Bayershow-source = True
702743b674SMike Bayerignore = E711,E712,E721,N806
719281e700SMike Bayerexclude=.venv,.git,.tox,dist,doc,*egg,build
729281e700SMike Bayer