@@ -33,7 +33,7 @@ def setUp(self):
3333 self .finch_socket = "unix:///tmp/finch.sock"
3434 self .docker_socket = "unix:///var/run/docker.sock"
3535 self .docker_version = DOCKER_MIN_API_VERSION
36- self .finch_version = "1.35" # TODO: Update when Finch updates to latest Docker API version
36+ self .finch_version = DOCKER_MIN_API_VERSION # TODO: Update when Finch updates to latest Docker API version
3737
3838 def create_mock_container_client (self , client_class , methods_to_bind = None ):
3939 """Create a mock container client with bound methods for testing."""
@@ -95,6 +95,9 @@ def create_mock_containers(self, container_configs):
9595class ConcreteContainerClient (ContainerClient ):
9696 """Concrete implementation of ContainerClient for testing purposes"""
9797
98+ def is_available (self ):
99+ return True
100+
98101 def get_socket_path (self ):
99102 return "unix:///var/run/docker.sock"
100103
@@ -135,6 +138,7 @@ def test_inherits_from_docker_client(self):
135138 def test_abstract_methods_defined (self ):
136139 """Test that all required abstract methods are defined"""
137140 abstract_methods = {
141+ "is_available" ,
138142 "get_runtime_type" ,
139143 "get_socket_path" ,
140144 "load_image_from_archive" ,
@@ -721,7 +725,7 @@ class TestContainerClientBaseInit(BaseContainerClientTestCase):
721725 def test_init_no_overrides (self , mock_log , mock_docker_init ):
722726 """Test ContainerClient init with no environment overrides"""
723727 with patch .dict ("os.environ" , {}, clear = True ):
724- client = ConcreteContainerClient (client_version = self . docker_version )
728+ client = ConcreteContainerClient ()
725729
726730 # Verify DockerClient.__init__ was called with expected parameters
727731 mock_docker_init .assert_called_once ()
@@ -736,7 +740,7 @@ def test_init_with_base_url_override(self, mock_log, mock_docker_init):
736740 override_url = "unix:///tmp/finch.sock"
737741
738742 with patch .dict ("os.environ" , {}, clear = True ):
739- client = ConcreteContainerClient (client_version = self . docker_version , base_url = override_url )
743+ client = ConcreteContainerClient (base_url = override_url )
740744
741745 # Verify DockerClient.__init__ was called with expected parameters
742746 mock_docker_init .assert_called_once ()
@@ -755,26 +759,43 @@ def setUp(self):
755759 self .client = Mock (spec = ContainerClient )
756760
757761 # Set up the methods we need to test
758- self .client .is_available = ContainerClient .is_available .__get__ (self .client )
759762 self .client .is_finch = ContainerClient .is_finch .__get__ (self .client )
760763 self .client .is_docker = ContainerClient .is_docker .__get__ (self .client )
761764
762765 # Set up the mocked docker client attributes
763766 self .client .ping = Mock (return_value = True )
764767 self .client .get_runtime_type = Mock (return_value = "docker" )
765768
766- def test_is_available_success (self ):
769+ def test_is_available_finch_success (self ):
770+ """Test is_available returns True when ping succeeds"""
771+ self .client .ping .return_value = True
772+ # check finch
773+ self .client .is_available = FinchContainerClient .is_available .__get__ (self .client )
774+ self .assertTrue (self .client .is_available ())
775+
776+ def test_is_available_docker_success (self ):
767777 """Test is_available returns True when ping succeeds"""
768778 self .client .ping .return_value = True
779+ # check docker
780+ self .client .is_available = DockerContainerClient .is_available .__get__ (self .client )
769781 self .assertTrue (self .client .is_available ())
770782
771783 @patch ("samcli.local.docker.container_client.LOG" )
772- def test_is_available_failure (self , mock_log ):
784+ def test_is_available_finch_failure (self , mock_log ):
773785 """Test is_available returns False when ping fails and logs debug"""
786+ self .client .is_available = FinchContainerClient .is_available .__get__ (self .client )
774787 self .client .ping .side_effect = Exception ("Connection failed" )
775788 self .assertFalse (self .client .is_available ())
776789 mock_log .debug .assert_called_once ()
777790
791+ @patch ("samcli.local.docker.container_client.LOG" )
792+ def test_is_available_docker_failure (self , mock_log ):
793+ """Test is_available returns False when ping fails and logs debug"""
794+ self .client .is_available = DockerContainerClient .is_available .__get__ (self .client )
795+ self .client .ping .side_effect = Exception ("Connection failed" )
796+ self .assertFalse (self .client .is_available ())
797+ mock_log .debug .assert_called ()
798+
778799 @parameterized .expand (
779800 [
780801 ("is_finch" , "finch" , True ),
0 commit comments