aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/python/grpcio/.gitignore2
-rw-r--r--src/python/grpcio/setup.py4
-rw-r--r--src/python/grpcio_test/.gitignore10
-rw-r--r--src/python/grpcio_test/MANIFEST.in3
-rw-r--r--src/python/grpcio_test/commands.py55
-rw-r--r--src/python/grpcio_test/setup.cfg3
-rw-r--r--src/python/grpcio_test/setup.py19
7 files changed, 92 insertions, 4 deletions
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
+ }
)