1 # Copyright (C) 2003 Python Software Foundation 2 3 import unittest 4 import os 5 import sys 6 from test import test_support 7 8 MacOS = test_support.import_module('MacOS') 9 #The following modules should exist if MacOS exists. 10 import Carbon.File 11 import macostools 12 13 TESTFN2 = test_support.TESTFN + '2' 14 15 class TestMacostools(unittest.TestCase): 16 17 def setUp(self): 18 fp = open(test_support.TESTFN, 'w') 19 fp.write('hello world\n') 20 fp.close() 21 rfp = MacOS.openrf(test_support.TESTFN, '*wb') 22 rfp.write('goodbye world\n') 23 rfp.close() 24 25 def tearDown(self): 26 test_support.unlink(test_support.TESTFN) 27 test_support.unlink(TESTFN2) 28 29 def compareData(self): 30 fp = open(test_support.TESTFN, 'r') 31 data1 = fp.read() 32 fp.close() 33 fp = open(TESTFN2, 'r') 34 data2 = fp.read() 35 fp.close() 36 if data1 != data2: 37 return 'Data forks differ' 38 rfp = MacOS.openrf(test_support.TESTFN, '*rb') 39 data1 = rfp.read(1000) 40 rfp.close() 41 rfp = MacOS.openrf(TESTFN2, '*rb') 42 data2 = rfp.read(1000) 43 rfp.close() 44 if data1 != data2: 45 return 'Resource forks differ' 46 return '' 47 48 def test_touched(self): 49 # This really only tests that nothing unforeseen happens. 50 with test_support.check_warnings(('macostools.touched*', 51 DeprecationWarning), quiet=True): 52 macostools.touched(test_support.TESTFN) 53 54 if sys.maxint < 2**32: 55 def test_copy(self): 56 test_support.unlink(TESTFN2) 57 macostools.copy(test_support.TESTFN, TESTFN2) 58 self.assertEqual(self.compareData(), '') 59 60 if sys.maxint < 2**32: 61 def test_mkalias(self): 62 test_support.unlink(TESTFN2) 63 macostools.mkalias(test_support.TESTFN, TESTFN2) 64 fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) 65 self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) 66 67 def test_mkalias_relative(self): 68 test_support.unlink(TESTFN2) 69 # If the directory doesn't exist, then chances are this is a new 70 # install of Python so don't create it since the user might end up 71 # running ``sudo make install`` and creating the directory here won't 72 # leave it with the proper permissions. 73 if not os.path.exists(sys.prefix): 74 return 75 macostools.mkalias(test_support.TESTFN, TESTFN2, sys.prefix) 76 fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) 77 self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) 78 79 80 def test_main(): 81 # Skip on wide unicode 82 if len(u'\0'.encode('unicode-internal')) == 4: 83 raise unittest.SkipTest("test_macostools is broken in USC4") 84 test_support.run_unittest(TestMacostools) 85 86 87 if __name__ == '__main__': 88 test_main() 89