def testLoadLibraryUsesWellKnownPathAsFallback(self, load_library_mock, find_library_mock): mock_cdll = mock.Mock() find_library_mock.return_value = None load_library_mock.side_effect = [OSError("not found"), mock_cdll] result = objc.LoadLibrary("Foobazzle") self.assertGreaterEqual(load_library_mock.call_count, 1) load_library_mock.assert_called_with( "/System/Library/Frameworks/Foobazzle.framework/Foobazzle") self.assertIs(result, mock_cdll)
def EnumerateInterfacesFromClient(args): """Enumerate all MAC addresses.""" del args # Unused libc = objc.LoadLibrary("c") ifa = Ifaddrs() p_ifa = ctypes.pointer(ifa) libc.getifaddrs(ctypes.pointer(p_ifa)) for iface in ParseIfaddrs(p_ifa): yield iface libc.freeifaddrs(p_ifa)
def testLoadLibraryTriesLoadingSharedLoadedLibrary(self, load_library_mock, find_library_mock): mock_cdll = mock.Mock() def _LoadLibrary(libpath): if libpath is None: return mock_cdll else: raise OSError("not found") find_library_mock.return_value = None load_library_mock.side_effect = _LoadLibrary loaded_lib_name = next(iter(objc._LOADED_SHARED_LIBRARIES)) result = objc.LoadLibrary(loaded_lib_name) self.assertGreaterEqual(load_library_mock.call_count, 1) load_library_mock.assert_called_with(None) self.assertIs(result, mock_cdll)
def GetFileSystems(): """Make syscalls to get the mounted filesystems. Returns: A list of Struct objects. Based on the information for getfsstat http://developer.apple.com/library/mac/#documentation/Darwin/ Reference/ManPages/man2/getfsstat.2.html """ version = OSXVersion() major, minor = version.VersionAsMajorMinor() libc = objc.LoadLibrary("c") if major <= 10 and minor <= 5: use_64 = False fs_struct = StatFSStruct else: use_64 = True fs_struct = StatFS64Struct # Get max 20 file systems. struct_size = fs_struct.GetSize() buf_size = struct_size * 20 cbuf = ctypes.create_string_buffer(buf_size) if use_64: # MNT_NOWAIT = 2 - don't ask the filesystems, just return cache. ret = libc.getfsstat64(ctypes.byref(cbuf), buf_size, 2) else: ret = libc.getfsstat(ctypes.byref(cbuf), buf_size, 2) if ret == 0: logging.debug("getfsstat failed err: %s", ret) return [] return ParseFileSystemsStruct(fs_struct, ret, cbuf)