Use more unique yet short paths for logging
This commit is contained in:
parent
29dac8a188
commit
9b2772b171
2 changed files with 105 additions and 19 deletions
52
src/Test/TestDebug.py
Normal file
52
src/Test/TestDebug.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
from Debug import Debug
|
||||
import gevent
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
class TestDebug:
|
||||
@pytest.mark.parametrize("items,expected", [
|
||||
(["@/src/A/B/C.py:17"], ["A/B/C.py line 17"]), # basic test
|
||||
(["@/src/Db/Db.py:17"], ["Db.py line 17"]), # path compression
|
||||
(["%s:1" % __file__], ["TestDebug.py line 1"]),
|
||||
(["@/plugins/Chart/ChartDb.py:100"], ["ChartDb.py line 100"]), # plugins
|
||||
(["@/main.py:17"], ["main.py line 17"]), # root
|
||||
(["@\\src\\Db\\__init__.py:17"], ["Db/__init__.py line 17"]), # Windows paths
|
||||
(["<frozen importlib._bootstrap>:1"], []), # importlib builtins
|
||||
(["<frozen importlib._bootstrap_external>:1"], []), # importlib builtins
|
||||
(["/home/ivanq/ZeroNet/src/main.py:13"], ["?/src/main.py line 13"]), # best-effort anonymization
|
||||
(["C:\\ZeroNet\\core\\src\\main.py:13"], ["?/src/main.py line 13"]),
|
||||
(["/root/main.py:17"], ["/root/main.py line 17"]),
|
||||
(["{gevent}:13"], ["<gevent>/__init__.py line 13"]), # modules
|
||||
(["{os}:13"], ["<os> line 13"]), # python builtin modules,
|
||||
(["@/src/Db/Db.py:17", "@/src/Db/DbQuery.py:1"], ["Db.py line 17", "DbQuery.py line 1"]), # mutliple args
|
||||
(["@/src/Db/Db.py:17", "@/src/Db/Db.py:1"], ["Db.py line 17", "1"]), # same file
|
||||
(["{os}:1", "@/src/Db/Db.py:17"], ["<os> line 1", "Db.py line 17"]), # builtins
|
||||
(["{gevent}:1"] + ["{os}:3"] * 4 + ["@/src/Db/Db.py:17"], ["<gevent>/__init__.py line 1", "...", "Db.py line 17"]),
|
||||
])
|
||||
def testFormatTraceback(self, items, expected):
|
||||
q_items = []
|
||||
for item in items:
|
||||
file, line = item.rsplit(":", 1)
|
||||
if file.startswith("@"):
|
||||
file = Debug.root_dir + file[1:]
|
||||
file = file.replace("{os}", os.__file__)
|
||||
file = file.replace("{gevent}", gevent.__file__)
|
||||
q_items.append((file, int(line)))
|
||||
assert Debug.formatTraceback(q_items) == expected
|
||||
|
||||
|
||||
def testFormatException(self):
|
||||
try:
|
||||
raise ValueError("Test exception")
|
||||
except:
|
||||
assert Debug.formatException() == "ValueError: Test exception in TestDebug.py line 42"
|
||||
try:
|
||||
os.path.abspath(1)
|
||||
except:
|
||||
assert Debug.formatException().startswith("TypeError: expected str, bytes or os.PathLike object, not int in TestDebug.py line 46 > <posixpath> line ")
|
||||
|
||||
|
||||
def testFormatStack(self):
|
||||
assert Debug.formatStack().startswith("TestDebug.py line 52 > <_pytest>/python.py line ")
|
Loading…
Add table
Add a link
Reference in a new issue