|
2 | 2 |
|
3 | 3 | import sys
|
4 | 4 | from typing import TYPE_CHECKING, Callable
|
| 5 | +from unittest.mock import patch |
5 | 6 |
|
6 | 7 | import pytest
|
7 | 8 |
|
@@ -220,6 +221,38 @@ def test_python_set_hash_seed_incorrect(tox_project: ToxProjectCreator) -> None:
|
220 | 221 | assert "tox run: error: argument --hashseed: invalid literal for int() with base 10: 'ok'" in result.err
|
221 | 222 |
|
222 | 223 |
|
| 224 | +def test_python_use_hash_seed_from_env(tox_project: ToxProjectCreator) -> None: |
| 225 | + ini = "[testenv]\npackage=skip" |
| 226 | + with patch.dict("os.environ", {"PYTHONHASHSEED": "13"}): |
| 227 | + result = tox_project({"tox.ini": ini}).run("c", "-e", "py", "-k", "setenv") |
| 228 | + result.assert_success() |
| 229 | + assert "PYTHONHASHSEED=13" in result.out |
| 230 | + |
| 231 | + |
| 232 | +def test_python_hash_seed_from_env_random(tox_project: ToxProjectCreator) -> None: |
| 233 | + ini = "[testenv]\npackage=skip" |
| 234 | + with patch.dict("os.environ", {"PYTHONHASHSEED": "random"}): |
| 235 | + result = tox_project({"tox.ini": ini}).run("c", "-e", "py", "-k", "setenv") |
| 236 | + result.assert_success() |
| 237 | + assert "PYTHONHASHSEED=" in result.out |
| 238 | + |
| 239 | + |
| 240 | +def test_python_hash_seed_from_env_and_override(tox_project: ToxProjectCreator) -> None: |
| 241 | + ini = "[testenv]\npackage=skip\ncommands=python -c 'import os; print(os.environ.get(\"PYTHONHASHSEED\"))'" |
| 242 | + with patch.dict("os.environ", {"PYTHONHASHSEED": "14"}): |
| 243 | + result = tox_project({"tox.ini": ini}).run("r", "-e", "py", "--hashseed", "15") |
| 244 | + result.assert_success() |
| 245 | + assert result.out.splitlines()[1] == "15" |
| 246 | + |
| 247 | + |
| 248 | +def test_python_hash_seed_from_env_and_disable(tox_project: ToxProjectCreator) -> None: |
| 249 | + ini = "[testenv]\npackage=skip\ncommands=python -c 'import os; print(os.environ.get(\"PYTHONHASHSEED\"))'" |
| 250 | + with patch.dict("os.environ", {"PYTHONHASHSEED": "16"}): |
| 251 | + result = tox_project({"tox.ini": ini}).run("r", "-e", "py", "--hashseed", "notset") |
| 252 | + result.assert_success() |
| 253 | + assert result.out.splitlines()[1] == "None" |
| 254 | + |
| 255 | + |
223 | 256 | @pytest.mark.parametrize("in_ci", [True, False])
|
224 | 257 | def test_list_installed_deps(in_ci: bool, tox_project: ToxProjectCreator, mocker: MockerFixture) -> None:
|
225 | 258 | mocker.patch("tox.session.cmd.run.common.is_ci", return_value=in_ci)
|
|
0 commit comments