1212from ni_measurementlink_service ._internal .discovery_client import (
1313 DiscoveryClient ,
1414 _get_discovery_service_address ,
15+ _open_key_file ,
1516 _start_service ,
1617)
1718from ni_measurementlink_service ._internal .stubs .ni .measurementlink .discovery .v1 .discovery_service_pb2_grpc import (
2021from ni_measurementlink_service .measurement .info import MeasurementInfo , ServiceInfo
2122from tests .utilities .fake_discovery_service import FakeDiscoveryServiceStub
2223
24+ if sys .platform == "win32" :
25+ import win32file
26+
2327_PROVIDED_MEASUREMENT_SERVICES = [
2428 "ni.measurementlink.measurement.v1.MeasurementService" ,
2529 "ni.measurementlink.measurement.v2.MeasurementService" ,
@@ -129,19 +133,37 @@ def test___get_discovery_service_address___key_file_not_exist___throws_timeouter
129133 "ni_measurementlink_service._internal.discovery_client._START_SERVICE_TIMEOUT" , 5.0
130134 )
131135 mocker .patch (
132- "ni_measurementlink_service._internal.discovery_client._open_key_file" , side_effect = IOError
136+ "ni_measurementlink_service._internal.discovery_client._open_key_file" , side_effect = OSError
133137 )
134138 mocker .patch (
135139 "ni_measurementlink_service._internal.discovery_client._get_registration_json_file_path" ,
136140 return_value = temp_registration_json_file_path ,
137141 )
138142 mocker .patch ("subprocess.Popen" )
139143
140- with pytest .raises (IOError ) as exc_info :
144+ with pytest .raises (OSError ) as exc_info :
141145 _get_discovery_service_address ()
142146 assert exc_info .type is TimeoutError
143147
144148
149+ @pytest .mark .parametrize (
150+ "windows_error_code" , [2 , 3 ]
151+ ) # ERROR_FILE_NOT_FOUND = 2, ERROR_PATH_NOT_FOUND = 3
152+ def test___key_file_not_exist___open_key_file___raises_file_not_found_error (
153+ mocker : MockerFixture , temp_discovery_key_file_path : pathlib .Path , windows_error_code : int
154+ ) -> None :
155+ if sys .platform != "win32" :
156+ pytest .skip ("Windows-only test" )
157+ else :
158+ mocker .patch (
159+ "win32file.CreateFile" ,
160+ side_effect = win32file .error (windows_error_code , None , None ),
161+ )
162+
163+ with pytest .raises (FileNotFoundError ):
164+ _open_key_file (str (temp_discovery_key_file_path ))
165+
166+
145167def test___start_discovery_service___key_file_exist_after_poll___service_start_success (
146168 mocker : MockerFixture ,
147169 temp_directory : pathlib .Path ,
@@ -152,7 +174,7 @@ def test___start_discovery_service___key_file_exist_after_poll___service_start_s
152174
153175 mocker .patch (
154176 "ni_measurementlink_service._internal.discovery_client._open_key_file" ,
155- side_effect = [IOError , IOError , IOError , temp_discovery_key_file_path ],
177+ side_effect = [OSError , OSError , OSError , temp_discovery_key_file_path ],
156178 )
157179 mock_popen = mocker .patch ("subprocess.Popen" )
158180
0 commit comments