/Lib/ctypes/test/test_macholib.py

http://unladen-swallow.googlecode.com/ · Python · 62 lines · 44 code · 4 blank · 14 comment · 0 complexity · 4f4dea17e8fa8a8ae2a7bc62c752ae3c MD5 · raw file

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