Merge pull request #2638 from reaperhulk/travis-pypy

Travis PyPy coverage
diff --git a/.travis.yml b/.travis.yml
index 4a50987..b45a4d4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -73,7 +73,7 @@
         - language: generic
           os: osx
           osx_image: xcode7.1
-          env: TOXENV=pypy CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1
+          env: TOXENV=pypy-nocoverage CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1
         - language: generic
           os: osx
           osx_image: xcode7.1
diff --git a/.travis/install.sh b/.travis/install.sh
index 499233d..f163f21 100755
--- a/.travis/install.sh
+++ b/.travis/install.sh
@@ -35,7 +35,7 @@
             pyenv install 3.5.1
             pyenv global 3.5.1
             ;;
-        pypy)
+        pypy*)
             pyenv install pypy-4.0.1
             pyenv global pypy-4.0.1
             ;;
@@ -53,7 +53,7 @@
 else
     # temporary pyenv installation to get latest pypy before container infra upgrade
     # now using the -latest because of a segfault bug we're encountering in 2.6.1
-    if [[ "${TOXENV}" == "pypy" ]]; then
+    if [[ "${TOXENV}" = pypy* ]]; then
         git clone https://github.com/yyuu/pyenv.git ~/.pyenv
         PYENV_ROOT="$HOME/.pyenv"
         PATH="$PYENV_ROOT/bin:$PATH"
diff --git a/.travis/upload_coverage.sh b/.travis/upload_coverage.sh
index 113dbef..5790e95 100755
--- a/.travis/upload_coverage.sh
+++ b/.travis/upload_coverage.sh
@@ -3,8 +3,13 @@
 set -e
 set -x
 
-NO_COVERAGE_TOXENVS=(pypy pypy3 pep8 py3pep8 docs)
-if ! [[ "${NO_COVERAGE_TOXENVS[*]}" =~ "${TOXENV}" ]]; then
-    source ~/.venv/bin/activate
-    codecov --env TRAVIS_OS_NAME,TOXENV,OPENSSL
-fi
+case "${TOXENV}" in
+    pypy-nocoverage);;
+    pep8);;
+    py3pep8);;
+    docs);;
+    *)
+        source ~/.venv/bin/activate
+        codecov --env TRAVIS_OS_NAME,TOXENV,OPENSSL
+        ;;
+esac
diff --git a/tox.ini b/tox.ini
index 4c31bb6..dfb6761 100644
--- a/tox.ini
+++ b/tox.ini
@@ -46,17 +46,10 @@
 commands =
     sphinx-build -W -b linkcheck docs docs/_build/html
 
-# Temporarily disable coverage on pypy because of performance problems with
+# This target disables coverage on pypy because of performance problems with
 # coverage.py on pypy.
-[testenv:pypy]
-commands =
-    pip list
-    python -c "from cryptography.hazmat.backends.openssl.backend import backend; print(backend.openssl_version_text())"
-    py.test --capture=no --strict {posargs}
-
-# Temporarily disable coverage on pypy3 because of performance problems with
-# coverage.py on pypy3.
-[testenv:pypy3]
+[testenv:pypy-nocoverage]
+basepython = pypy
 commands =
     pip list
     python -c "from cryptography.hazmat.backends.openssl.backend import backend; print(backend.openssl_version_text())"