Commit c29966f3 authored by Brian Curtin's avatar Brian Curtin

merge

parents 0275fc19 5b0a4d22
...@@ -636,7 +636,7 @@ def main(args): ...@@ -636,7 +636,7 @@ def main(args):
parser.add_option( parser.add_option(
"-e", "--encoding", "-e", "--encoding",
dest="encoding", default=None, dest="encoding", default=None,
help="Encoding to use for output" help="Encoding to use for output."
) )
parser.add_option( parser.add_option(
"-t", "--type", "-t", "--type",
...@@ -662,10 +662,11 @@ def main(args): ...@@ -662,10 +662,11 @@ def main(args):
if encoding is None: if encoding is None:
encoding = sys.getdefaultencoding() encoding = sys.getdefaultencoding()
optdict = dict(encoding=encoding, css=options.css) optdict = dict(encoding=encoding, css=options.css)
write = sys.stdout.buffer.write
if len(args) == 1: if len(args) == 1:
print(cal.formatyearpage(datetime.date.today().year, **optdict)) write(cal.formatyearpage(datetime.date.today().year, **optdict))
elif len(args) == 2: elif len(args) == 2:
print(cal.formatyearpage(int(args[1]), **optdict)) write(cal.formatyearpage(int(args[1]), **optdict))
else: else:
parser.error("incorrect number of arguments") parser.error("incorrect number of arguments")
sys.exit(1) sys.exit(1)
...@@ -687,9 +688,11 @@ def main(args): ...@@ -687,9 +688,11 @@ def main(args):
else: else:
parser.error("incorrect number of arguments") parser.error("incorrect number of arguments")
sys.exit(1) sys.exit(1)
write = sys.stdout.write
if options.encoding: if options.encoding:
result = result.encode(options.encoding) result = result.encode(options.encoding)
print(result) write = sys.stdout.buffer.write
write(result)
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -2,6 +2,7 @@ import calendar ...@@ -2,6 +2,7 @@ import calendar
import unittest import unittest
from test import support from test import support
from test.script_helper import assert_python_ok
import time import time
import locale import locale
...@@ -451,6 +452,11 @@ class LeapdaysTestCase(unittest.TestCase): ...@@ -451,6 +452,11 @@ class LeapdaysTestCase(unittest.TestCase):
self.assertEqual(calendar.leapdays(1997,2020), 5) self.assertEqual(calendar.leapdays(1997,2020), 5)
class ConsoleOutputTestCase(unittest.TestCase):
def test_outputs_bytes(self):
(return_code, stdout, stderr) = assert_python_ok('-m', 'calendar', '--type=html', '2010')
self.assertEqual(stdout[:6], b'<?xml ')
def test_main(): def test_main():
support.run_unittest( support.run_unittest(
OutputTestCase, OutputTestCase,
...@@ -460,6 +466,7 @@ def test_main(): ...@@ -460,6 +466,7 @@ def test_main():
TimegmTestCase, TimegmTestCase,
MonthRangeTestCase, MonthRangeTestCase,
LeapdaysTestCase, LeapdaysTestCase,
ConsoleOutputTestCase
) )
......
...@@ -251,6 +251,8 @@ Core and Builtins ...@@ -251,6 +251,8 @@ Core and Builtins
Library Library
------- -------
- Issue #10087: Fix the html output format of the calendar module.
- Issue #12540: Prevent zombie IDLE processes on Windows due to changes - Issue #12540: Prevent zombie IDLE processes on Windows due to changes
in os.kill(). in os.kill().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment