#
# 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.
#
[testenv]
commands =
    {toxinidir}/superset/bin/superset db upgrade
    {toxinidir}/superset/bin/superset init
    pytest -ra -q tests/load_examples_test.py
    # use -s to be able to use break pointers.
    # no args or tests/* can be passed as an argument to run all tests
    pytest --ignore=load_examples_test {posargs}
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
    mysql: .[mysql]
    postgres: .[postgres]
setenv =
    PYTHONPATH = {toxinidir}
    SUPERSET_CONFIG = tests.superset_test_config
    SUPERSET_HOME = {envtmpdir}
    mysql: SUPERSET__SQLALCHEMY_DATABASE_URI = mysql://mysqluser:mysqluserpassword@localhost/superset?charset=utf8
    postgres: SUPERSET__SQLALCHEMY_DATABASE_URI = postgresql+psycopg2://superset:superset@localhost/test
    sqlite: SUPERSET__SQLALCHEMY_DATABASE_URI = sqlite:////{envtmpdir}/superset.db
whitelist_externals =
    npm

[testenv:black]
commands =
    black --check setup.py superset tests
deps =
    -rrequirements-dev.txt

[testenv:cypress-dashboard]
commands =
    npm install -g npm@'>=6.5.0'
    pip install -e {toxinidir}/
    {toxinidir}/superset-frontend/cypress_build.sh dashboard
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
setenv =
    PYTHONPATH = {toxinidir}
    SUPERSET_CONFIG = tests.superset_test_config
    SUPERSET_HOME = {envtmpdir}

[testenv:cypress-explore]
commands =
    npm install -g npm@'>=6.5.0'
    pip install -e {toxinidir}/
    {toxinidir}/superset-frontend/cypress_build.sh explore
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
setenv =
    PYTHONPATH = {toxinidir}
    SUPERSET_CONFIG = tests.superset_test_config
    SUPERSET_HOME = {envtmpdir}

[testenv:cypress-sqllab]
commands =
    npm install -g npm@'>=6.5.0'
    pip install -e {toxinidir}/
    {toxinidir}/superset-frontend/cypress_build.sh sqllab
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
setenv =
    PYTHONPATH = {toxinidir}
    SUPERSET_CONFIG = tests.superset_test_config
    SUPERSET_HOME = {envtmpdir}

[testenv:cypress-sqllab-backend-persist]
commands =
    npm install -g npm@'>=6.5.0'
    pip install -e {toxinidir}/
    {toxinidir}/superset-frontend/cypress_build.sh sqllab
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
setenv =
    PYTHONPATH = {toxinidir}
    SUPERSET_CONFIG = tests.superset_test_config_sqllab_backend_persist
    SUPERSET_HOME = {envtmpdir}

[testenv:docs]
commands =
    sphinx-build -b html docs _build/html -W
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
    -rdocs/requirements.txt

[testenv:eslint]
changedir = {toxinidir}/superset-frontend
commands =
    npm run lint
deps =

[testenv:fossa]
commands =
    {toxinidir}/scripts/fossa.sh
deps =
passenv = *

[testenv:isort]
commands =
    isort --check-only --recursive setup.py superset tests
deps =
    -rrequirements-dev.txt

[testenv:javascript]
commands =
    npm install -g npm@'>=6.5.0'
    {toxinidir}/superset-frontend/js_build.sh
deps =

[testenv:license-check]
commands =
    {toxinidir}/scripts/check_license.sh
passenv = *
whitelist_externals =
    {toxinidir}/scripts/check_license.sh
deps =

[testenv:mypy]
commands =
    mypy setup.py superset tests
deps =
    -rrequirements-dev.txt

[testenv:pylint]
commands =
    pylint superset
deps =
    -rrequirements.txt
    -rrequirements-dev.txt

[testenv:thumbnails]
setenv =
    SUPERSET_CONFIG = tests.superset_test_config_thumbnails
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
    .[postgres]

[tox]
envlist =
    black
    cypress-dashboard
    cypress-explore
    cypress-sqllab
    cypress-sqllab-backend-persist
    docs
    eslint
    fossa
    isort
    javascript
    license-check
    mypy
    pylint
skipsdist = true
