# Copyright (C) 2003 Python Software Foundation import unittest import os import sys from test import test_support MacOS = test_support.import_module('MacOS') #The following modules should exist if MacOS exists. import Carbon.File import macostools TESTFN2 = test_support.TESTFN + '2' class TestMacostools(unittest.TestCase): def setUp(self): fp = open(test_support.TESTFN, 'w') fp.write('hello world\n') fp.close() rfp = MacOS.openrf(test_support.TESTFN, '*wb') rfp.write('goodbye world\n') rfp.close() def tearDown(self): test_support.unlink(test_support.TESTFN) test_support.unlink(TESTFN2) def compareData(self): fp = open(test_support.TESTFN, 'r') data1 = fp.read() fp.close() fp = open(TESTFN2, 'r') data2 = fp.read() fp.close() if data1 != data2: return 'Data forks differ' rfp = MacOS.openrf(test_support.TESTFN, '*rb') data1 = rfp.read(1000) rfp.close() rfp = MacOS.openrf(TESTFN2, '*rb') data2 = rfp.read(1000) rfp.close() if data1 != data2: return 'Resource forks differ' return '' def test_touched(self): # This really only tests that nothing unforeseen happens. with test_support.check_warnings(('macostools.touched*', DeprecationWarning), quiet=True): macostools.touched(test_support.TESTFN) if sys.maxint < 2**32: def test_copy(self): test_support.unlink(TESTFN2) macostools.copy(test_support.TESTFN, TESTFN2) self.assertEqual(self.compareData(), '') if sys.maxint < 2**32: def test_mkalias(self): test_support.unlink(TESTFN2) macostools.mkalias(test_support.TESTFN, TESTFN2) fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) def test_mkalias_relative(self): test_support.unlink(TESTFN2) # If the directory doesn't exist, then chances are this is a new # install of Python so don't create it since the user might end up # running ``sudo make install`` and creating the directory here won't # leave it with the proper permissions. if not os.path.exists(sys.prefix): return macostools.mkalias(test_support.TESTFN, TESTFN2, sys.prefix) fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) def test_main(): # Skip on wide unicode if len(u'\0'.encode('unicode-internal')) == 4: raise unittest.SkipTest("test_macostools is broken in USC4") test_support.run_unittest(TestMacostools) if __name__ == '__main__': test_main()