blob: eda846d30a150f08ed36f0878e71f90adb8143b1 [file] [log] [blame]
Thomas Hellerbabddfc2006-03-08 19:56:54 +00001import 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):
Tim Peterse8d09e52006-03-09 01:15:05 +000039 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
Collin Wintera73bfee2007-08-30 03:47:13 +000045 raise ValueError("%s not found" % (name,))
Thomas Hellerbabddfc2006-03-08 19:56:54 +000046
47class MachOTest(unittest.TestCase):
48 if sys.platform == "darwin":
49 def test_find(self):
50
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000051 self.assertEqual(find_lib('pthread'),
Thomas Hellerbabddfc2006-03-08 19:56:54 +000052 '/usr/lib/libSystem.B.dylib')
53
54 result = find_lib('z')
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000055 self.assertTrue(result.startswith('/usr/lib/libz.1'))
56 self.assertTrue(result.endswith('.dylib'))
Thomas Hellerbabddfc2006-03-08 19:56:54 +000057
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000058 self.assertEqual(find_lib('IOKit'),
Thomas Hellerbabddfc2006-03-08 19:56:54 +000059 '/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit')
60
61if __name__ == "__main__":
62 unittest.main()