# tox.ini
# Run tests of wexpect in multiple configuration.

[tox]
# The following configuration will run automatically.
envlist = py{37}-{legacy_wexpect,spawn_pipe,spawn_socket},installed,pyinstaller


[testenv]
description = Unit tests

# Set environment variables to select the proper configuration for each envirnment.
setenv =
    spawn_pipe:     WEXPECT_SPAWN_CLASS=SpawnPipe
    legacy_wexpect: WEXPECT_SPAWN_CLASS=legacy_wexpect
    spawn_socket:   WEXPECT_SPAWN_CLASS=SpawnSocket

commands =
    # install the dependencies:
    pip install .[test]

    # Run the test itself
    coverage run --parallel-mode -m unittest

    # Combine the parallel results
    coverage combine

    # Dump coverage summary to console
    coverage report --omit=tests/*,site-packages/*

    # Convert coverage report to standard xml formula the filename includes the tox environment name
    # https://tox.readthedocs.io/en/latest/config.html#environment-variable-substitutions
    coverage xml --omit=tests/*,site-packages -o {env:TOX_ENV_NAME}_coverage.xml


[testenv:installed]
# normal tests test the cloned files. This testenv tests the installation itself, with the default
# spawn class.
description = Unit tests installed, and default spawn class.

changedir = test_01_installed

whitelist_externals =
    cp

commands =
    # copy all testcase into working dir
    cp -r ../tests tests


    # Run the test itself. Running all tests is not needed, because it just test the installation,
    # not functions.
    python -m unittest tests.test_misc


[testenv:pyinstaller]
# Test if wexpect working with pyinstaller. See #12 for more details.
description = Unit tests pyinstaller

whitelist_externals =
    pyinstaller
    pyinstaller_test

setenv =
    WEXPECT_SPAWN_CLASS=SpawnPipe

commands =
    # install the dependencies:
    pip install .[test]

    # create wexpect executable for console-reader.
    pyinstaller wexpect.spec

    # create test executable, to thest the console-reader
    pyinstaller tests/pyinstaller_test.py

    # run test:
    dist\pyinstaller_test\pyinstaller_test.exe