Files
RustPython/Lib/test/test_binhex.py
2021-11-28 20:51:32 +08:00

71 lines
2.0 KiB
Python
Vendored

"""Test script for the binhex C module
Uses the mechanism of the python binhex module
Based on an original test by Roger E. Masse.
"""
import binhex
import unittest
from test import support
from test.support import os_helper
class BinHexTestCase(unittest.TestCase):
def setUp(self):
self.fname1 = os_helper.TESTFN + "1"
self.fname2 = os_helper.TESTFN + "2"
self.fname3 = os_helper.TESTFN + "very_long_filename__very_long_filename__very_long_filename__very_long_filename__"
def tearDown(self):
os_helper.unlink(self.fname1)
os_helper.unlink(self.fname2)
os_helper.unlink(self.fname3)
DATA = b'Jack is my hero'
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_binhex(self):
with open(self.fname1, 'wb') as f:
f.write(self.DATA)
binhex.binhex(self.fname1, self.fname2)
binhex.hexbin(self.fname2, self.fname1)
with open(self.fname1, 'rb') as f:
finish = f.readline()
self.assertEqual(self.DATA, finish)
def test_binhex_error_on_long_filename(self):
"""
The testcase fails if no exception is raised when a filename parameter provided to binhex.binhex()
is too long, or if the exception raised in binhex.binhex() is not an instance of binhex.Error.
"""
f3 = open(self.fname3, 'wb')
f3.close()
self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2)
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_binhex_line_endings(self):
# bpo-29566: Ensure the line endings are those for macOS 9
with open(self.fname1, 'wb') as f:
f.write(self.DATA)
binhex.binhex(self.fname1, self.fname2)
with open(self.fname2, 'rb') as fp:
contents = fp.read()
self.assertNotIn(b'\n', contents)
def test_main():
support.run_unittest(BinHexTestCase)
if __name__ == "__main__":
test_main()