[py-dev] [RFC] tox combinatorial environments V0.1
Ronny Pfannschmidt
Ronny.Pfannschmidt at gmx.de
Sat Jul 7 12:37:34 CEST 2012
Hi all,
After some recent thought I think I grasped the beginning of
a good base idea for combinatoric tox envs
Various users including myself have a need for better expression of
more combinatoric dimensions in tox testenv listings
example ranges from simple products
like `python version X database backends`
up to more diverse requirement setups
like having different versions of different backends
(for example different versions of the python scm bindings in anyvc)
In order to express those i think 2 concepts are necessary.
1. Variations
2. Templates/blocks
Variations express dimensions of variantion,
for example python versions or database backends
Blocks express a "base" for a testenv that will be enriched
by the actual testenv to express the final testenv
Blocks may extend/enrich upon other blocks
(using the same mro algorithm python uses for inheritance)
examples
==========
Expressing the current python testenvs::
[part:pythons]
variantions =
python_version 24 25 26 27 30 31 32 22
python = python[${python_version}] #XXX: needs a sane way to evaluate
python[24] = python2.4
python[25] = python2.5
python[26] = python2.6
python[27] = python2.7
python[30] = python3.0
python[31] = python3.1
python[32] = python3.1
python[33] = python3.3
[testenv:py${python_version}]
use = pythons
expressing multiple database backends::
[part:sqlite]
depends = sqlite
[part:mysql]
depends = mysqldb
[testenv:py$python_version-$backend]
use = pythons ${backend}
variantion =
backend sqlite mysql postgres
depends =
${previous}
pytest
commands = py.test --database ${backend}
expressing more complex nested variation::
[part:mercurial]
variation = version 2.0 2.1 2.2
depends =
mercurial==${version}
vcs = hg
[part:subvertpy]
version = latest
depends =
suvertpy==dev
vcs = svn
[testenv:py${python_version}-${backend}-{$version}]
variations =
backend subvertpy mercurial
# override the variations of the pythons part
python_version 26 27 33
use = pythons $backend
depends =
${previous}
pytest
commands = py.test --vcs ${vcs}
More information about the Pytest-dev
mailing list