[py-svn] r37739 - in py/trunk/py/apigen/source: . testing

guido at codespeak.net guido at codespeak.net
Thu Feb 1 15:57:36 CET 2007


Author: guido
Date: Thu Feb  1 15:57:34 2007
New Revision: 37739

Modified:
   py/trunk/py/apigen/source/html.py
   py/trunk/py/apigen/source/testing/test_html.py
Log:
Made that only the first two lines of a source file are examined for the
encoding.


Modified: py/trunk/py/apigen/source/html.py
==============================================================================
--- py/trunk/py/apigen/source/html.py	(original)
+++ py/trunk/py/apigen/source/html.py	Thu Feb  1 15:57:34 2007
@@ -261,8 +261,15 @@
     if path[-1] in ['c', 'o']:
         path = path[:-1]
     fpath = py.path.local(path)
-    code = fpath.read()
-    match = _reg_enc.search(code)
+    fp = fpath.open()
+    lines = []
+    try:
+        # encoding is only allowed in the first two lines
+        for i in range(2):
+            lines.append(fp.readline())
+    finally:
+        fp.close()
+    match = _reg_enc.search('\n'.join(lines))
     if match:
         return match.group(1)
     return 'ISO-8859-1'

Modified: py/trunk/py/apigen/source/testing/test_html.py
==============================================================================
--- py/trunk/py/apigen/source/testing/test_html.py	(original)
+++ py/trunk/py/apigen/source/testing/test_html.py	Thu Feb  1 15:57:34 2007
@@ -177,3 +177,14 @@
     """)))
     assert get_module_encoding(fpath.strpath) == 'UTF-8'
 
+def test_get_encoding_matching_pattern_elsewhere():
+    temp = py.test.ensuretemp('test_get_encoding')
+    fpath = temp.join('matching_pattern.py')
+    fpath.write(str(py.code.Source("""\
+        #!/usr/bin/env python
+        
+        def foo(coding=None):
+            pass
+    """)))
+    assert get_module_encoding(fpath.strpath) == 'ISO-8859-1'
+



More information about the pytest-commit mailing list