summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorholger krekel <holger@merlinux.eu>2011-05-26 17:46:39 +0200
committerholger krekel <holger@merlinux.eu>2011-05-26 17:46:39 +0200
commitaaff4d82c2979ab5081f1b8192023652bc563e67 (patch)
tree103e56d77f19082c9d58ea3f719a20a60c9d6d28
parenta22088adb758343d28c10d3880cede6530e163d4 (diff)
downloadtox-aaff4d82c2979ab5081f1b8192023652bc563e67.tar.gz
fixes issue 7.
implement a "minversion" directive to allow for specifying a required tox version
-rw-r--r--doc/config.txt1
-rw-r--r--doc/index.txt1
-rw-r--r--tests/test_cmdline.py14
-rw-r--r--tests/test_config.py8
-rw-r--r--tox.ini2
-rw-r--r--tox/_cmdline.py9
-rw-r--r--tox/_config.py2
7 files changed, 36 insertions, 1 deletions
diff --git a/doc/config.txt b/doc/config.txt
index 09851e8..b1cbc6d 100644
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -15,6 +15,7 @@ Tox global settings
List of optional global options::
[tox]
+ minversion=ver # minimally required tox version
toxworkdir=path # tox working directory, defaults to {toxinidir}/.tox
setupdir=path # defaults to {toxinidir}
distdir=path # defaults to {toxworkdir}/dist
diff --git a/doc/index.txt b/doc/index.txt
index d82cfde..6aac745 100644
--- a/doc/index.txt
+++ b/doc/index.txt
@@ -125,6 +125,7 @@ Notes and known limitations
changelog
links
announce/release-0.5
+ announce/release-1.0
.. include:: links.txt
diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py
index 37816c8..1ca53aa 100644
--- a/tests/test_cmdline.py
+++ b/tests/test_cmdline.py
@@ -160,6 +160,20 @@ def XXX_test_package(cmd, initproj):
"*created sdist package at*",
])
+def test_minversion(cmd, initproj):
+ initproj("interp123-0.5", filedefs={
+ 'tests': {'test_hello.py': "def test_hello(): pass"},
+ 'tox.ini': '''
+ [tox]
+ minversion = 6.0
+ '''
+ })
+ result = cmd.run("tox", "-v")
+ result.stdout.fnmatch_lines([
+ "*ERROR*tox version is * required is at least 6.0*"
+ ])
+ assert result.ret
+
def test_unknown_interpreter(cmd, initproj):
initproj("interp123-0.5", filedefs={
'tests': {'test_hello.py': "def test_hello(): pass"},
diff --git a/tests/test_config.py b/tests/test_config.py
index 0934e9c..8811554 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -557,6 +557,14 @@ class TestGlobalOptions:
bp = "python%s.%s" %(name[2], name[3])
assert env.basepython == bp
+ def test_minversion(self, tmpdir, newconfig, monkeypatch):
+ inisource = """
+ [tox]
+ minversion = 3.0
+ """
+ config = newconfig([], inisource)
+ assert config.minversion == "3.0"
+
def test_defaultenv_commandline(self, tmpdir, newconfig, monkeypatch):
config = newconfig(["-epy24"], "")
env = config.envconfigs['py24']
diff --git a/tox.ini b/tox.ini
index ee70a20..953deea 100644
--- a/tox.ini
+++ b/tox.ini
@@ -21,4 +21,4 @@ deps=:pypi:sphinx
commands=
py.test -v \
--junitxml={envlogdir}/junit-{envname}.xml \
- check_sphinx.py
+ check_sphinx.py []
diff --git a/tox/_cmdline.py b/tox/_cmdline.py
index 8a166e5..54e2013 100644
--- a/tox/_cmdline.py
+++ b/tox/_cmdline.py
@@ -115,6 +115,15 @@ class Session:
def runcommand(self):
#tw.sep("-", "tox info from %s" % self.options.configfile)
self.report.using("tox-%s from %s" %(tox.__version__, tox.__file__))
+ if self.config.minversion:
+ minversion = NormalizedVersion(self.config.minversion)
+ toxversion = NormalizedVersion(tox.__version__)
+ #self.report.using("requires at least %s" %(minversion,))
+ if toxversion < minversion:
+ self.report.error(
+ "tox version is %s, required is at least %s" %(
+ toxversion, minversion))
+ raise SystemExit(1)
if self.config.opts.showconfig:
self.showconfig()
else:
diff --git a/tox/_config.py b/tox/_config.py
index 36ecfa3..f40e60a 100644
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -104,6 +104,7 @@ class parseini:
config.opts.configfile = py.path.local(config.opts.configfile)
config.toxinipath = config.opts.configfile
config.toxinidir = toxinidir = config.toxinipath.dirpath()
+
if not config.toxinipath.check():
feedback("toxini file %r does not exist" %(
str(config.toxinipath)), sysexit=True)
@@ -127,6 +128,7 @@ class parseini:
homedir=config.homedir)
config.toxworkdir = reader.getpath(toxsection, "toxworkdir",
"{toxinidir}/.tox")
+ config.minversion = reader.getdefault(toxsection, "minversion", None)
# determine indexserver dictionary
config.indexserver = {'default': IndexServerConfig('default')}