summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-06-27 17:36:13 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-06-27 17:36:13 -0400
commitc42de28315ba31847441fcb90393545c87bcd641 (patch)
treee28725684a1d439148f295d6692cf92c543688ba
parent76ec1f6f0f9a2f3c34b59892aadd532e9abcf18e (diff)
downloadpython-coveragepy-c42de28315ba31847441fcb90393545c87bcd641.tar.gz
When executing files, open them in Universal Newline mode, just as Python itself does. Makes it possible to run Python from Windows on Mac, for example.
-rw-r--r--coverage/execfile.py2
-rw-r--r--test/test_execfile.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py
index d6bcdce..43bdc5c 100644
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -24,7 +24,7 @@ def run_python_file(filename, args):
sys.path[0] = os.path.dirname(filename)
try:
- source = open(filename).read()
+ source = open(filename, 'rU').read()
exec compile(source, filename, "exec") in main_mod.__dict__
finally:
# Restore the old __main__
diff --git a/test/test_execfile.py b/test/test_execfile.py
index eae227a..6cc7cab 100644
--- a/test/test_execfile.py
+++ b/test/test_execfile.py
@@ -46,3 +46,14 @@ class RunTest(CoverageTest):
self.assertEqual(os.listdir("."), ["xxx"])
run_python_file("xxx", ["xxx"])
self.assertEqual(os.listdir("."), ["xxx"])
+
+ def test_universal_newlines(self):
+ # Make sure we can read any sort of line ending.
+ pylines = """# try newlines|print 'Hello, world!'|""".split('|')
+ for nl in ('\n', '\r\n', '\r'):
+ fpy = open('nl.py', 'wb')
+ fpy.write(nl.join(pylines))
+ fpy.close()
+ run_python_file('nl.py', ['nl.py'])
+ self.assertEqual(self.stdout(), "Hello, world!\n"*3)
+