[tox] skipsdist=True envlist = py38, pep8, bandit [testenv] setenv= PYTHONWARNING=all LANG=C.UTF-8 LC_ALL=C.UTF-8 deps = -r{toxinidir}/requirements-frozen.txt -r{toxinidir}/test-requirements.txt [testenv:freeze-bionic] recreate = True allowlist_externals= rm sh deps= -r{toxinidir}/requirements-direct.txt commands= rm -f {toxinidir}/requirements-frozen-bionic.txt sh -c "pip freeze --all | grep -vE 'shipyard_airflow|pyinotify|pkg-resources' > requirements-frozen-bionic.txt" [testenv:freeze] recreate = True allowlist_externals= rm sh deps= -r{toxinidir}/requirements-direct.txt commands= rm -f {toxinidir}/requirements-frozen.txt sh -c "pip freeze --all | grep -vE 'shipyard_airflow|pyinotify|pkg-resources' > requirements-frozen.txt" [testenv:py38] skipsdist=True setenv= SLUGIFY_USES_TEXT_UNIDECODE=yes basepython=python3.8 allowlist_externals= bash airflow commands = bash -c "rm -f $HOME/airflow/airflow.db" pip install -r{toxinidir}/test-requirements.txt airflow initdb airflow run example_bash_operator runme_0 2018-01-01 airflow backfill example_bash_operator -s 2018-01-01 -e 2018-01-02 airflow dag_state example_bash_operator 2018-01-01 pytest {posargs} -vv [testenv:cover] skipsdist=True setenv= SLUGIFY_USES_TEXT_UNIDECODE=yes allowlist_externals= bash airflow commands = bash -c "rm -f $HOME/airflow/airflow.db" pip install -r{toxinidir}/test-requirements.txt airflow initdb airflow run example_bash_operator runme_0 2018-01-01 airflow backfill example_bash_operator -s 2018-01-01 -e 2018-01-02 airflow dag_state example_bash_operator 2018-01-01 pytest \ {posargs} \ --cov-branch \ --cov-report=term-missing:skip-covered \ --cov-config=.coveragerc \ --cov=shipyard_airflow \ --cov-report=html \ -vv [testenv:py36] skipsdist=True basepython=python3.6 deps = -r{toxinidir}/requirements-frozen-bionic.txt setenv= SLUGIFY_USES_TEXT_UNIDECODE=yes allowlist_externals= bash airflow commands = bash -c "rm -f $HOME/airflow/airflow.db" pip install -r{toxinidir}/test-requirements.txt airflow initdb airflow run example_bash_operator runme_0 2018-01-01 airflow backfill example_bash_operator -s 2018-01-01 -e 2018-01-02 airflow dag_state example_bash_operator 2018-01-01 pytest {posargs} -vv [testenv:pep8] deps= flake8>=3.3.0 bandit>=1.5.0 commands = flake8 {toxinidir}/shipyard_airflow bandit -r shipyard_airflow [testenv:bandit] skipsdist= True commands = bandit -r shipyard_airflow -n 5 [testenv:genconfig] setenv= SLUGIFY_USES_TEXT_UNIDECODE=yes deps = -r{toxinidir}/test-requirements.txt -r{toxinidir}/requirements-frozen.txt commands = pip install . --use-pep517 oslo-config-generator --config-file=generator/config-generator.conf [testenv:genpolicy] setenv= SLUGIFY_USES_TEXT_UNIDECODE=yes deps = -r{toxinidir}/test-requirements.txt -r{toxinidir}/requirements-frozen.txt commands = pip install . --use-pep517 oslopolicy-sample-generator --config-file=generator/policy-generator.conf [testenv:gen_all] # Combined to make these run together instead of setting up separately skipsdist=True setenv= SLUGIFY_USES_TEXT_UNIDECODE=yes deps = -r{toxinidir}/test-requirements.txt -r{toxinidir}/requirements-frozen.txt commands = pip install . --use-pep517 oslo-config-generator --config-file=generator/config-generator.conf oslopolicy-sample-generator --config-file=generator/policy-generator.conf [flake8] filename = *.py # NOTE(Bryan Strassner) ignoring F841 because of the airflow example pattern # of naming variables even if they aren't used for DAGs and Operators. # Doing so adds readability and context in this case. # TODO(Bryan Strassner) The hacking rules defined as ignored below in many # cases need to be un-ignored and fixed up. These are ignored because of # the method in which test requirements bring in the hacking rules from # other projects. # W504 line break after binary operator # TODO(rb560u): Address E722 violations ignore = F841, H101, H201, H210, H238, H301, H304, H306, H401, H403, H404, H405, W504, E722 # NOTE(Bryan Strassner) excluding 3rd party and generated code that is brought into the # codebase. exclude = .venv,.git,.tox,build,dist,*lib/python*,*egg,alembic/env.py,docs