medmunds: Heh. I *did* run `tox -e fix-lint` before committing, and it didn't make any changes or complain. (Because that env is actually spelled `fix_lint`, and there's [this bug](#1160), you see, where typos in envs aren't caught.)

But @codeclimate I stand by the readability of the test case I added. 😛 
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index ce823339..7c9d371a 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -91,12 +91,12 @@ Short version
 #. `Fork the repository <https://help.github.com/articles/fork-a-repo/>`_.
 #. Make your changes.
 #. open a `pull request <https://help.github.com/articles/about-pull-requests/>`_ targeting the ``master`` branch.
-#. Follow **PEP-8**. There's a ``tox`` command to help fixing it: ``tox -e fix-lint``.
+#. Follow **PEP-8**. There's a ``tox`` command to help fixing it: ``tox -e fix_lint``.
    You can also add a pre commit hook to your local clone to run the style checks and fixes
-   (see hint after running ``tox -e fix-lint``)
+   (see hint after running ``tox -e fix_lint``)
 #. Tests for tox are (obviously) run using ``tox``::
 
-    tox -e fix-lint,py27,py36
+    tox -e fix_lint,py27,py36
 
    The test environments above are usually enough to cover most cases locally.
 
@@ -149,7 +149,7 @@ Here is a simple overview, with tox-specific bits:
    You need to have Python 2.7 and 3.6 available in your system.  Now
    running tests is as simple as issuing this command::
 
-    $ tox -e fix-lint,py27,py36
+    $ tox -e fix_lint,py27,py36
 
    This command will run tests via the "tox" tool against Python 2.7 and 3.6
    and also perform style checks with some automatic fixes.
diff --git a/docs/changelog/1160.bugfix.rst b/docs/changelog/1160.bugfix.rst
new file mode 100644
index 00000000..a207ef0b
--- /dev/null
+++ b/docs/changelog/1160.bugfix.rst
@@ -0,0 +1,1 @@
+Fix missing error for ``tox -e unknown`` when tox.ini declares ``envlist``. - by :user:`medmunds`
diff --git a/src/tox/config/__init__.py b/src/tox/config/__init__.py
index fe4f4bb0..ba013d9e 100644
--- a/src/tox/config/__init__.py
+++ b/src/tox/config/__init__.py
@@ -1053,7 +1053,7 @@ class ParseIni(object):
         # factors stated in config envlist
         stated_envlist = reader.getstring("envlist", replace=False)
         if stated_envlist:
-            for env in config.envlist:
+            for env in _split_env(stated_envlist):
                 known_factors.update(env.split("-"))
 
         # configure testenvs

tox 3.7.0 doesn't fail on undefined factor (where 3.6 did)
In tox 3.6 and earlier, if your tox.ini delcares an `envlist`, running `tox -e py36-someUndefinedFactor` would exit with "ERROR: unknown environment 'py36-someUndefinedFactor'" (and without creating a venv).

In tox 3.7.0, the same command seems to ignore "someUndefinedFactor", and instead creates a venv and attempts to run the commands in it.

This makes it difficult to catch typos in commands or tox.ini.

## Reproduction

(I'm on Python 3.7.1, but don't think this matters. Full system info below.)

1. Create an empty project with this tox.ini. It *must* include an envlist to reproduce this bug. Notice the envlist *doesn't* cover "django22":
```ini
[tox]
envlist =
    py{36,37}-django{20,21}

[testenv]
deps =
    django20: django~=2.0.0
    django21: django~=2.1.0
skip_install = true
commands =
    python -c 'import django; print(django.__version__)'
```

2. `pip install tox==3.6.1`

3. Run `tox -e py36-django22` (django22 is *not* in the envlist).
   Results: "ERROR: unknown environment 'py36-django22'" (as expected)

4. `pip install tox==3.7.0`

5. Run `tox -e py36-django22` again.
   Expected: same unknown environment error as with tox 3.6.1.
   Actual results: tox attempts to create the environment and run the commands in it:
```terminal
py36-django22 create: .../.tox/py36-django22
py36-django22 run-test-pre: PYTHONHASHSEED='1187325010'
py36-django22 runtests: commands[0] | python -c 'import django; print(django.__version__)'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'django'
ERROR: InvocationError for command '.../.tox/py36-django22/bin/python -c import django; print(django.__version__)' (exited with code 1)
```

## System info

macOS 10.14.2 
Python 3.7.1
pip list
```terminal
Package    Version
---------- -------
filelock   3.0.10
pip        19.0.2
pluggy     0.8.1
py         1.7.0
setuptools 40.8.0
six        1.12.0
toml       0.10.0
tox        3.6.1
virtualenv 16.4.0
wheel      0.32.3
```


diff --git a/tests/unit/config/test_config.py b/tests/unit/config/test_config.py
index 7cecd418..ed29a5e2 100644
--- a/tests/unit/config/test_config.py
+++ b/tests/unit/config/test_config.py
@@ -2147,6 +2147,15 @@ class TestGlobalOptions:
         env = config.envconfigs["py"]
         assert str(env.basepython) == sys.executable
 
+    def test_no_implicit_venv_from_cli_with_envlist(self, newconfig):
+        # See issue 1160.
+        inisource = """
+            [tox]
+            envlist = stated-factors
+        """
+        config = newconfig(["-etypo-factor"], inisource)
+        assert "typo-factor" not in config.envconfigs
+
     def test_correct_basepython_chosen_from_default_factors(self, newconfig):
         envlist = list(tox.PYTHON.DEFAULT_FACTORS.keys())
         config = newconfig([], "[tox]\nenvlist={}".format(", ".join(envlist)))
diff --git a/tests/unit/test_z_cmdline.py b/tests/unit/test_z_cmdline.py
index 2e29f1b7..7ade17aa 100644
--- a/tests/unit/test_z_cmdline.py
+++ b/tests/unit/test_z_cmdline.py
@@ -280,6 +280,21 @@ def test_unknown_environment(cmd, initproj):
     assert result.out == "ERROR: unknown environment 'qpwoei'\n"
 
 
+def test_unknown_environment_with_envlist(cmd, initproj):
+    initproj(
+        "pkg123",
+        filedefs={
+            "tox.ini": """
+            [tox]
+            envlist = py{36,37}-django{20,21}
+        """
+        },
+    )
+    result = cmd("-e", "py36-djagno21")
+    assert result.ret, "{}\n{}".format(result.err, result.out)
+    assert result.out == "ERROR: unknown environment 'py36-djagno21'\n"
+
+
 def test_minimal_setup_py_empty(cmd, initproj):
     initproj(
         "pkg123-0.7",

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
coverage==6.2
distlib==0.3.9
execnet==1.9.0
filelock==3.4.1
importlib-metadata==4.8.3
importlib-resources==5.4.0
iniconfig==1.1.1
packaging==21.3
platformdirs==2.4.0
pluggy==0.13.1
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-asyncio==0.16.0
pytest-cov==4.0.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
six==1.17.0
toml==0.10.2
tomli==1.2.3
-e git+https://github.com/tox-dev/tox.git@984ce025ad8e75e323877fb5f34128abcfba950d#egg=tox
typing_extensions==4.1.1
virtualenv==20.17.1
zipp==3.6.0

name: tox
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - coverage==6.2
      - distlib==0.3.9
      - execnet==1.9.0
      - filelock==3.4.1
      - importlib-metadata==4.8.3
      - importlib-resources==5.4.0
      - iniconfig==1.1.1
      - packaging==21.3
      - platformdirs==2.4.0
      - pluggy==0.13.1
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-asyncio==0.16.0
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - six==1.17.0
      - toml==0.10.2
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - virtualenv==20.17.1
      - zipp==3.6.0
prefix: /opt/conda/envs/tox

tests/unit/config/test_config.py::TestGlobalOptions::test_no_implicit_venv_from_cli_with_envlist tests/unit/test_z_cmdline.py::test_unknown_environment_with_envlist
tests/unit/config/test_config.py::TestVenvConfig::test_force_dep_with_url tests/unit/test_z_cmdline.py::test_venv_special_chars_issue252
tests/unit/config/test_config.py::TestVenvConfig::test_config_parsing_minimal tests/unit/config/test_config.py::TestVenvConfig::test_config_parsing_multienv tests/unit/config/test_config.py::TestVenvConfig::test_envdir_set_manually tests/unit/config/test_config.py::TestVenvConfig::test_envdir_set_manually_with_substitutions tests/unit/config/test_config.py::TestVenvConfig::test_force_dep_version tests/unit/config/test_config.py::TestVenvConfig::test_process_deps tests/unit/config/test_config.py::TestVenvConfig::test_is_same_dep tests/unit/config/test_config.py::TestConfigPlatform::test_config_parse_platform tests/unit/config/test_config.py::TestConfigPlatform::test_config_parse_platform_rex tests/unit/config/test_config.py::TestConfigPlatform::test_config_parse_platform_with_factors[win] tests/unit/config/test_config.py::TestConfigPlatform::test_config_parse_platform_with_factors[lin] tests/unit/config/test_config.py::TestConfigPlatform::test_config_parse_platform_with_factors[osx] tests/unit/config/test_config.py::TestConfigPackage::test_defaults tests/unit/config/test_config.py::TestConfigPackage::test_defaults_distshare tests/unit/config/test_config.py::TestConfigPackage::test_defaults_changed_dir tests/unit/config/test_config.py::TestConfigPackage::test_project_paths tests/unit/config/test_config.py::TestParseconfig::test_search_parents tests/unit/config/test_config.py::TestParseconfig::test_explicit_config_path tests/unit/config/test_config.py::test_get_homedir tests/unit/config/test_config.py::TestGetcontextname::test_blank tests/unit/config/test_config.py::TestGetcontextname::test_jenkins tests/unit/config/test_config.py::TestGetcontextname::test_hudson_legacy tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_command_substitution_from_other_section tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_command_substitution_from_other_section_multiline tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_command_substitution_from_other_section_posargs tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_command_section_and_posargs_substitution tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_command_env_substitution tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_command_env_substitution_global tests/unit/config/test_config.py::TestIniParserAgainstCommandsKey::test_regression_issue595 tests/unit/config/test_config.py::TestIniParser::test_getstring_single tests/unit/config/test_config.py::TestIniParser::test_missing_substitution tests/unit/config/test_config.py::TestIniParser::test_getstring_fallback_sections tests/unit/config/test_config.py::TestIniParser::test_getstring_substitution tests/unit/config/test_config.py::TestIniParser::test_getlist tests/unit/config/test_config.py::TestIniParser::test_getdict tests/unit/config/test_config.py::TestIniParser::test_normal_env_sub_works tests/unit/config/test_config.py::TestIniParser::test_missing_env_sub_raises_config_error_in_non_testenv tests/unit/config/test_config.py::TestIniParser::test_missing_env_sub_populates_missing_subs tests/unit/config/test_config.py::TestIniParser::test_getstring_environment_substitution_with_default tests/unit/config/test_config.py::TestIniParser::test_value_matches_section_substitution tests/unit/config/test_config.py::TestIniParser::test_value_doesn_match_section_substitution tests/unit/config/test_config.py::TestIniParser::test_getstring_other_section_substitution tests/unit/config/test_config.py::TestIniParser::test_argvlist tests/unit/config/test_config.py::TestIniParser::test_argvlist_windows_escaping tests/unit/config/test_config.py::TestIniParser::test_argvlist_multiline tests/unit/config/test_config.py::TestIniParser::test_argvlist_quoting_in_command tests/unit/config/test_config.py::TestIniParser::test_argvlist_comment_after_command tests/unit/config/test_config.py::TestIniParser::test_argvlist_command_contains_hash tests/unit/config/test_config.py::TestIniParser::test_argvlist_positional_substitution tests/unit/config/test_config.py::TestIniParser::test_argvlist_quoted_posargs tests/unit/config/test_config.py::TestIniParser::test_argvlist_posargs_with_quotes tests/unit/config/test_config.py::TestIniParser::test_positional_arguments_are_only_replaced_when_standing_alone tests/unit/config/test_config.py::TestIniParser::test_posargs_are_added_escaped_issue310 tests/unit/config/test_config.py::TestIniParser::test_substitution_with_multiple_words tests/unit/config/test_config.py::TestIniParser::test_getargv tests/unit/config/test_config.py::TestIniParser::test_getpath tests/unit/config/test_config.py::TestIniParser::test_getbool tests/unit/config/test_config.py::TestIniParserPrefix::test_basic_section_access tests/unit/config/test_config.py::TestIniParserPrefix::test_fallback_sections tests/unit/config/test_config.py::TestIniParserPrefix::test_value_matches_prefixed_section_substitution tests/unit/config/test_config.py::TestIniParserPrefix::test_value_doesn_match_prefixed_section_substitution tests/unit/config/test_config.py::TestIniParserPrefix::test_other_section_substitution tests/unit/config/test_config.py::TestConfigTestEnv::test_commentchars_issue33 tests/unit/config/test_config.py::TestConfigTestEnv::test_defaults tests/unit/config/test_config.py::TestConfigTestEnv::test_sitepackages_switch tests/unit/config/test_config.py::TestConfigTestEnv::test_installpkg_tops_develop tests/unit/config/test_config.py::TestConfigTestEnv::test_specific_command_overrides tests/unit/config/test_config.py::TestConfigTestEnv::test_whitelist_externals tests/unit/config/test_config.py::TestConfigTestEnv::test_changedir tests/unit/config/test_config.py::TestConfigTestEnv::test_ignore_errors tests/unit/config/test_config.py::TestConfigTestEnv::test_envbindir tests/unit/config/test_config.py::TestConfigTestEnv::test_envbindir_jython[jython] tests/unit/config/test_config.py::TestConfigTestEnv::test_envbindir_jython[pypy] tests/unit/config/test_config.py::TestConfigTestEnv::test_envbindir_jython[pypy3] tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_as_multiline_list[win32] tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_as_multiline_list[linux2] tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_as_space_separated_list[win32] tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_as_space_separated_list[linux2] tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_with_factor tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_from_global_env tests/unit/config/test_config.py::TestConfigTestEnv::test_passenv_glob_from_global_env tests/unit/config/test_config.py::TestConfigTestEnv::test_changedir_override tests/unit/config/test_config.py::TestConfigTestEnv::test_install_command_setting tests/unit/config/test_config.py::TestConfigTestEnv::test_install_command_must_contain_packages tests/unit/config/test_config.py::TestConfigTestEnv::test_install_command_substitutions tests/unit/config/test_config.py::TestConfigTestEnv::test_pip_pre tests/unit/config/test_config.py::TestConfigTestEnv::test_pip_pre_cmdline_override tests/unit/config/test_config.py::TestConfigTestEnv::test_simple tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_error tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_defaults tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_notfound_issue246 tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_notfound_issue515 tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_nested_env_defaults tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_positional tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_noargs_issue240 tests/unit/config/test_config.py::TestConfigTestEnv::test_substitution_double tests/unit/config/test_config.py::TestConfigTestEnv::test_posargs_backslashed_or_quoted tests/unit/config/test_config.py::TestConfigTestEnv::test_rewrite_posargs tests/unit/config/test_config.py::TestConfigTestEnv::test_rewrite_simple_posargs tests/unit/config/test_config.py::TestConfigTestEnv::test_take_dependencies_from_other_testenv[envlist0-deps0] tests/unit/config/test_config.py::TestConfigTestEnv::test_take_dependencies_from_other_testenv[envlist1-deps1] tests/unit/config/test_config.py::TestConfigTestEnv::test_regression_test_issue_706[envlist0] tests/unit/config/test_config.py::TestConfigTestEnv::test_factor_expansion tests/unit/config/test_config.py::TestConfigTestEnv::test_factors_support_curly_braces tests/unit/config/test_config.py::TestConfigTestEnv::test_do_not_substitute_more_than_needed tests/unit/config/test_config.py::TestConfigTestEnv::test_take_dependencies_from_other_section tests/unit/config/test_config.py::TestConfigTestEnv::test_multilevel_substitution tests/unit/config/test_config.py::TestConfigTestEnv::test_recursive_substitution_cycle_fails tests/unit/config/test_config.py::TestConfigTestEnv::test_single_value_from_other_secton tests/unit/config/test_config.py::TestConfigTestEnv::test_factors tests/unit/config/test_config.py::TestConfigTestEnv::test_factor_ops tests/unit/config/test_config.py::TestConfigTestEnv::test_envconfigs_based_on_factors tests/unit/config/test_config.py::TestConfigTestEnv::test_default_factors tests/unit/config/test_config.py::TestConfigTestEnv::test_default_factors_conflict tests/unit/config/test_config.py::TestConfigTestEnv::test_default_factors_conflict_lying_name tests/unit/config/test_config.py::TestConfigTestEnv::test_default_single_digit_factors tests/unit/config/test_config.py::TestConfigTestEnv::test_default_factors_conflict_ignore tests/unit/config/test_config.py::TestConfigTestEnv::test_factors_in_boolean tests/unit/config/test_config.py::TestConfigTestEnv::test_factors_in_setenv tests/unit/config/test_config.py::TestConfigTestEnv::test_factor_use_not_checked tests/unit/config/test_config.py::TestConfigTestEnv::test_factors_groups_touch tests/unit/config/test_config.py::TestConfigTestEnv::test_period_in_factor tests/unit/config/test_config.py::TestConfigTestEnv::test_ignore_outcome tests/unit/config/test_config.py::TestGlobalOptions::test_notest tests/unit/config/test_config.py::TestGlobalOptions::test_verbosity tests/unit/config/test_config.py::TestGlobalOptions::test_quiet[args0-0] tests/unit/config/test_config.py::TestGlobalOptions::test_quiet[args1-1] tests/unit/config/test_config.py::TestGlobalOptions::test_quiet[args2-2] tests/unit/config/test_config.py::TestGlobalOptions::test_quiet[args3-3] tests/unit/config/test_config.py::TestGlobalOptions::test_substitution_jenkins_default tests/unit/config/test_config.py::TestGlobalOptions::test_substitution_jenkins_context tests/unit/config/test_config.py::TestGlobalOptions::test_sdist_specification tests/unit/config/test_config.py::TestGlobalOptions::test_env_selection_with_section_name tests/unit/config/test_config.py::TestGlobalOptions::test_env_selection_expanded_envlist tests/unit/config/test_config.py::TestGlobalOptions::test_py_venv tests/unit/config/test_config.py::TestGlobalOptions::test_correct_basepython_chosen_from_default_factors tests/unit/config/test_config.py::TestGlobalOptions::test_envlist_expansion tests/unit/config/test_config.py::TestGlobalOptions::test_envlist_cross_product tests/unit/config/test_config.py::TestGlobalOptions::test_envlist_multiline tests/unit/config/test_config.py::TestGlobalOptions::test_minversion tests/unit/config/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_true tests/unit/config/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_false tests/unit/config/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_no_arg tests/unit/config/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_not_specified tests/unit/config/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_overrides_true tests/unit/config/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_overrides_false tests/unit/config/test_config.py::TestGlobalOptions::test_defaultenv_commandline tests/unit/config/test_config.py::TestGlobalOptions::test_defaultenv_partial_override tests/unit/config/test_config.py::TestHashseedOption::test_default tests/unit/config/test_config.py::TestHashseedOption::test_passing_integer tests/unit/config/test_config.py::TestHashseedOption::test_passing_string tests/unit/config/test_config.py::TestHashseedOption::test_passing_empty_string tests/unit/config/test_config.py::TestHashseedOption::test_passing_no_argument tests/unit/config/test_config.py::TestHashseedOption::test_setenv tests/unit/config/test_config.py::TestHashseedOption::test_noset tests/unit/config/test_config.py::TestHashseedOption::test_noset_with_setenv tests/unit/config/test_config.py::TestHashseedOption::test_one_random_hashseed tests/unit/config/test_config.py::TestHashseedOption::test_setenv_in_one_testenv tests/unit/config/test_config.py::TestSetenv::test_getdict_lazy tests/unit/config/test_config.py::TestSetenv::test_getdict_lazy_update tests/unit/config/test_config.py::TestSetenv::test_setenv_uses_os_environ tests/unit/config/test_config.py::TestSetenv::test_setenv_default_os_environ tests/unit/config/test_config.py::TestSetenv::test_setenv_uses_other_setenv tests/unit/config/test_config.py::TestSetenv::test_setenv_recursive_direct tests/unit/config/test_config.py::TestSetenv::test_setenv_overrides tests/unit/config/test_config.py::TestSetenv::test_setenv_with_envdir_and_basepython tests/unit/config/test_config.py::TestSetenv::test_setenv_ordering_1 tests/unit/config/test_config.py::TestSetenv::test_setenv_cross_section_subst_issue294 tests/unit/config/test_config.py::TestSetenv::test_setenv_cross_section_subst_twice tests/unit/config/test_config.py::TestSetenv::test_setenv_cross_section_mixed tests/unit/config/test_config.py::TestIndexServer::test_indexserver tests/unit/config/test_config.py::TestIndexServer::test_parse_indexserver tests/unit/config/test_config.py::TestIndexServer::test_multiple_homedir_relative_local_indexservers tests/unit/config/test_config.py::TestConfigConstSubstitutions::test_replace_pathsep_unix[:] tests/unit/config/test_config.py::TestConfigConstSubstitutions::test_replace_pathsep_unix[;] tests/unit/config/test_config.py::TestConfigConstSubstitutions::test_pathsep_regex tests/unit/config/test_config.py::TestParseEnv::test_parse_recreate tests/unit/config/test_config.py::TestCmdInvocation::test_help tests/unit/config/test_config.py::TestCmdInvocation::test_version_simple tests/unit/config/test_config.py::TestCmdInvocation::test_version_no_plugins tests/unit/config/test_config.py::TestCmdInvocation::test_version_with_normal_plugin tests/unit/config/test_config.py::TestCmdInvocation::test_version_with_fileless_module tests/unit/config/test_config.py::TestCmdInvocation::test_config_specific_ini tests/unit/config/test_config.py::TestCmdInvocation::test_no_tox_ini tests/unit/config/test_config.py::TestCmdInvocation::test_override_workdir tests/unit/config/test_config.py::TestCmdInvocation::test_showconfig_with_force_dep_version tests/unit/config/test_config.py::test_env_spec[-e tests/unit/config/test_config.py::TestCommandParser::test_command_parser_for_word tests/unit/config/test_config.py::TestCommandParser::test_command_parser_for_posargs tests/unit/config/test_config.py::TestCommandParser::test_command_parser_for_multiple_words tests/unit/config/test_config.py::TestCommandParser::test_command_parser_for_substitution_with_spaces tests/unit/config/test_config.py::TestCommandParser::test_command_parser_with_complex_word_set tests/unit/config/test_config.py::TestCommandParser::test_command_with_runs_of_whitespace tests/unit/config/test_config.py::TestCommandParser::test_command_with_split_line_in_subst_arguments tests/unit/config/test_config.py::TestCommandParser::test_command_parsing_for_issue_10 tests/unit/config/test_config.py::TestCommandParser::test_commands_with_backslash tests/unit/config/test_config.py::test_plugin_require tests/unit/config/test_config.py::test_isolated_build_env_cannot_be_in_envlist tests/unit/config/test_config.py::test_config_via_pyproject_legacy tests/unit/config/test_config.py::test_config_bad_pyproject_specified tests/unit/config/test_config.py::test_config_bad_config_type_specified tests/unit/config/test_config.py::test_interactive_na tests/unit/config/test_config.py::test_interactive_available tests/unit/config/test_config.py::test_interactive tests/unit/config/test_config.py::test_config_current_py tests/unit/config/test_config.py::test_posargs_relative_changedir tests/unit/test_z_cmdline.py::TestSession::test_log_pcall tests/unit/test_z_cmdline.py::TestSession::test_summary_status tests/unit/test_z_cmdline.py::TestSession::test_getvenv tests/unit/test_z_cmdline.py::test_notoxini_help_still_works tests/unit/test_z_cmdline.py::test_notoxini_help_ini_still_works tests/unit/test_z_cmdline.py::test_envdir_equals_toxini_errors_out tests/unit/test_z_cmdline.py::test_run_custom_install_command_error tests/unit/test_z_cmdline.py::test_unknown_interpreter_and_env tests/unit/test_z_cmdline.py::test_unknown_interpreter tests/unit/test_z_cmdline.py::test_skip_platform_mismatch tests/unit/test_z_cmdline.py::test_skip_unknown_interpreter tests/unit/test_z_cmdline.py::test_skip_unknown_interpreter_result_json tests/unit/test_z_cmdline.py::test_unknown_dep tests/unit/test_z_cmdline.py::test_unknown_environment tests/unit/test_z_cmdline.py::test_minimal_setup_py_empty tests/unit/test_z_cmdline.py::test_minimal_setup_py_comment_only tests/unit/test_z_cmdline.py::test_minimal_setup_py_non_functional tests/unit/test_z_cmdline.py::test_sdist_fails tests/unit/test_z_cmdline.py::test_no_setup_py_exits tests/unit/test_z_cmdline.py::test_package_install_fails tests/unit/test_z_cmdline.py::test_toxuone_env tests/unit/test_z_cmdline.py::test_different_config_cwd tests/unit/test_z_cmdline.py::test_json tests/unit/test_z_cmdline.py::test_developz tests/unit/test_z_cmdline.py::test_usedevelop tests/unit/test_z_cmdline.py::test_usedevelop_mixed tests/unit/test_z_cmdline.py::test_test_usedevelop[.-False] tests/unit/test_z_cmdline.py::test_test_usedevelop[.-True] tests/unit/test_z_cmdline.py::test_test_usedevelop[src-False] tests/unit/test_z_cmdline.py::test_test_usedevelop[src-True] tests/unit/test_z_cmdline.py::test_warning_emitted tests/unit/test_z_cmdline.py::test_alwayscopy_default tests/unit/test_z_cmdline.py::test_empty_activity_ignored tests/unit/test_z_cmdline.py::test_empty_activity_shown_verbose tests/unit/test_z_cmdline.py::test_test_piphelp tests/unit/test_z_cmdline.py::test_notest tests/unit/test_z_cmdline.py::test_notest_setup_py_error tests/unit/test_z_cmdline.py::test_PYC tests/unit/test_z_cmdline.py::test_env_VIRTUALENV_PYTHON tests/unit/test_z_cmdline.py::test_envsitepackagesdir tests/unit/test_z_cmdline.py::test_envsitepackagesdir_skip_missing_issue280 tests/unit/test_z_cmdline.py::test_verbosity[] tests/unit/test_z_cmdline.py::test_verbosity[-v] tests/unit/test_z_cmdline.py::test_verbosity[-vv] tests/unit/test_z_cmdline.py::test_envtmpdir tests/unit/test_z_cmdline.py::test_missing_env_fails tests/unit/test_z_cmdline.py::test_tox_console_script tests/unit/test_z_cmdline.py::test_tox_quickstart_script tests/unit/test_z_cmdline.py::test_tox_cmdline_no_args tests/unit/test_z_cmdline.py::test_tox_cmdline_args tests/unit/test_z_cmdline.py::test_exit_code[0] tests/unit/test_z_cmdline.py::test_exit_code[6]
src/tox/config/__init__.py CONTRIBUTING.rst docs/changelog/1160.bugfix.rst
src/tox/config/__init__.py CONTRIBUTING.rst docs/changelog/1160.bugfix.rst