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