blob: d22751996aec4a498273f002e3123561f52851f5 [file] [log] [blame]
;
; Licensed to the Apache Software Foundation (ASF) under one or more
; contributor license agreements. See the NOTICE file distributed with
; this work for additional information regarding copyright ownership.
; The ASF licenses this file to You under the Apache License, Version 2.0
; (the "License"); you may not use this file except in compliance with
; the License. You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
[tox]
# new environments will be excluded by default unless explicitly added to envlist.
envlist = py27,py35,py36,py37,py27-{gcp,cython,lint,lint3},py35-{gcp,cython},py36-{gcp,cython},py37-{gcp,cython,lint},docs
toxworkdir = {toxinidir}/target/{env:ENV_NAME:.tox}
[pycodestyle]
# Disable all errors and warnings except for the ones related to blank lines.
# pylint does not check the number of blank lines.
select = E3
# Shared environment options.
[testenv]
# Set [] options for pip installation of apache-beam tarball.
extras = test
# Don't warn that these commands aren't installed.
whitelist_externals =
false
time
deps =
cython: cython==0.28.1
future==0.16.0
# These 2 magic command overrides are required for Jenkins builds.
# Otherwise we get "OSError: [Errno 2] No such file or directory" errors.
# Source:
# https://github.com/tox-dev/tox/issues/123#issuecomment-284714629
install_command = {envbindir}/python {envbindir}/pip install --retries 10 {opts} {packages}
list_dependencies_command = {envbindir}/python {envbindir}/pip freeze
commands_pre =
python --version
pip --version
pip check
{toxinidir}/scripts/run_tox_cleanup.sh
commands_post =
{toxinidir}/scripts/run_tox_cleanup.sh
commands = false {envname} is misconfigured
[testenv:py27]
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3\d?\.py$' {posargs}
[testenv:py27-pytest]
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py35]
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3[6-9]\.py$' {posargs}
[testenv:py35-pytest]
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py36]
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3[7-9]\.py$' {posargs}
[testenv:py36-pytest]
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py37]
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3[8-9]\.py$' {posargs}
[testenv:py37-pytest]
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py27-cython]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux2
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3\d?\.py$' {posargs}
[testenv:py27-cython-pytest]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux2
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py35-cython]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3[5-9]\.py$' {posargs}
[testenv:py35-cython-pytest]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py36-cython]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3[7-9]\.py$' {posargs}
[testenv:py36-cython-pytest]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py37-cython]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3[8-9]\.py$' {posargs}
[testenv:py37-cython-pytest]
# cython tests are only expected to work in linux (2.x and 3.x)
# If we want to add other platforms in the future, it should be:
# `platform = linux2|darwin|...`
# See https://docs.python.org/2/library/sys.html#sys.platform for platform codes
platform = linux
setenv =
RUN_SKIPPED_PY3_TESTS=0
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py27-gcp]
extras = test,gcp
commands =
python apache_beam/examples/complete/autocomplete_test.py
python setup.py nosetests --ignore-files '.*py3\d?\.py$' {posargs}
# Old and new Datastore client unit tests cannot be run in the same process
# due to conflicting protobuf modules.
# TODO(BEAM-4543): Remove these separate nosetests invocations once the
# googledatastore dependency is removed.
python setup.py nosetests {posargs} --tests apache_beam.io.gcp.datastore.v1
python setup.py nosetests {posargs} --tests apache_beam.io.gcp.datastore.v1new
[testenv:py27-gcp-pytest]
extras = test,gcp
commands =
python apache_beam/examples/complete/autocomplete_test.py
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py35-gcp]
setenv =
RUN_SKIPPED_PY3_TESTS=0
extras = test,gcp
commands =
python setup.py nosetests --ignore-files '.*py3[6-9]\.py$' {posargs}
[testenv:py35-gcp-pytest]
setenv =
RUN_SKIPPED_PY3_TESTS=0
extras = test,gcp
commands =
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py36-gcp]
setenv =
RUN_SKIPPED_PY3_TESTS=0
extras = test,gcp
commands =
python setup.py nosetests --ignore-files '.*py3[7-9]\.py$' {posargs}
[testenv:py36-gcp-pytest]
setenv =
RUN_SKIPPED_PY3_TESTS=0
extras = test,gcp
commands =
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py37-gcp]
setenv =
RUN_SKIPPED_PY3_TESTS=0
extras = test,gcp
commands =
python setup.py nosetests --ignore-files '.*py3[8-9]\.py$' {posargs}
[testenv:py37-gcp-pytest]
setenv =
RUN_SKIPPED_PY3_TESTS=0
extras = test,gcp
commands =
{toxinidir}/scripts/run_pytest.sh {envname} "{posargs}"
[testenv:py27-lint]
# Checks for py2 syntax errors
deps =
flake8==3.5.0
commands =
time {toxinidir}/scripts/run_mini_py2lint.sh
[testenv:py27-lint3]
# Checks for py2/3 compatibility issues
deps =
pycodestyle==2.3.1
pylint==1.9.3
future==0.16.0
isort==4.2.15
flake8==3.5.0
commands =
pylint --version
time {toxinidir}/scripts/run_pylint_2to3.sh
[testenv:py37-lint]
deps =
astroid<2.4,>=2.3.0
pycodestyle==2.3.1
pylint==2.4.2
future==0.16.0
isort==4.2.15
flake8==3.5.0
commands =
pylint --version
time {toxinidir}/scripts/run_pylint.sh
[testenv:docs]
extras = test,gcp,docs,interactive
deps =
Sphinx==1.6.5
sphinx_rtd_theme==0.2.4
commands =
time {toxinidir}/scripts/generate_pydoc.sh
[testenv:cover]
# This is not included in envlist which is defined in [tox].
deps =
coverage==4.4.1
commands =
# Clean up previously collected data.
coverage erase
coverage run setup.py test
# Print coverage report to STDOUT
coverage report --skip-covered
# Generate report in xml format
coverage xml