cpython/Lib/test/test_macostools.py
Ronald Oussoren 4da7d7822a Merged revisions 78061 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78061 | ronald.oussoren | 2010-02-07 12:38:28 +0100 (Sun, 07 Feb 2010) | 10 lines

  A number of APIs in macostools cannot work in 64-bit mode because they
  use Carbon APIs that aren't available there.

  This patch disables tests for the affected entrypoints in macostools and
  mentions this in the documentation.

  In theory it is possible to replace the implementation by code that does
  work in 64-bit mode, but that would require further updates to the Carbon
  wrappers because the modern APIs aren't wrapped properly.
........
2010-02-07 11:39:16 +00:00

103 lines
3.1 KiB
Python

# Copyright (C) 2003 Python Software Foundation
import unittest
import macostools
import Carbon.File
import MacOS
import os
import sys
from test import test_support
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):
try:
os.unlink(test_support.TESTFN)
except:
pass
try:
os.unlink(TESTFN2)
except:
pass
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.
import warnings
with warnings.catch_warnings():
warnings.filterwarnings('ignore', 'macostools.touched*',
DeprecationWarning)
macostools.touched(test_support.TESTFN)
if sys.maxint < 2**32:
def test_copy(self):
try:
os.unlink(TESTFN2)
except:
pass
macostools.copy(test_support.TESTFN, TESTFN2)
self.assertEqual(self.compareData(), '')
if sys.maxint < 2**32:
def test_mkalias(self):
try:
os.unlink(TESTFN2)
except:
pass
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):
try:
os.unlink(TESTFN2)
except:
pass
# 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 test_support.TestSkipped("test_macostools is broken in USC4")
test_support.run_unittest(TestMacostools)
if __name__ == '__main__':
test_main()