Marco Ricci commited on 2026-08-29 20:24:09
Zeige 1 geänderte Dateien mit 38 Einfügungen und 15 Löschungen.
`fakesshagent` is the name of the planned package into which our stubbed SSH agent will be extracted, and which `derivepassphrase` will depend on in the future. If we can load the stubbed SSH agent from that package, then deactivate our own stub agent, do not register it, and provide compatibility links for the rest of the test suite. We also mark it as conditionally not covered, using two new provisional coverage pragmas.
| ... | ... |
@@ -42,7 +42,7 @@ if TYPE_CHECKING: |
| 42 | 42 |
from contextlib import AbstractContextManager |
| 43 | 43 |
from typing import IO, Literal, NotRequired |
| 44 | 44 |
|
| 45 |
- from typing_extensions import Any, Buffer, Self |
|
| 45 |
+ from typing_extensions import Any, Buffer, Self, TypeAlias |
|
| 46 | 46 |
|
| 47 | 47 |
|
| 48 | 48 |
# Test suite settings |
| ... | ... |
@@ -394,10 +394,7 @@ class AgentProtocolResponseQueue: |
| 394 | 394 |
# ------------ |
| 395 | 395 |
|
| 396 | 396 |
|
| 397 |
-@socketprovider.SocketProvider.register( |
|
| 398 |
- _types.BuiltinSSHAgentSocketProvider.STUB_AGENT |
|
| 399 |
-) |
|
| 400 |
-class StubbedSSHAgentSocket: |
|
| 397 |
+class StubbedSSHAgentSocket_: # pragma: unless fakesshagent no cover # noqa: N801 |
|
| 401 | 398 |
"""A stubbed SSH agent presenting an [`_types.SSHAgentSocket`][]. |
| 402 | 399 |
|
| 403 | 400 |
On the network protocol side, the agent implements the full |
| ... | ... |
@@ -725,10 +722,9 @@ class StubbedSSHAgentSocket: |
| 725 | 722 |
# ---------------- |
| 726 | 723 |
|
| 727 | 724 |
|
| 728 |
-@socketprovider.SocketProvider.register( |
|
| 729 |
- _types.BuiltinSSHAgentSocketProvider.STUB_AGENT_WITH_ADDRESS |
|
| 730 |
-) |
|
| 731 |
-class StubbedSSHAgentSocketWithAddress(StubbedSSHAgentSocket): |
|
| 725 |
+class StubbedSSHAgentSocketWithAddress_( # noqa: N801 |
|
| 726 |
+ StubbedSSHAgentSocket_ |
|
| 727 |
+): # pragma: unless fakesshagent no cover |
|
| 732 | 728 |
"""A [`StubbedSSHAgentSocket`][] requiring a specific address.""" |
| 733 | 729 |
|
| 734 | 730 |
ADDRESS = "stub-ssh-agent:" |
| ... | ... |
@@ -772,12 +768,9 @@ class StubbedSSHAgentSocketWithAddress(StubbedSSHAgentSocket): |
| 772 | 768 |
# --------------------- |
| 773 | 769 |
|
| 774 | 770 |
|
| 775 |
-@socketprovider.SocketProvider.register( |
|
| 776 |
- _types.BuiltinSSHAgentSocketProvider.STUB_AGENT_WITH_ADDRESS_AND_DETERMINISTIC_DSA |
|
| 777 |
-) |
|
| 778 |
-class StubbedSSHAgentSocketWithAddressAndDeterministicDSA( |
|
| 779 |
- StubbedSSHAgentSocketWithAddress |
|
| 780 |
-): |
|
| 771 |
+class StubbedSSHAgentSocketWithAddressAndDeterministicDSA_( # noqa: N801 |
|
| 772 |
+ StubbedSSHAgentSocketWithAddress_ |
|
| 773 |
+): # pragma: unless fakesshagent no cover |
|
| 781 | 774 |
"""A [`StubbedSSHAgentSocketWithAddress`][] supporting deterministic DSA.""" |
| 782 | 775 |
|
| 783 | 776 |
def __init__(self) -> None: |
| ... | ... |
@@ -796,3 +789,33 @@ class StubbedSSHAgentSocketWithAddressAndDeterministicDSA( |
| 796 | 789 |
super().__init__("query", "list-extended@putty.projects.tartarus.org")
|
| 797 | 790 |
self.try_rfc6979 = True |
| 798 | 791 |
self.try_pageant_068_080 = True |
| 792 |
+ |
|
| 793 |
+ |
|
| 794 |
+try: # pragma: unless internalsshagent no cover [external] |
|
| 795 |
+ from fakesshagent.machinery import ( |
|
| 796 |
+ StubbedSSHAgentSocket as StubbedSSHAgentSocket, |
|
| 797 |
+ ) |
|
| 798 |
+ from fakesshagent.machinery import ( |
|
| 799 |
+ StubbedSSHAgentSocketWithAddress as StubbedSSHAgentSocketWithAddress, |
|
| 800 |
+ ) |
|
| 801 |
+ from fakesshagent.machinery import ( |
|
| 802 |
+ StubbedSSHAgentSocketWithAddressAndDeterministicDSA as StubbedSSHAgentSocketWithAddressAndDeterministicDSA, |
|
| 803 |
+ ) |
|
| 804 |
+except ModuleNotFoundError: # pragma: unless fakesshagent no cover [external] |
|
| 805 |
+ StubbedSSHAgentSocket: TypeAlias = StubbedSSHAgentSocket_ # type: ignore[no-redef] |
|
| 806 |
+ StubbedSSHAgentSocketWithAddress: TypeAlias = ( # type: ignore[no-redef] |
|
| 807 |
+ StubbedSSHAgentSocketWithAddress_ |
|
| 808 |
+ ) |
|
| 809 |
+ StubbedSSHAgentSocketWithAddressAndDeterministicDSA: TypeAlias = ( # type: ignore[no-redef] |
|
| 810 |
+ StubbedSSHAgentSocketWithAddressAndDeterministicDSA_ |
|
| 811 |
+ ) |
|
| 812 |
+ |
|
| 813 |
+ socketprovider.SocketProvider.register( |
|
| 814 |
+ _types.BuiltinSSHAgentSocketProvider.STUB_AGENT |
|
| 815 |
+ )(StubbedSSHAgentSocket) |
|
| 816 |
+ socketprovider.SocketProvider.register( |
|
| 817 |
+ _types.BuiltinSSHAgentSocketProvider.STUB_AGENT_WITH_ADDRESS |
|
| 818 |
+ )(StubbedSSHAgentSocketWithAddress) |
|
| 819 |
+ socketprovider.SocketProvider.register( |
|
| 820 |
+ _types.BuiltinSSHAgentSocketProvider.STUB_AGENT_WITH_ADDRESS_AND_DETERMINISTIC_DSA |
|
| 821 |
+ )(StubbedSSHAgentSocketWithAddressAndDeterministicDSA) |
|
| 799 | 822 |