Marco Ricci commited on 2024-09-22 19:19:38
Zeige 1 geänderte Dateien mit 38 Einfügungen und 5 Löschungen.
| ... | ... |
@@ -423,11 +423,11 @@ def spawn_ssh_agent( |
| 423 | 423 |
client.list_keys() |
| 424 | 424 |
except KeyError: # pragma: no cover |
| 425 | 425 |
pytest.skip('SSH agent is not running')
|
| 426 |
- # except OSError as exc: # pragma: no cover |
|
| 427 |
- # pytest.skip( |
|
| 428 |
- # f'Cannot talk to SSH agent: ' |
|
| 429 |
- # f'{exc.strerror}: {exc.filename!r}'
|
|
| 430 |
- # ) |
|
| 426 |
+ except OSError as exc: # pragma: no cover |
|
| 427 |
+ pytest.skip( |
|
| 428 |
+ f'Cannot talk to SSH agent: ' |
|
| 429 |
+ f'{exc.strerror}: {exc.filename!r}'
|
|
| 430 |
+ ) |
|
| 431 | 431 |
with client: |
| 432 | 432 |
assert ( |
| 433 | 433 |
os.environ.get('SSH_AUTH_SOCK', None)
|
| ... | ... |
@@ -510,6 +510,39 @@ def spawn_ssh_agent( |
| 510 | 510 |
def ssh_agent_client_with_test_keys_loaded( # noqa: C901 |
| 511 | 511 |
spawn_ssh_agent: tests.SpawnedSSHAgentInfo, |
| 512 | 512 |
) -> Iterator[ssh_agent.SSHAgentClient]: |
| 513 |
+ """Provide an SSH agent with loaded test keys, as a pytest fixture. |
|
| 514 |
+ |
|
| 515 |
+ Use the `spawn_ssh_agent` fixture to acquire a usable SSH agent, |
|
| 516 |
+ upload the known test keys into the agent, and return a connected |
|
| 517 |
+ client. |
|
| 518 |
+ |
|
| 519 |
+ The agent may reject several of the test keys due to unsupported or |
|
| 520 |
+ obsolete key types. Rejected keys will be silently ignored, unless |
|
| 521 |
+ all keys are rejected; then the test will be skipped. You must not |
|
| 522 |
+ automatically assume any particular key is present in the agent. |
|
| 523 |
+ |
|
| 524 |
+ Yields: |
|
| 525 |
+ (ssh_agent.SSHAgentClient): |
|
| 526 |
+ A [named tuple][collection.namedtuple] containing |
|
| 527 |
+ information about the spawned agent, e.g. the software |
|
| 528 |
+ product, a client connected to the agent, and whether the |
|
| 529 |
+ agent is isolated from other clients. |
|
| 530 |
+ |
|
| 531 |
+ Raises: |
|
| 532 |
+ OSError: |
|
| 533 |
+ There was a communication or a socket setup error with the |
|
| 534 |
+ agent. |
|
| 535 |
+ pytest.skip.Exception: |
|
| 536 |
+ If the agent is unusable or if it rejected all test keys, |
|
| 537 |
+ skip this test. |
|
| 538 |
+ |
|
| 539 |
+ Warning: |
|
| 540 |
+ It is the fixture's responsibility to clean up the SSH agent |
|
| 541 |
+ client after the test. Closing the client's socket connection |
|
| 542 |
+ beforehand (e.g. by using the client as a context manager) may |
|
| 543 |
+ lead to exceptions being thrown upon fixture teardown. |
|
| 544 |
+ |
|
| 545 |
+ """ |
|
| 513 | 546 |
agent_type, client, isolated = spawn_ssh_agent |
| 514 | 547 |
all_test_keys = {**tests.SUPPORTED_KEYS, **tests.UNSUITABLE_KEYS}
|
| 515 | 548 |
successfully_loaded_keys: set[str] = set() |
| 516 | 549 |