[tox]
minversion = 1.6
envlist = linters,gerrit,grafyaml,jjb,jenkins-project,zuul
skipsdist = True

[testenv]
deps = -r{toxinidir}/test-requirements.txt

[testenv:linters]
commands =
  {toxinidir}/tools/run-bashate.sh
  flake8

[testenv:gerrit]
deps = PyYAML
     GitPython
commands =
  {toxinidir}/tools/check_valid_gerrit_projects.py gerrit/projects.yaml gerrit/acls
  {toxinidir}/tools/check_projects_yaml_alphabetized.sh gerrit/projects.yaml
  {toxinidir}/tools/check_valid_gerrit_config.sh gerrit/acls/
  {toxinidir}/tools/check_gerrit_projects_changed.sh

[testenv:venv]
commands = {posargs}

[testenv:docs]
commands = python setup.py build_sphinx

[testenv:irc]
deps = PyYAML
     irc
commands =
  {toxinidir}/tools/check_irc_access.py -l accessbot/channels.yaml openstackinfra
  {toxinidir}/tools/irc_tests.py
  {toxinidir}/tools/check-channels-yaml.sh

[flake8]
show-source = True
exclude = .tox,.test
ignore = E125,H
select = H231

[testenv:grafyaml]
basepython = python2.7
commands = {toxinidir}/tools/grafyaml-validate.sh

[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files.
deps = bindep
commands = bindep test

[testenv:jjb]
basepython = python2.7
deps = jenkins-job-builder
whitelist_externals =
  mkdir
  rm
commands =
  rm -rf {envdir}/tmp
  mkdir -p {envdir}/tmp/jobs
  pip install -U jenkins/modules/jjb_afs
  jenkins-jobs -l debug test -o {envdir}/tmp/jobs jenkins/jobs

[testenv:jenkins-project]
deps =
   PyYAML
   voluptuous
   jenkins-job-builder
commands =
  {toxinidir}/tools/jenkins-projects-checks.py

[testenv:zuul]
basepython = python2.7
deps =
     jenkins-job-builder==1.6.1
     zuul
whitelist_externals =
  bash
  find
  jenkins-jobs
  mkdir
  rm
commands =
  rm -rf {envdir}/tmp
  mkdir -p {envdir}/tmp/jobs
  pip install -U jenkins/modules/jjb_afs
  jenkins-jobs -l debug test -o {envdir}/tmp/jobs jenkins/jobs
  bash -c 'find {envdir}/tmp/jobs -printf "%f\n" > {envdir}/tmp/job-list.txt'
  zuul-server -c tools/zuul.conf-sample -l zuul/layout.yaml -t {envdir}/tmp/job-list.txt
  {toxinidir}/tools/layout-checks.py {envdir}/tmp/job-list.txt

[testenv:infra-docs]
deps =
   Jinja2
   PyYAML
commands = {toxinidir}/docs-site/generate_infra_index.py {toxinidir}/docs-site/infra-documents.yaml

[testenv:specs]
deps =
   Jinja2
   PyYAML
commands = {toxinidir}/specs/generate_specs_site.py {toxinidir}/specs/specs.yaml

[testenv:dib]
deps =
   diskimage-builder
changedir = {toxinidir}/nodepool
commands = env ELEMENTS_DIR=elements dib-lint

[testenv:nodepool]
commands = nodepool -c {toxinidir}/nodepool/nodepool.yaml config-validate