# -*- coding: utf-8 -*- """ Command line test ~~~~~~~~~~~~~~~~~ :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ from __future__ import print_function import io import os import sys import tempfile import unittest from pygments import highlight from pygments.util import StringIO, BytesIO from pygments.cmdline import main as cmdline_main import support TESTFILE, TESTDIR = support.location(__file__) def run_cmdline(*args): saved_stdout = sys.stdout saved_stderr = sys.stderr if sys.version_info > (3,): stdout_buffer = BytesIO() stderr_buffer = BytesIO() new_stdout = sys.stdout = io.TextIOWrapper(stdout_buffer, 'utf-8') new_stderr = sys.stderr = io.TextIOWrapper(stderr_buffer, 'utf-8') else: stdout_buffer = new_stdout = sys.stdout = StringIO() stderr_buffer = new_stderr = sys.stderr = StringIO() try: ret = cmdline_main(["pygmentize"] + list(args)) finally: sys.stdout = saved_stdout sys.stderr = saved_stderr new_stdout.flush() new_stderr.flush() out, err = stdout_buffer.getvalue().decode('utf-8'), \ stderr_buffer.getvalue().decode('utf-8') return (ret, out, err) def run_cmdline_with_closed_stdout(*args): saved_stdout, saved_stderr = sys.stdout, sys.stderr sys.stdout, sys.stderr = StringIO(), StringIO() sys.stdout.buffer = sys.stdout sys.stdout.close() try: ret = cmdline_main(['pygmentize'] + list(args)) err = sys.stderr.getvalue() finally: sys.stdout, sys.stderr = saved_stdout, saved_stderr return ret, err class CmdLineTest(unittest.TestCase): def test_L_opt(self): c, o, e = run_cmdline("-L") self.assertEqual(c, 0) self.assertTrue("Lexers" in o and "Formatters" in o and "Filters" in o and "Styles" in o) c, o, e = run_cmdline("-L", "lexer") self.assertEqual(c, 0) self.assertTrue("Lexers" in o and "Formatters" not in o) c, o, e = run_cmdline("-L", "lexers") self.assertEqual(c, 0) def test_O_opt(self): filename = TESTFILE c, o, e = run_cmdline("-Ofull=1,linenos=true,foo=bar", "-fhtml", filename) self.assertEqual(c, 0) self.assertTrue("foo, bar=baz=," in o) def test_F_opt(self): filename = TESTFILE c, o, e = run_cmdline("-Fhighlight:tokentype=Name.Blubb," "names=TESTFILE filename", "-fhtml", filename) self.assertEqual(c, 0) self.assertTrue('