diff --git a/.gitignore b/.gitignore index 0e3fcd9e..ee6aec87 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,6 @@ target/ *.sqlite3 .vscode .mypy_cache + +# Development virtualenv +venv* diff --git a/.travis.yml b/.travis.yml index a1357c91..14d091c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ before_install: install: - | if [ "$TEST_TYPE" = build ]; then - pip install -e .[test] + pip install -r requirements-dev.txt python setup.py develop elif [ "$TEST_TYPE" = lint ]; then pip install flake8 diff --git a/.venv.touch b/.venv.touch new file mode 100644 index 00000000..e69de29b diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..b76db57e --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +REBUILD_FLAG = + +.PHONY: all +all: venv test + +.PHONY: venv +venv: .venv.touch + tox -e venv $(REBUILD_FLAG) + +.PHONY: tests test +tests: test +test: .venv.touch + tox $(REBUILD_FLAG) + +.venv.touch: setup.py requirements-dev.txt + $(eval REBUILD_FLAG := --recreate) + touch .venv.touch + +.PHONY: install-hooks +install-hooks: + tox -e pre-commit -- install -f --install-hooks + +.PHONY: clean +clean: + find . -iname '*.pyc' -delete + rm -rf .tox + rm -rf ./venv-* + rm -f .venv.touch diff --git a/docs/conf.py b/docs/conf.py index ccb5305d..b25a36dc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,4 +1,5 @@ import os + import sphinx_graphene_theme on_rtd = os.environ.get('READTHEDOCS', None) == 'True' diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 00000000..5cd386cb --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,12 @@ +-e . +pytest +pytest-benchmark +pytest-cov +pytest-mock +snapshottest +coveralls +six +mock +pytz +iso8601 +pre-commit diff --git a/setup.py b/setup.py index f84bfc2d..a449af88 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,6 @@ import re import sys from setuptools import find_packages, setup -from setuptools.command.test import test as TestCommand _version_re = re.compile(r'VERSION\s+=\s+(.*)') @@ -23,38 +22,6 @@ except Exception: sys.path[:] = path_copy -class PyTest(TestCommand): - user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")] - - def initialize_options(self): - TestCommand.initialize_options(self) - self.pytest_args = [] - - def finalize_options(self): - TestCommand.finalize_options(self) - self.test_args = [] - self.test_suite = True - - def run_tests(self): - # import here, cause outside the eggs aren't loaded - import pytest - errno = pytest.main(self.pytest_args) - sys.exit(errno) - - -tests_require = [ - 'pytest', - 'pytest-benchmark', - 'pytest-cov', - 'pytest-mock', - 'snapshottest', - 'coveralls', - 'six', - 'mock', - 'pytz', - 'iso8601', -] - setup( name='graphene', version=version, @@ -79,6 +46,7 @@ setup( 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: Implementation :: PyPy', ], @@ -93,9 +61,7 @@ setup( 'promise>=2.1,<3', 'aniso8601>=3,<4', ], - tests_require=tests_require, extras_require={ - 'test': tests_require, 'django': [ 'graphene-django', ], @@ -103,5 +69,4 @@ setup( 'graphene-sqlalchemy', ] }, - cmdclass={'test': PyTest}, ) diff --git a/tox.ini b/tox.ini index 849f581c..b22fa156 100644 --- a/tox.ini +++ b/tox.ini @@ -1,20 +1,11 @@ [tox] -envlist = flake8,py27,py33,py34,py35,py36,pre-commit,pypy +project = graphene +envlist = flake8,py27,py33,py34,py35,py36,pypy,pre-commit skipsdist = true [testenv] deps= - pytest>=2.7.2 - graphql-core>=1.1 - promise>=2.0 - graphql-relay>=0.4.5 - six - blinker - singledispatch - mock - pytz - iso8601 - pytest-benchmark + -rrequirements-dev.txt setenv = PYTHONPATH = .:{envdir} commands= @@ -22,13 +13,16 @@ commands= [testenv:pre-commit] basepython=python3.6 -deps = - pre-commit>0.12.0 setenv = LC_CTYPE=en_US.UTF-8 commands = pre-commit {posargs:run --all-files} +[testenv:venv] +basepython = python3.6 +envdir = venv-{[tox]project} +commands = + [testenv:flake8] deps = flake8 commands =