Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def fn():
set_trace()
first = pdbpp.local.GLOBAL_PDB
assert isinstance(pdbpp.local.GLOBAL_PDB, PdbTest)
class PdbLikePytest(object):
@classmethod
def init_pdb(cls):
class NewPdb(PdbTest, pdbpp.Pdb):
def set_trace(self, frame):
print("new_set_trace")
super(NewPdb, self).set_trace(frame)
return NewPdb()
@classmethod
def set_trace(cls, *args, **kwargs):
frame = sys._getframe().f_back
pdb_ = cls.init_pdb(*args, **kwargs)
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_config_pygments(monkeypatch):
import pygments.formatters
assert not hasattr(DefaultConfig, "use_terminal256formatter")
p = Pdb(Config=DefaultConfig)
monkeypatch.delenv("TERM", raising=False)
assert isinstance(
p._get_pygments_formatter(), pygments.formatters.TerminalFormatter
)
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
)
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 == ""
sys.stdout = stdout = MyBytesIO()
sys.stderr = stderr = MyBytesIO()
func()
except InnerTestException:
pass
except bdb.BdbQuit:
print("!! Received unexpected bdb.BdbQuit !!")
except Exception:
# Make it available for pytests output capturing.
print(stdout.get_unicode_value(), file=oldstdout)
raise
finally:
sys.stdin = oldstdin
sys.stdout = oldstdout
sys.stderr = oldstderr
pdbpp.Pdb.get_terminal_size = old_get_terminal_size
stderr = stderr.get_unicode_value()
if stderr:
# Make it available for pytests output capturing.
print(stdout.get_unicode_value())
raise AssertionError("Unexpected output on stderr: %s" % stderr)
return stdout.get_unicode_value().splitlines()
)
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")