1import os
2import sys
3import unittest
4
5# Bob Ippolito:
6"""
7Ok.. the code to find the filename for __getattr__ should look
8something like:
9
10import os
11from macholib.dyld import dyld_find
12
13def find_lib(name):
14     possible = ['lib'+name+'.dylib', name+'.dylib',
15     name+'.framework/'+name]
16     for dylib in possible:
17         try:
18             return os.path.realpath(dyld_find(dylib))
19         except ValueError:
20             pass
21     raise ValueError, "%s not found" % (name,)
22
23It'll have output like this:
24
25 >>> find_lib('pthread')
26'/usr/lib/libSystem.B.dylib'
27 >>> find_lib('z')
28'/usr/lib/libz.1.dylib'
29 >>> find_lib('IOKit')
30'/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit'
31
32-bob
33
34"""
35
36from ctypes.macholib.dyld import dyld_find
37
38def find_lib(name):
39    possible = ['lib'+name+'.dylib', name+'.dylib', name+'.framework/'+name]
40    for dylib in possible:
41        try:
42            return os.path.realpath(dyld_find(dylib))
43        except ValueError:
44            pass
45    raise ValueError("%s not found" % (name,))
46
47class MachOTest(unittest.TestCase):
48    if sys.platform == "darwin":
49        def test_find(self):
50
51            self.assertEqual(find_lib('pthread'),
52                                 '/usr/lib/libSystem.B.dylib')
53
54            result = find_lib('z')
55            self.assertTrue(result.startswith('/usr/lib/libz.1'))
56            self.assertTrue(result.endswith('.dylib'))
57
58            self.assertEqual(find_lib('IOKit'),
59                                 '/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit')
60
61if __name__ == "__main__":
62    unittest.main()
63