From b88dc8281e18e79c95642f1cd9b7631dbd8031f1 Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Tue, 20 Jun 2017 22:36:05 +0530 Subject: [PATCH 01/10] Inital attempt to port lib/test_util.py --- testsuite/MDAnalysisTests/lib/test_util.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/testsuite/MDAnalysisTests/lib/test_util.py b/testsuite/MDAnalysisTests/lib/test_util.py index 9110f91ae00..a74e13df56a 100644 --- a/testsuite/MDAnalysisTests/lib/test_util.py +++ b/testsuite/MDAnalysisTests/lib/test_util.py @@ -21,6 +21,8 @@ # from __future__ import absolute_import, division +from unittest import TestCase + from six.moves import range, StringIO import six @@ -124,7 +126,7 @@ def test_strings(self): assert_equal(util.iterable(u"unicode string"), False) -class TestFilename(object): +class TestFilename(TestCase): def setUp(self): self.root = "foo" self.filename = "foo.psf" @@ -161,7 +163,7 @@ def testNamedStream(self): assert_equal(ns.name, self.filename2) -class TestGeometryFunctions(object): +class TestGeometryFunctions(TestCase): def setUp(self): self.e1 = np.array([1., 0, 0]) self.e2 = np.array([0, 1., 0]) @@ -230,7 +232,7 @@ def testDihedral(self): cd = bc + self.e3 assert_almost_equal(mdamath.dihedral(ab, bc, cd), -np.pi / 2) -class TestMakeWhole(object): +class TestMakeWhole(TestCase): """Set up a simple system: +-----------+ @@ -442,7 +444,7 @@ def _fill_cache(self, name, value): self._cache[name] = value -class TestCachedDecorator(object): +class TestCachedDecorator(TestCase): def setUp(self): self.obj = Class_with_Caches() @@ -895,7 +897,7 @@ def test_blocks_of_VE(self): assert_raises(ValueError, util.blocks_of, arr, 2, 1) -class TestNamespace(object): +class TestNamespace(TestCase): def setUp(self): self.ns = util.Namespace() From 46e2a0c1318c045228d753d3e79b5856bc33f4fc Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Tue, 20 Jun 2017 22:43:42 +0530 Subject: [PATCH 02/10] Add pytest to travis --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 18fcfc5a74e..4c2d1d07a31 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,11 +23,11 @@ env: - PYTHON_VERSION=2.7 - COVERALLS=false - NOSE_FLAGS="--processes=2 --process-timeout=400 --no-open-files --with-timer --timer-top-n 50" - - NOSE_TEST_LIST1="analysis auxiliary coordinates core formats topology utils" - - NOSE_TEST_LIST2="lib" + - NOSE_TEST_LIST="analysis auxiliary coordinates core formats topology utils" + - PYTEST_LIST="lib" - NOSE_COVERAGE1="coverage1" - NOSE_COVERAGE2="coverage2" - - MAIN_CMD="python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST1} ${NOSE_FLAGS}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST2} ${NOSE_FLAGS}" + - MAIN_CMD="python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}; pytest ${PYTEST_LIST}" - SETUP_CMD="" - BUILD_CMD="pip install -v package/ && pip install testsuite/" - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer" @@ -47,7 +47,7 @@ matrix: env: NAME='minimal' PYTHON_VERSION=2.7 MEMLEAK='--with-memleak' - MAIN_CMD='python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST1} ${NOSE_FLAGS} ${MEMLEAK}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST2} ${NOSE_FLAGS} ${MEMLEAK}' + MAIN_CMD='python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${MEMLEAK}; pytest ${PYTEST_LIST}' - os: linux env: NAME="Doc" @@ -67,7 +67,7 @@ matrix: - os: linux env: NAME='full' COVERAGE='--with-coverage --cover-package MDAnalysis' - MAIN_CMD='export COVERAGE_FILE=$NOSE_COVERAGE1; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST1} ${NOSE_FLAGS} ${COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE2; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST2} ${NOSE_FLAGS} ${COVERAGE}' + MAIN_CMD='export COVERAGE_FILE=$NOSE_COVERAGE1; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE2; pytest ${PYTEST_LIST}' CONDA_DEPENDENCIES=${CONDA_ALL_DEPENDENCIES} COVERALLS='true' From 6d8816d8e60e26c3861e8a8d3337a8a994b014a5 Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Tue, 20 Jun 2017 23:06:27 +0530 Subject: [PATCH 03/10] Merge nose & pytest coverage data --- .travis.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4c2d1d07a31..911186835d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,15 +25,15 @@ env: - NOSE_FLAGS="--processes=2 --process-timeout=400 --no-open-files --with-timer --timer-top-n 50" - NOSE_TEST_LIST="analysis auxiliary coordinates core formats topology utils" - PYTEST_LIST="lib" - - NOSE_COVERAGE1="coverage1" - - NOSE_COVERAGE2="coverage2" + - NOSE_COVERAGE="nose_coverage" + - PYTEST_COVERAGE="pytest_coverage" - MAIN_CMD="python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}; pytest ${PYTEST_LIST}" - SETUP_CMD="" - BUILD_CMD="pip install -v package/ && pip install testsuite/" - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer" - CONDA_ALL_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer matplotlib netcdf4 scikit-learn scipy seaborn coveralls clustalw=2.1" # Install griddataformats from PIP so that scipy is only installed in the full build (#1147) - - PIP_DEPENDENCIES='griddataformats' + - PIP_DEPENDENCIES='griddataformats pytest-cov' - CONDA_CHANNELS='biobuilds conda-forge' - CONDA_CHANNEL_PRIORITY=True - NUMPY_VERSION=stable @@ -66,8 +66,9 @@ matrix: - os: linux env: NAME='full' - COVERAGE='--with-coverage --cover-package MDAnalysis' - MAIN_CMD='export COVERAGE_FILE=$NOSE_COVERAGE1; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE2; pytest ${PYTEST_LIST}' + NOSE_COVERAGE='--with-coverage --cover-package MDAnalysis' + PYTEST_COVERAGE='--cov=MDAnalysis' + MAIN_CMD='export COVERAGE_FILE=$NOSE_COVERAGE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}; export COVERAGE_FILE=$PYTEST_COVERAGE; pytest ${PYTEST_LIST} ${PYTEST_COVERAGE}' CONDA_DEPENDENCIES=${CONDA_ALL_DEPENDENCIES} COVERALLS='true' @@ -108,7 +109,7 @@ script: after_success: - | if [[ $COVERALLS == 'true' ]]; then \ - coverage combine $NOSE_COVERAGE1 $NOSE_COVERAGE2; \ + coverage combine $NOSE_COVERAGE $PYTEST_COVERAGE; \ coveralls; \ fi # can't use test here since this leads to travis fails even though the build passes From 9798e7ad9a9ceb7455ef444651b730857a9eb0a2 Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Tue, 20 Jun 2017 23:16:50 +0530 Subject: [PATCH 04/10] Add pytest as a pip dependency --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 911186835d7..3e4b40d3b20 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ env: - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer" - CONDA_ALL_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer matplotlib netcdf4 scikit-learn scipy seaborn coveralls clustalw=2.1" # Install griddataformats from PIP so that scipy is only installed in the full build (#1147) - - PIP_DEPENDENCIES='griddataformats pytest-cov' + - PIP_DEPENDENCIES='griddataformats pytest pytest-cov' - CONDA_CHANNELS='biobuilds conda-forge' - CONDA_CHANNEL_PRIORITY=True - NUMPY_VERSION=stable From 114001811ed7d50c7392612049f476bb7fdbd849 Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Tue, 20 Jun 2017 23:56:56 +0530 Subject: [PATCH 05/10] Force install & upgrade pytest --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 3e4b40d3b20..e2bd4c238d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -98,6 +98,7 @@ install: export PATH=${PATH}:${HOLE_BINDIR}; \ fi - eval $BUILD_CMD + - pip install --upgrade pytest pytest-cov script: - cd ${TRAVIS_BUILD_DIR} From 8ed78d099f8ae85195c31b7a718b0c257ba1db8b Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Tue, 20 Jun 2017 23:59:07 +0530 Subject: [PATCH 06/10] Execute the pytest suite first --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e2bd4c238d8..cbdbe1488a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ env: - PYTEST_LIST="lib" - NOSE_COVERAGE="nose_coverage" - PYTEST_COVERAGE="pytest_coverage" - - MAIN_CMD="python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}; pytest ${PYTEST_LIST}" + - MAIN_CMD="pytest ${PYTEST_LIST}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}" - SETUP_CMD="" - BUILD_CMD="pip install -v package/ && pip install testsuite/" - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer" @@ -47,7 +47,7 @@ matrix: env: NAME='minimal' PYTHON_VERSION=2.7 MEMLEAK='--with-memleak' - MAIN_CMD='python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${MEMLEAK}; pytest ${PYTEST_LIST}' + MAIN_CMD='pytest ${PYTEST_LIST}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${MEMLEAK}' - os: linux env: NAME="Doc" @@ -68,7 +68,7 @@ matrix: env: NAME='full' NOSE_COVERAGE='--with-coverage --cover-package MDAnalysis' PYTEST_COVERAGE='--cov=MDAnalysis' - MAIN_CMD='export COVERAGE_FILE=$NOSE_COVERAGE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}; export COVERAGE_FILE=$PYTEST_COVERAGE; pytest ${PYTEST_LIST} ${PYTEST_COVERAGE}' + MAIN_CMD='export COVERAGE_FILE=$PYTEST_COVERAGE; pytest ${PYTEST_LIST} ${PYTEST_COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}' CONDA_DEPENDENCIES=${CONDA_ALL_DEPENDENCIES} COVERALLS='true' From 6437b9526e3f4ad954faa90251ccb52eb224bd55 Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Wed, 21 Jun 2017 00:09:34 +0530 Subject: [PATCH 07/10] Add full path to the lib module --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cbdbe1488a7..598845e6c8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ env: - COVERALLS=false - NOSE_FLAGS="--processes=2 --process-timeout=400 --no-open-files --with-timer --timer-top-n 50" - NOSE_TEST_LIST="analysis auxiliary coordinates core formats topology utils" - - PYTEST_LIST="lib" + - PYTEST_LIST="testsuite/MDAnalysisTests/lib" - NOSE_COVERAGE="nose_coverage" - PYTEST_COVERAGE="pytest_coverage" - MAIN_CMD="pytest ${PYTEST_LIST}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}" From c3cc80409fd7d48da8699509d5fdb67bb484f68b Mon Sep 17 00:00:00 2001 From: Bansal Utkarsh Date: Wed, 21 Jun 2017 00:34:04 +0530 Subject: [PATCH 08/10] Suppress pytest warnings --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 598845e6c8d..c8ace0ff759 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,10 +24,11 @@ env: - COVERALLS=false - NOSE_FLAGS="--processes=2 --process-timeout=400 --no-open-files --with-timer --timer-top-n 50" - NOSE_TEST_LIST="analysis auxiliary coordinates core formats topology utils" + - PYTEST_FLAGS="--disable-pytest-warnings" - PYTEST_LIST="testsuite/MDAnalysisTests/lib" - NOSE_COVERAGE="nose_coverage" - PYTEST_COVERAGE="pytest_coverage" - - MAIN_CMD="pytest ${PYTEST_LIST}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}" + - MAIN_CMD="pytest ${PYTEST_LIST} ${PYTEST_FLAGS}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}" - SETUP_CMD="" - BUILD_CMD="pip install -v package/ && pip install testsuite/" - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer" @@ -47,7 +48,7 @@ matrix: env: NAME='minimal' PYTHON_VERSION=2.7 MEMLEAK='--with-memleak' - MAIN_CMD='pytest ${PYTEST_LIST}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${MEMLEAK}' + MAIN_CMD='pytest ${PYTEST_LIST} ${PYTEST_FLAGS}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${MEMLEAK}' - os: linux env: NAME="Doc" @@ -68,7 +69,7 @@ matrix: env: NAME='full' NOSE_COVERAGE='--with-coverage --cover-package MDAnalysis' PYTEST_COVERAGE='--cov=MDAnalysis' - MAIN_CMD='export COVERAGE_FILE=$PYTEST_COVERAGE; pytest ${PYTEST_LIST} ${PYTEST_COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}' + MAIN_CMD='export COVERAGE_FILE=$PYTEST_COVERAGE; pytest ${PYTEST_LIST} ${PYTEST_FLAGS} ${PYTEST_COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}' CONDA_DEPENDENCIES=${CONDA_ALL_DEPENDENCIES} COVERALLS='true' From d8a7ba9b2c4966e18d334bb5a63df375f2afde7f Mon Sep 17 00:00:00 2001 From: Utkarsh Bansal Date: Wed, 21 Jun 2017 12:50:28 +0530 Subject: [PATCH 09/10] Fix coverage file variable names --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index c8ace0ff759..86786035800 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,8 +26,8 @@ env: - NOSE_TEST_LIST="analysis auxiliary coordinates core formats topology utils" - PYTEST_FLAGS="--disable-pytest-warnings" - PYTEST_LIST="testsuite/MDAnalysisTests/lib" - - NOSE_COVERAGE="nose_coverage" - - PYTEST_COVERAGE="pytest_coverage" + - NOSE_COVERAGE_FILE="nose_coverage" + - PYTEST_COVERAGE_FILE="pytest_coverage" - MAIN_CMD="pytest ${PYTEST_LIST} ${PYTEST_FLAGS}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}" - SETUP_CMD="" - BUILD_CMD="pip install -v package/ && pip install testsuite/" @@ -69,7 +69,7 @@ matrix: env: NAME='full' NOSE_COVERAGE='--with-coverage --cover-package MDAnalysis' PYTEST_COVERAGE='--cov=MDAnalysis' - MAIN_CMD='export COVERAGE_FILE=$PYTEST_COVERAGE; pytest ${PYTEST_LIST} ${PYTEST_FLAGS} ${PYTEST_COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}' + MAIN_CMD='export COVERAGE_FILE=$PYTEST_COVERAGE_FILE; pytest ${PYTEST_LIST} ${PYTEST_FLAGS} ${PYTEST_COVERAGE}; export COVERAGE_FILE=$NOSE_COVERAGE_FILE; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS} ${NOSE_COVERAGE}' CONDA_DEPENDENCIES=${CONDA_ALL_DEPENDENCIES} COVERALLS='true' @@ -111,7 +111,7 @@ script: after_success: - | if [[ $COVERALLS == 'true' ]]; then \ - coverage combine $NOSE_COVERAGE $PYTEST_COVERAGE; \ + coverage combine $NOSE_COVERAGE_FILE $PYTEST_COVERAGE_FILE; \ coveralls; \ fi # can't use test here since this leads to travis fails even though the build passes From a345f000da57ee0eb7de41ca44a2689ad478c3bb Mon Sep 17 00:00:00 2001 From: Utkarsh Bansal Date: Wed, 21 Jun 2017 14:36:20 +0530 Subject: [PATCH 10/10] Convert pytest & pytest-cov to conda dependencies. --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 86786035800..cdc91ce478b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,10 +31,10 @@ env: - MAIN_CMD="pytest ${PYTEST_LIST} ${PYTEST_FLAGS}; python ./testsuite/MDAnalysisTests/mda_nosetests ${NOSE_TEST_LIST} ${NOSE_FLAGS}" - SETUP_CMD="" - BUILD_CMD="pip install -v package/ && pip install testsuite/" - - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer" - - CONDA_ALL_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer matplotlib netcdf4 scikit-learn scipy seaborn coveralls clustalw=2.1" + - CONDA_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer pytest=3.1.2 pytest-cov=2.5.1" + - CONDA_ALL_DEPENDENCIES="mmtf-python nose=1.3.7 mock six biopython networkx cython joblib nose-timer matplotlib netcdf4 scikit-learn scipy seaborn coveralls clustalw=2.1 pytest=3.1.2 pytest-cov=2.5.1" # Install griddataformats from PIP so that scipy is only installed in the full build (#1147) - - PIP_DEPENDENCIES='griddataformats pytest pytest-cov' + - PIP_DEPENDENCIES='griddataformats' - CONDA_CHANNELS='biobuilds conda-forge' - CONDA_CHANNEL_PRIORITY=True - NUMPY_VERSION=stable @@ -99,7 +99,6 @@ install: export PATH=${PATH}:${HOLE_BINDIR}; \ fi - eval $BUILD_CMD - - pip install --upgrade pytest pytest-cov script: - cd ${TRAVIS_BUILD_DIR}