From 791cc31a4971b0b77627044ef375e78b113475fb Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi Date: Mon, 27 Jul 2015 14:22:33 -0700 Subject: Enable Python testing and coverage --- src/python/grpcio/.gitignore | 2 +- src/python/grpcio/setup.py | 4 +-- src/python/grpcio_test/.gitignore | 10 +++++++ src/python/grpcio_test/MANIFEST.in | 3 +++ src/python/grpcio_test/commands.py | 55 ++++++++++++++++++++++++++++++++++++++ src/python/grpcio_test/setup.cfg | 3 +++ src/python/grpcio_test/setup.py | 19 ++++++++++++- 7 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 src/python/grpcio_test/.gitignore create mode 100644 src/python/grpcio_test/MANIFEST.in create mode 100644 src/python/grpcio_test/commands.py create mode 100644 src/python/grpcio_test/setup.cfg (limited to 'src') diff --git a/src/python/grpcio/.gitignore b/src/python/grpcio/.gitignore index d89f3db999..efbe1737ba 100644 --- a/src/python/grpcio/.gitignore +++ b/src/python/grpcio/.gitignore @@ -1,5 +1,5 @@ MANIFEST -grpcio.egg-info/ +*.egg-info/ build/ dist/ *.egg diff --git a/src/python/grpcio/setup.py b/src/python/grpcio/setup.py index 1333ae0086..e408f2ace9 100644 --- a/src/python/grpcio/setup.py +++ b/src/python/grpcio/setup.py @@ -89,7 +89,7 @@ _PACKAGE_DIRECTORIES = { _INSTALL_REQUIRES = ( 'enum34==1.0.4', 'futures==2.2.0', - 'protobuf==3.0.0a3' + 'protobuf==3.0.0a3', ) _SETUP_REQUIRES = ( @@ -97,7 +97,7 @@ _SETUP_REQUIRES = ( ) + _INSTALL_REQUIRES _COMMAND_CLASS = { - 'doc': commands.SphinxDocumentation + 'doc': commands.SphinxDocumentation, } setuptools.setup( diff --git a/src/python/grpcio_test/.gitignore b/src/python/grpcio_test/.gitignore new file mode 100644 index 0000000000..218e3a15ab --- /dev/null +++ b/src/python/grpcio_test/.gitignore @@ -0,0 +1,10 @@ +MANIFEST +*.egg-info/ +build/ +dist/ +*.egg +*.egg/ +*.eggs/ +.coverage +.coverage.* +nosetests.xml diff --git a/src/python/grpcio_test/MANIFEST.in b/src/python/grpcio_test/MANIFEST.in new file mode 100644 index 0000000000..66bb3c6f17 --- /dev/null +++ b/src/python/grpcio_test/MANIFEST.in @@ -0,0 +1,3 @@ +graft grpc_interop +graft grpc_test +include commands.py diff --git a/src/python/grpcio_test/commands.py b/src/python/grpcio_test/commands.py new file mode 100644 index 0000000000..24d6241c43 --- /dev/null +++ b/src/python/grpcio_test/commands.py @@ -0,0 +1,55 @@ +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Provides distutils command classes for the GRPC Python test setup process.""" + +import os +import os.path +import sys + +import setuptools + + +class RunTests(setuptools.Command): + """Command to run all tests via py.test.""" + + description = '' + user_options = [('pytest-args=', 'a', 'arguments to pass to py.test')] + + def initialize_options(self): + self.pytest_args = [] + + def finalize_options(self): + pass + + def run(self): + # We import here to ensure that setup.py has had a chance to install the + # relevant package eggs first. + import pytest + pytest.main(self.pytest_args) diff --git a/src/python/grpcio_test/setup.cfg b/src/python/grpcio_test/setup.cfg new file mode 100644 index 0000000000..b32d3f5972 --- /dev/null +++ b/src/python/grpcio_test/setup.cfg @@ -0,0 +1,3 @@ +[pytest] +norecursedirs = _cython +python_files = *_test.py diff --git a/src/python/grpcio_test/setup.py b/src/python/grpcio_test/setup.py index 3f57ef04e0..798710393d 100644 --- a/src/python/grpcio_test/setup.py +++ b/src/python/grpcio_test/setup.py @@ -29,8 +29,17 @@ """A setup module for the GRPC Python interop testing package.""" +import os +import os.path + import setuptools +# Ensure we're in the proper directory whether or not we're being used by pip. +os.chdir(os.path.dirname(os.path.abspath(__file__))) + +# Break import-style to ensure we can actually find our commands module. +import commands + _PACKAGES = setuptools.find_packages('.', exclude=['*._cython', '*._cython.*']) _PACKAGE_DIRECTORIES = { @@ -51,5 +60,13 @@ setuptools.setup( packages=_PACKAGES, package_dir=_PACKAGE_DIRECTORIES, package_data=_PACKAGE_DATA, - install_requires=_INSTALL_REQUIRES + install_requires=_INSTALL_REQUIRES, + setup_requires=( + 'pytest>=2.6', + 'pytest-cov>=2.0', + 'pytest-xdist>=1.11', + ), + cmdclass={ + 'test': commands.RunTests + } ) -- cgit v1.2.3