Home | History | Annotate | Download | only in test
      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