Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_config_pygments_deprecated_use_terminal256formatter(monkeypatch):
import pygments.formatters
monkeypatch.setenv("TERM", "xterm-256color")
class Config(DefaultConfig):
use_terminal256formatter = False
assert isinstance(
Pdb(Config=Config)._get_pygments_formatter(),
pygments.formatters.TerminalFormatter
)
class Config(DefaultConfig):
use_terminal256formatter = True
assert isinstance(
Pdb(Config=Config)._get_pygments_formatter(),
pygments.formatters.Terminal256Formatter
)
def test_ensure_file_can_write_unicode():
out = io.BytesIO(b"")
stdout = io.TextIOWrapper(out, encoding="latin1")
p = Pdb(Config=DefaultConfig, stdout=stdout)
assert p.stdout.stream is out
p.stdout.write(u"test äöüß")
out.seek(0)
assert out.read().decode("utf-8") == u"test äöüß"
)
class Config(DefaultConfig):
formatter = object()
assert Pdb(Config=Config)._get_pygments_formatter() is Config.formatter
class Config(DefaultConfig):
pygments_formatter_class = "pygments.formatters.TerminalTrueColorFormatter"
assert isinstance(
Pdb(Config=Config)._get_pygments_formatter(),
pygments.formatters.TerminalTrueColorFormatter
)
source = Pdb(Config=Config).format_source("print(42)")
assert source.startswith("\x1b[38;2;0;128;")
assert "print\x1b[39" in source
assert source.endswith("m42\x1b[39m)\n")
def test_config_missing_pygments(use_pygments, monkeypatch_importerror):
class Config(DefaultConfig):
pass
Config.use_pygments = use_pygments
class PdbForMessage(Pdb):
messages = []
def message(self, msg):
self.messages.append(msg)
pdb_ = PdbForMessage(Config=Config)
with monkeypatch_importerror(('pygments', 'pygments.formatters')):
with pytest.raises(ImportError):
pdb_._get_pygments_formatter()
assert pdb_._get_source_highlight_function() is False
assert pdb_.format_source("print(42)") == "print(42)"
if use_pygments is True:
assert pdb_.messages == ['Could not import pygments, disabling.']
else:
def test_py2_ensure_file_can_write_unicode():
import StringIO
stdout = StringIO.StringIO()
stdout.encoding = 'ascii'
p = Pdb(Config=DefaultConfig, stdout=stdout)
assert p.stdout.stream is stdout
p.stdout.write(u"test äöüß")
stdout.seek(0)
assert stdout.read().decode('utf-8') == u"test äöüß"
def test_prompt_setter():
p = pdbpp.Pdb()
assert p.prompt == "(Pdb++) "
p.prompt = "(Pdb)"
assert p.prompt == "(Pdb++)"
p.prompt = "ipdb> "
assert p.prompt == "ipdb++> "
p.prompt = "custom"
assert p.prompt == "custom++"
p.prompt = "custom "
assert p.prompt == "custom++ "
p.prompt = "custom :"
assert p.prompt == "custom++ :"
p.prompt = "custom "
assert p.prompt == "custom++ "
p.prompt = ""
assert p.prompt == ""
)
monkeypatch.setenv("TERM", "xterm-256color")
assert isinstance(
p._get_pygments_formatter(), pygments.formatters.Terminal256Formatter
)
monkeypatch.setenv("TERM", "xterm-kitty")
assert isinstance(
p._get_pygments_formatter(), pygments.formatters.TerminalTrueColorFormatter
)
class Config(DefaultConfig):
formatter = object()
assert Pdb(Config=Config)._get_pygments_formatter() is Config.formatter
class Config(DefaultConfig):
pygments_formatter_class = "pygments.formatters.TerminalTrueColorFormatter"
assert isinstance(
Pdb(Config=Config)._get_pygments_formatter(),
pygments.formatters.TerminalTrueColorFormatter
)
source = Pdb(Config=Config).format_source("print(42)")
assert source.startswith("\x1b[38;2;0;128;")
assert "print\x1b[39" in source
assert source.endswith("m42\x1b[39m)\n")
highlight = True
class ConfigWithPygments(ConfigTest):
use_pygments = True
class ConfigWithPygmentsNone(ConfigTest):
use_pygments = None
class ConfigWithPygmentsAndHighlight(ConfigWithPygments, ConfigWithHighlight):
pass
class PdbTest(pdbpp.Pdb):
use_rawinput = 1
def __init__(self, *args, **kwds):
readrc = kwds.pop("readrc", False)
nosigint = kwds.pop("nosigint", True)
kwds.setdefault('Config', ConfigTest)
if sys.version_info >= (3, 6):
super(PdbTest, self).__init__(*args, readrc=readrc, **kwds)
else:
super(PdbTest, self).__init__(*args, **kwds)
# Do not install sigint_handler in do_continue by default.
self.nosigint = nosigint
def _open_editor(self, editcmd):
print("RUN %s" % editcmd)