async def test_spawn_companion(self) -> None:
     spawner = CompanionSpawner("idb_path", logger=mock.Mock())
     spawner._log_file_path = mock.Mock()
     spawner.pid_saver = mock.Mock()
     udid = "someUdid"
     with mock.patch(
             "idb.common.companion_spawner.asyncio.create_subprocess_exec",
             new=AsyncMock(),
     ) as exec_mock, mock.patch("idb.common.companion_spawner.open"):
         process_mock = mock.Mock()
         process_mock.stdout.readline = AsyncMock(
             return_value=json.dumps({
                 "hostname": "myHost",
                 "grpc_port": 1234
             }).encode("utf-8"))
         exec_mock.return_value = process_mock
         port = await spawner.spawn_companion(udid)
         exec_mock.assert_called_once_with(
             "idb_path",
             "--udid",
             "someUdid",
             "--grpc-port",
             "0",
             stdout=mock.ANY,
             stdin=mock.ANY,
             stderr=mock.ANY,
         )
         self.assertEqual(port, 1234)
 async def test_spawn_notifier(self) -> None:
     spawner = CompanionSpawner("idb_path", logger=mock.Mock())
     spawner._log_file_path = mock.Mock()
     spawner._is_notifier_running = mock.Mock(return_value=False)
     spawner.pid_saver = mock.Mock()
     with mock.patch(
             "idb.common.companion_spawner.asyncio.create_subprocess_exec",
             new=AsyncMock(),
     ) as exec_mock, mock.patch("idb.common.companion_spawner.open"):
         process_mock = mock.Mock()
         exec_mock.return_value = process_mock
         await spawner.spawn_notifier()
         exec_mock.assert_called_once_with(
             "idb_path",
             "--notify",
             IDB_LOCAL_TARGETS_FILE,
             stderr=mock.ANY,
             stdout=mock.ANY,
         )