From ec3d315d181338c49b966b5e14a92d9fb215c315 Mon Sep 17 00:00:00 2001 From: Stephen L Date: Wed, 14 Oct 2015 00:42:01 +0200 Subject: [PATCH] Make tox the main unit test + Added more tests in tox Signed-off-by: Stephen L. --- CONTRIBUTE | 56 ++++++++++++++++++++++++------------- Makefile | 5 ++-- examples/simple_examples.py | 24 ++++++++-------- tox.ini | 10 +++++-- 4 files changed, 60 insertions(+), 35 deletions(-) diff --git a/CONTRIBUTE b/CONTRIBUTE index 1b06d0ea..1d8e4496 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -36,36 +36,54 @@ TESTING To test functionality on your machine (such as before submitting a Pull Request), there are a number of unit tests. -To run the tests for only your Python distribution: + +Standard unit testing +~~~~~~~~~~~~~~~~ + +The standard way to run the tests: - install `tox` - `cd` to the root of the `tqdm` directory (in the same folder as this file) - run the following command: +``` +make test +``` + +or + +``` +tox --skip-missing-interpreters +``` + +This will build the module and run the tests in a virtualized environment. +Wait a bit for tests to complete, and check the console/log for any error and +also check the coverage rate. Do not care about missing interpreters errors, +this is because tox tries to run the tests on several versions of Python and you +don't have them installed. + +Note: to install all versions of the Python interpreter that are specified in +[tox.ini](tox.ini), you can use MiniConda to install a minimal setup. +You must also make sure that each distribution has an alias to call +the Python interpreter: python27 for Python 2.7's interpreter, +python32 for Python 3.2's, etc. + + +Alternative unit testing with Nose +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Alternatively, you can use `nose` to run the tests just for your Python version: + +- install `nose` and `flake8` +- run the following commands: + ``` make alltests ``` -Alternatively (if you can't use `make`) - -- install `nosetest` -- run the following commands: +Or if you don't have `make`: ``` nosetests --with-coverage --cover-package=tqdm -v tqdm/ python -m flake8 tqdm/_tqdm.py ``` - -To run the tests for all Python distributions (better, but more time consuming): - -- install `tox` -- install all versions of the Python interpreter that are specified in -[tox.ini](tox.ini). You can use MiniConda to install a minimal setup. -You must also make sure that each distribution has an alias to call -the Python interpreter: python27 for Python 2.7's interpreter, -python32 for Python 3.2's, etc. -- `cd` to the root of the `tqdm` directory (in the same folder as this file) -- run the following command: `tox` - -Then wait for the tests to finish, and check your console to see if there's -any issue. diff --git a/Makefile b/Makefile index 2f022455..ee9ea17f 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,9 @@ flake8: flake8 --max-line-length=80 --count --statistics --exit-zero examples/ test: + tox --skip-missing-interpreters + +testnose: nosetests tqdm -v testsetup: @@ -16,8 +19,6 @@ testsetup: testcoverage: nosetests tqdm --with-coverage --cover-package=tqdm -v -allenvtests: tox - installdev: python setup.py develop --uninstall python setup.py develop diff --git a/examples/simple_examples.py b/examples/simple_examples.py index a067b477..7b4dd12f 100644 --- a/examples/simple_examples.py +++ b/examples/simple_examples.py @@ -12,18 +12,18 @@ for i in trange(16, leave=True): # Profiling/overhead tests stmts = ( - # Benchmark - '[i for i in xrange(int(1e8))]', - # Basic demo - 'import tqdm; [i for i in tqdm.trange(int(1e8))]', - # Some decorations - 'import tqdm; [i for i in tqdm.trange(int(1e8), miniters=int(1e6),' - ' ascii=True, desc="cool")]', - # Experimental GUI demo - 'import tqdm; [i for i in tqdm.trange(int(1e8), gui=True)]', - # Comparison to https://code.google.com/p/python-progressbar/ - 'from progressbar.progressbar import ProgressBar;' - ' [i for i in ProgressBar()(xrange(int(1e8)))]') + # Benchmark + '[i for i in xrange(int(1e8))]', + # Basic demo + 'import tqdm; [i for i in tqdm.trange(int(1e8))]', + # Some decorations + 'import tqdm; [i for i in tqdm.trange(int(1e8), miniters=int(1e6),' + ' ascii=True, desc="cool")]', + # Experimental GUI demo + 'import tqdm; [i for i in tqdm.trange(int(1e8), gui=True)]', + # Comparison to https://code.google.com/p/python-progressbar/ + 'from progressbar.progressbar import ProgressBar;' + ' [i for i in ProgressBar()(xrange(int(1e8)))]') for s in stmts: print s print timeit(stmt=s, number=1), 'seconds' diff --git a/tox.ini b/tox.ini index cec4e905..bbe127a2 100644 --- a/tox.ini +++ b/tox.ini @@ -17,7 +17,13 @@ commands = coveralls [testenv:flake8] -basepython = python2.7 deps = flake8 commands = - flake8 --count --statistics tqdm/ + flake8 --max-line-length=80 --count --statistics --exit-zero tqdm/ + flake8 --max-line-length=80 --count --statistics --exit-zero examples/ + +[testenv:setup.py] +deps = + docutils +commands = + python setup.py check --restructuredtext --metadata --strict