From 0a010564ad1de72dc56e9cb20439deebca453751 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sat, 27 Jun 2009 17:36:13 -0400 Subject: 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. --- coverage/execfile.py | 2 +- test/test_execfile.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/coverage/execfile.py b/coverage/execfile.py index d6bcdceb..43bdc5c3 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 eae227a1..6cc7cab8 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) + -- cgit v1.2.1