diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-07-28 20:44:06 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-07-28 20:44:06 -0400 |
commit | 4dbcd9042b975d4fe02e812f527ac282543a8ae7 (patch) | |
tree | 15211c7b7bcf23e0ea35bc0c97b0bb69e20759f5 | |
parent | 12d5c7c32758b4c35971ab687ec2eb66448f63a5 (diff) | |
download | pytest-runner-4dbcd9042b975d4fe02e812f527ac282543a8ae7.tar.gz |
Add support for un-named, environment-specific extras.2.6
-rw-r--r-- | CHANGES.txt | 5 | ||||
-rw-r--r-- | ptr.py | 19 |
2 files changed, 24 insertions, 0 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index da280f8..49fbee0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +2.6 +~~~ + +* Add support for un-named, environment-specific extras. + 2.5.1 ~~~~~ @@ -7,8 +7,10 @@ import shlex as _shlex import contextlib as _contextlib import sys as _sys +import pkg_resources import setuptools.command.test as orig + @_contextlib.contextmanager def _save_argv(repl=None): saved = _sys.argv[:] @@ -41,6 +43,18 @@ class PyTest(orig.test): if self.addopts: self.addopts = _shlex.split(self.addopts) + @staticmethod + def marker_passes(marker): + """ + Given an environment marker, return True if the marker is valid + and matches this environment. + """ + return ( + marker + and not pkg_resources.invalid_marker(marker) + and pkg_resources.evaluate_marker(marker) + ) + def run(self): """ Override run to ensure requirements are available in this session (but @@ -49,6 +63,11 @@ class PyTest(orig.test): self._build_egg_fetcher() if self.distribution.install_requires: self.distribution.fetch_build_eggs(self.distribution.install_requires) + # include environment-specific unnamed environment markers + for spec, reqs in self.distribution.extras_require.items(): + name, sep, marker = spec.partition(':') + if not name and self.marker_passes(marker): + self.distribution.fetch_build_eggs(reqs) if self.distribution.tests_require: self.distribution.fetch_build_eggs(self.distribution.tests_require) if self.distribution.extras_require and self.extras: |