test_openpy.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import io
  2. import os.path
  3. import nose.tools as nt
  4. from IPython.utils import openpy
  5. mydir = os.path.dirname(__file__)
  6. nonascii_path = os.path.join(mydir, '../../core/tests/nonascii.py')
  7. def test_detect_encoding():
  8. f = open(nonascii_path, 'rb')
  9. enc, lines = openpy.detect_encoding(f.readline)
  10. nt.assert_equal(enc, 'iso-8859-5')
  11. def test_read_file():
  12. read_specified_enc = io.open(nonascii_path, encoding='iso-8859-5').read()
  13. read_detected_enc = openpy.read_py_file(nonascii_path, skip_encoding_cookie=False)
  14. nt.assert_equal(read_detected_enc, read_specified_enc)
  15. assert u'coding: iso-8859-5' in read_detected_enc
  16. read_strip_enc_cookie = openpy.read_py_file(nonascii_path, skip_encoding_cookie=True)
  17. assert u'coding: iso-8859-5' not in read_strip_enc_cookie
  18. def test_source_to_unicode():
  19. with io.open(nonascii_path, 'rb') as f:
  20. source_bytes = f.read()
  21. nt.assert_equal(openpy.source_to_unicode(source_bytes, skip_encoding_cookie=False).splitlines(),
  22. source_bytes.decode('iso-8859-5').splitlines())
  23. source_no_cookie = openpy.source_to_unicode(source_bytes, skip_encoding_cookie=True)
  24. nt.assert_not_in(u'coding: iso-8859-5', source_no_cookie)
  25. def test_list_readline():
  26. l = ['a', 'b']
  27. readline = openpy._list_readline(l)
  28. nt.assert_equal(readline(), 'a')
  29. nt.assert_equal(readline(), 'b')
  30. with nt.assert_raises(StopIteration):
  31. readline()