/usr/lib/python3/dist-packages/pyutilib/misc/tests/test_io.py is in python3-pyutilib 5.3.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | #
# Unit Tests for util/*_io
#
#
import os
import sys
from os.path import abspath, dirname
pkgdir = dirname(abspath(__file__))+os.sep+".."+os.sep+".."
currdir = dirname(abspath(__file__))+os.sep
import six
import pyutilib.th as unittest
import pyutilib.misc
def filter1(str):
return True
def filter2(str):
return ""
def filter3(str):
str = str.replace('THERE','HERE')
str = str.replace('[4, 5, 6]','[1,2,3]')
return str
class IODebug(unittest.TestCase):
def test_redirect1(self):
"""Verify that IO redirection works"""
pyutilib.misc.setup_redirect(currdir+"redirect_io.out")
print("HERE")
print([1,2,3])
#
# Force a flush to ensure code coverage
#
sys.stdout.flush()
pyutilib.misc.reset_redirect()
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io.out",currdir+"redirect_io1.txt")[0])
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io.out",currdir+"redirect_io2.txt", filter=filter1)[0])
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io.out",currdir+"redirect_io2.txt", filter=filter2)[0])
os.remove(currdir+"redirect_io.out")
def test_redirect2(self):
"""Verify that IO redirection will create an empty file is no output is generated"""
pyutilib.misc.setup_redirect(currdir+"redirect_io.out")
pyutilib.misc.reset_redirect()
if not os.path.exists(currdir+"redirect_io.out"):
self.fail("Redirection did not create an empty file.")
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io.out",currdir+"redirect_io2.txt")[0])
os.remove(currdir+"redirect_io.out")
def test_redirect3(self):
"""Verify that IO redirection can be nested"""
pyutilib.misc.setup_redirect(currdir+"redirect_io1.out")
print("HERE")
pyutilib.misc.setup_redirect(currdir+"redirect_io3.out")
print("THERE")
print([4,5,6])
pyutilib.misc.reset_redirect()
print([1,2,3])
#
# Force a flush to ensure code coverage
#
sys.stdout.flush()
pyutilib.misc.reset_redirect()
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io1.out",currdir+"redirect_io1.txt")[0])
os.remove(currdir+"redirect_io1.out")
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io3.out",currdir+"redirect_io3.txt")[0])
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"redirect_io3.out",currdir+"redirect_io3.txt", filter=filter3)[0])
os.remove(currdir+"redirect_io3.out")
def test_redirect4(self):
"""Verify that IO redirection works with file-like objects"""
output = six.StringIO()
pyutilib.misc.setup_redirect(output)
print("HERE")
print([1,2,3])
#
# Force a flush to ensure code coverage
#
sys.stdout.flush()
pyutilib.misc.reset_redirect()
self.assertEqual(output.getvalue(),"HERE\n[1, 2, 3]\n")
def test_format_io(self):
"""
Test that formated IO looks correct.
"""
pyutilib.misc.setup_redirect(currdir+"format_io.out")
print(pyutilib.misc.format_io(0.0))
print(pyutilib.misc.format_io(0))
print(pyutilib.misc.format_io(1e-1))
print(pyutilib.misc.format_io(1e+1))
print(pyutilib.misc.format_io(1e-9))
print(pyutilib.misc.format_io(1e+9))
print(pyutilib.misc.format_io(1e-99))
print(pyutilib.misc.format_io(1e+99))
print(pyutilib.misc.format_io(1e-100))
print(pyutilib.misc.format_io(1e+100))
print(pyutilib.misc.format_io(-1e-1))
print(pyutilib.misc.format_io(-1e+1))
print(pyutilib.misc.format_io(-1e-9))
print(pyutilib.misc.format_io(-1e+9))
print(pyutilib.misc.format_io(-1e-99))
print(pyutilib.misc.format_io(-1e+99))
print(pyutilib.misc.format_io(-1e-100))
print(pyutilib.misc.format_io(-1e+100))
print(pyutilib.misc.format_io('string'))
pyutilib.misc.reset_redirect()
self.assertFalse(pyutilib.misc.comparison.compare_file(currdir+"format_io.out",currdir+"format_io.txt")[0])
os.remove(currdir+"format_io.out")
def test_format_float_err1(self):
""" Test that errors are generated for non floats """
try:
pyutilib.misc.format_float('1')
self.fail("Should have thrown a TypeError exception")
except TypeError:
pass
def test_indenter_write(self):
output = six.StringIO()
indenter = pyutilib.misc.StreamIndenter(output, "X")
indenter.write("foo")
self.assertEqual(output.getvalue(), "Xfoo")
indenter.write("\n")
self.assertEqual(output.getvalue(), "Xfoo\n")
indenter.write("foo\n")
self.assertEqual(output.getvalue(), "Xfoo\nXfoo\n")
indenter.write("")
self.assertEqual(output.getvalue(), "Xfoo\nXfoo\n")
indenter.write("baz\nbin")
self.assertEqual(output.getvalue(), "Xfoo\nXfoo\nXbaz\nXbin")
self.assertEqual(indenter.closed, False)
indenter.close()
self.assertEqual(indenter.closed, True)
def test_indenter_writelines(self):
output = six.StringIO()
indenter = pyutilib.misc.StreamIndenter(output, "X")
indenter.writelines(["foo"])
self.assertEqual(output.getvalue(), "Xfoo")
indenter.writelines(["foo\n", "bar\n"])
self.assertEqual(output.getvalue(), "Xfoofoo\nXbar\n")
indenter.writelines(["", ""])
self.assertEqual(output.getvalue(), "Xfoofoo\nXbar\n")
self.assertEqual(indenter.closed, False)
indenter.close()
self.assertEqual(indenter.closed, True)
if __name__ == "__main__":
unittest.main()
|