Open
Description
The issue here can be demonstrated by running the following script on Windows:
import mako.cmd
import sys
with open("template_file", "w") as f:
print("Line 1", file=f)
print("Line 2", file=f)
print("Line 3", file=f)
sys.argv.append("--output-file")
sys.argv.append("rendered_file")
sys.argv.append("template_file")
assert sys.argv[1:] == ["--output-file", "rendered_file", "template_file"]
# pass sys.argv off to mako
mako.cmd.cmdline()
# awkward \r\r\n EOL sequences is what is written to disk
with open("rendered_file", "rb") as f:
rendered = f.read()
assert rendered == b'Line 1\r\r\nLine 2\r\r\nLine 3\r\r\n'
# If you were to open/read in text mode it shows up as two newlines
with open("rendered_file", "rt") as f:
rendered = f.read()
assert rendered == 'Line 1\n\nLine 2\n\nLine 3\n\n'
It's odd that read_file() in util.py opens / reads in binary mode but then cmdline() in cmd.py opens / writes in text mode. The whole point of using text mode should be to convert EOLs on Windows, but it does not do this correctly.
Metadata
Metadata
Assignees
Labels
No labels