mirror of
https://github.com/python/cpython.git
synced 2025-07-28 05:34:31 +00:00

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.
105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
# 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):
|
|
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 unittest.SkipTest("test_macostools is broken in USC4")
|
|
test_support.run_unittest(TestMacostools)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
test_main()
|