|
7 | 7 |
|
8 | 8 | import pytest |
9 | 9 |
|
| 10 | +from ansible_dev_environment.arg_parser import ArgumentParser, apply_envvars |
10 | 11 | from ansible_dev_environment.cli import Cli, main |
11 | 12 |
|
12 | 13 |
|
@@ -300,3 +301,87 @@ def test_exit_code_two( |
300 | 301 | assert excinfo.value.code == expected |
301 | 302 | captured = capsys.readouterr() |
302 | 303 | assert "Test warning" in captured.out |
| 304 | + |
| 305 | + |
| 306 | +def test_envvar_mapping_error(monkeypatch: pytest.MonkeyPatch) -> None: |
| 307 | + """Test environment mapping error. |
| 308 | +
|
| 309 | + Args: |
| 310 | + monkeypatch: Pytest fixture. |
| 311 | + """ |
| 312 | + monkeypatch.setattr( |
| 313 | + "ansible_dev_environment.arg_parser.ENVVAR_MAPPING", |
| 314 | + {"foo": "FOO"}, |
| 315 | + ) |
| 316 | + monkeypatch.setattr( |
| 317 | + "sys.argv", |
| 318 | + ["ansible-dev-environment", "install"], |
| 319 | + ) |
| 320 | + cli = Cli() |
| 321 | + with pytest.raises(NotImplementedError): |
| 322 | + cli.parse_args() |
| 323 | + |
| 324 | + |
| 325 | +def test_apply_envvar_error(monkeypatch: pytest.MonkeyPatch) -> None: |
| 326 | + """Test environment mapping error. |
| 327 | +
|
| 328 | + Args: |
| 329 | + monkeypatch: Pytest fixture. |
| 330 | + """ |
| 331 | + monkeypatch.setattr( |
| 332 | + "ansible_dev_environment.arg_parser.ENVVAR_MAPPING", |
| 333 | + {"foo": "FOO"}, |
| 334 | + ) |
| 335 | + monkeypatch.setenv("FOO", "42.0") |
| 336 | + |
| 337 | + parser = ArgumentParser() |
| 338 | + parser.add_argument("--foo", type=float) |
| 339 | + |
| 340 | + with pytest.raises(NotImplementedError) as excinfo: |
| 341 | + apply_envvars(args=[], parser=parser) |
| 342 | + |
| 343 | + assert "not implemented for envvar FOO" in str(excinfo.value) |
| 344 | + |
| 345 | + |
| 346 | +def test_env_wrong_type( |
| 347 | + monkeypatch: pytest.MonkeyPatch, |
| 348 | + capsys: pytest.CaptureFixture[str], |
| 349 | +) -> None: |
| 350 | + """Test wrong type. |
| 351 | +
|
| 352 | + Args: |
| 353 | + monkeypatch: Pytest fixture. |
| 354 | + capsys: Pytest stdout capture fixture. |
| 355 | + """ |
| 356 | + monkeypatch.setattr( |
| 357 | + "sys.argv", |
| 358 | + ["ansible-dev-environment", "install"], |
| 359 | + ) |
| 360 | + monkeypatch.setenv("ADE_VERBOSE", "not_an_int") |
| 361 | + cli = Cli() |
| 362 | + with pytest.raises(SystemExit): |
| 363 | + cli.parse_args() |
| 364 | + captured = capsys.readouterr() |
| 365 | + assert "could not convert to int" in captured.err |
| 366 | + |
| 367 | + |
| 368 | +def test_env_wrong_choice( |
| 369 | + monkeypatch: pytest.MonkeyPatch, |
| 370 | + capsys: pytest.CaptureFixture[str], |
| 371 | +) -> None: |
| 372 | + """Test wrong choice. |
| 373 | +
|
| 374 | + Args: |
| 375 | + monkeypatch: Pytest fixture. |
| 376 | + capsys: Pytest stdout capture fixture. |
| 377 | + """ |
| 378 | + monkeypatch.setattr( |
| 379 | + "sys.argv", |
| 380 | + ["ansible-dev-environment", "install"], |
| 381 | + ) |
| 382 | + monkeypatch.setenv("ADE_ISOLATION_MODE", "wrong_choice") |
| 383 | + cli = Cli() |
| 384 | + with pytest.raises(SystemExit): |
| 385 | + cli.parse_args() |
| 386 | + captured = capsys.readouterr() |
| 387 | + assert "choose from 'restrictive', 'cfg', 'none'" in captured.err |
0 commit comments