mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
test fix
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
from datetime import datetime, timezone
|
from datetime import datetime
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import time_machine
|
import time_machine
|
||||||
@@ -6,22 +6,23 @@ from rich.align import Align
|
|||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
from rich.segment import Segment
|
from rich.segment import Segment
|
||||||
|
|
||||||
|
import msgpack
|
||||||
from tests.utilities.render import wait_for_predicate
|
from tests.utilities.render import wait_for_predicate
|
||||||
from textual.devtools.renderables import DevConsoleLog, DevConsoleNotice
|
from textual.devtools.renderables import DevConsoleLog, DevConsoleNotice
|
||||||
|
|
||||||
TIMESTAMP = 1649166819
|
TIMESTAMP = 1649166819
|
||||||
WIDTH = 40
|
WIDTH = 40
|
||||||
# The string "Hello, world!" is encoded in the payload below
|
# The string "Hello, world!" is encoded in the payload below
|
||||||
EXAMPLE_LOG = {
|
_EXAMPLE_LOG = {
|
||||||
"type": "client_log",
|
"type": "client_log",
|
||||||
"payload": {
|
"payload": {
|
||||||
"encoded_segments": "gASVQgAAAAAAAABdlCiMDHJpY2guc2VnbWVudJSMB1NlZ"
|
"segments": b"\x80\x04\x955\x00\x00\x00\x00\x00\x00\x00]\x94\x8c\x0crich.segment\x94\x8c\x07Segment\x94\x93\x94\x8c\rHello, world!\x94NN\x87\x94\x81\x94a.",
|
||||||
"21lbnSUk5SMDUhlbGxvLCB3b3JsZCGUTk6HlIGUaAOMAQqUTk6HlIGUZS4=",
|
|
||||||
"line_number": 123,
|
"line_number": 123,
|
||||||
"path": "abc/hello.py",
|
"path": "abc/hello.py",
|
||||||
"timestamp": TIMESTAMP,
|
"timestamp": TIMESTAMP,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
EXAMPLE_LOG = msgpack.packb(_EXAMPLE_LOG)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
@@ -48,15 +49,10 @@ def test_log_message_render(console):
|
|||||||
right: Align = right_cells[0]
|
right: Align = right_cells[0]
|
||||||
|
|
||||||
# Since we can't guarantee the timezone the tests will run in...
|
# Since we can't guarantee the timezone the tests will run in...
|
||||||
local_time = (
|
local_time = datetime.fromtimestamp(TIMESTAMP)
|
||||||
datetime.fromtimestamp(TIMESTAMP)
|
|
||||||
.replace(tzinfo=timezone.utc)
|
|
||||||
.astimezone(tz=datetime.now().astimezone().tzinfo)
|
|
||||||
)
|
|
||||||
timezone_name = local_time.tzname()
|
|
||||||
string_timestamp = local_time.time()
|
string_timestamp = local_time.time()
|
||||||
|
|
||||||
assert left == f"[dim]{string_timestamp} {timezone_name}"
|
assert left == f"[dim]{string_timestamp}"
|
||||||
assert right.align == "right"
|
assert right.align == "right"
|
||||||
assert "hello.py:123" in right.renderable
|
assert "hello.py:123" in right.renderable
|
||||||
|
|
||||||
@@ -69,7 +65,7 @@ def test_internal_message_render(console):
|
|||||||
|
|
||||||
|
|
||||||
async def test_devtools_valid_client_log(devtools):
|
async def test_devtools_valid_client_log(devtools):
|
||||||
await devtools.websocket.send_json(EXAMPLE_LOG)
|
await devtools.websocket.send_bytes(EXAMPLE_LOG)
|
||||||
assert devtools.is_connected
|
assert devtools.is_connected
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import time_machine
|
|||||||
from aiohttp.web_ws import WebSocketResponse
|
from aiohttp.web_ws import WebSocketResponse
|
||||||
from rich.console import ConsoleDimensions
|
from rich.console import ConsoleDimensions
|
||||||
from rich.panel import Panel
|
from rich.panel import Panel
|
||||||
|
import msgpack
|
||||||
|
|
||||||
from tests.utilities.render import wait_for_predicate
|
from tests.utilities.render import wait_for_predicate
|
||||||
from textual.devtools.client import DevtoolsClient
|
from textual.devtools.client import DevtoolsClient
|
||||||
@@ -32,14 +33,15 @@ async def test_devtools_log_places_encodes_and_queues_message(devtools):
|
|||||||
await devtools._stop_log_queue_processing()
|
await devtools._stop_log_queue_processing()
|
||||||
devtools.log(DevtoolsLog("Hello, world!", CALLER))
|
devtools.log(DevtoolsLog("Hello, world!", CALLER))
|
||||||
queued_log = await devtools.log_queue.get()
|
queued_log = await devtools.log_queue.get()
|
||||||
queued_log_json = json.loads(queued_log)
|
queued_log_data = msgpack.unpackb(queued_log)
|
||||||
assert queued_log_json == {
|
print(repr(queued_log_data))
|
||||||
|
assert queued_log_data == {
|
||||||
"type": "client_log",
|
"type": "client_log",
|
||||||
"payload": {
|
"payload": {
|
||||||
"timestamp": TIMESTAMP,
|
"timestamp": 1649170419,
|
||||||
"path": CALLER_PATH,
|
"path": "a/b/c.py",
|
||||||
"line_number": CALLER_LINENO,
|
"line_number": 123,
|
||||||
"encoded_segments": "gANdcQAoY3JpY2guc2VnbWVudApTZWdtZW50CnEBWA0AAABIZWxsbywgd29ybGQhcQJOTodxA4FxBGgBWAEAAAAKcQVOTodxBoFxB2Uu",
|
"segments": b"\x80\x05\x95B\x00\x00\x00\x00\x00\x00\x00]\x94(\x8c\x0crich.segment\x94\x8c\x07Segment\x94\x93\x94\x8c\rHello, world!\x94NN\x87\x94\x81\x94h\x03\x8c\x01\n\x94NN\x87\x94\x81\x94e.",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,14 +51,15 @@ async def test_devtools_log_places_encodes_and_queues_many_logs_as_string(devtoo
|
|||||||
await devtools._stop_log_queue_processing()
|
await devtools._stop_log_queue_processing()
|
||||||
devtools.log(DevtoolsLog(("hello", "world"), CALLER))
|
devtools.log(DevtoolsLog(("hello", "world"), CALLER))
|
||||||
queued_log = await devtools.log_queue.get()
|
queued_log = await devtools.log_queue.get()
|
||||||
queued_log_json = json.loads(queued_log)
|
queued_log_data = msgpack.unpackb(queued_log)
|
||||||
assert queued_log_json == {
|
print(repr(queued_log_data))
|
||||||
|
assert queued_log_data == {
|
||||||
"type": "client_log",
|
"type": "client_log",
|
||||||
"payload": {
|
"payload": {
|
||||||
"timestamp": TIMESTAMP,
|
"timestamp": 1649170419,
|
||||||
"path": CALLER_PATH,
|
"path": "a/b/c.py",
|
||||||
"line_number": CALLER_LINENO,
|
"line_number": 123,
|
||||||
"encoded_segments": "gANdcQAoY3JpY2guc2VnbWVudApTZWdtZW50CnEBWAsAAABoZWxsbyB3b3JsZHECTk6HcQOBcQRoAVgBAAAACnEFTk6HcQaBcQdlLg==",
|
"segments": b"\x80\x05\x95@\x00\x00\x00\x00\x00\x00\x00]\x94(\x8c\x0crich.segment\x94\x8c\x07Segment\x94\x93\x94\x8c\x0bhello world\x94NN\x87\x94\x81\x94h\x03\x8c\x01\n\x94NN\x87\x94\x81\x94e.",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ from datetime import datetime
|
|||||||
|
|
||||||
import time_machine
|
import time_machine
|
||||||
|
|
||||||
|
import msgpack
|
||||||
from textual.devtools.redirect_output import StdoutRedirector
|
from textual.devtools.redirect_output import StdoutRedirector
|
||||||
|
|
||||||
TIMESTAMP = 1649166819
|
TIMESTAMP = 1649166819
|
||||||
|
|
||||||
|
|
||||||
@time_machine.travel(datetime.fromtimestamp(TIMESTAMP))
|
@time_machine.travel(datetime.utcfromtimestamp(TIMESTAMP))
|
||||||
async def test_print_redirect_to_devtools_only(devtools):
|
async def test_print_redirect_to_devtools_only(devtools):
|
||||||
await devtools._stop_log_queue_processing()
|
await devtools._stop_log_queue_processing()
|
||||||
|
|
||||||
@@ -19,14 +20,15 @@ async def test_print_redirect_to_devtools_only(devtools):
|
|||||||
assert devtools.log_queue.qsize() == 1
|
assert devtools.log_queue.qsize() == 1
|
||||||
|
|
||||||
queued_log = await devtools.log_queue.get()
|
queued_log = await devtools.log_queue.get()
|
||||||
queued_log_json = json.loads(queued_log)
|
queued_log_data = msgpack.unpackb(queued_log)
|
||||||
payload = queued_log_json["payload"]
|
print(repr(queued_log_data))
|
||||||
|
payload = queued_log_data["payload"]
|
||||||
|
|
||||||
assert queued_log_json["type"] == "client_log"
|
assert queued_log_data["type"] == "client_log"
|
||||||
assert payload["timestamp"] == TIMESTAMP
|
assert payload["timestamp"] == TIMESTAMP
|
||||||
assert (
|
assert (
|
||||||
payload["encoded_segments"]
|
payload["segments"]
|
||||||
== "gANdcQAoY3JpY2guc2VnbWVudApTZWdtZW50CnEBWA0AAABIZWxsbywgd29ybGQhcQJOTodxA4FxBGgBWAEAAAAKcQVOTodxBoFxB2Uu"
|
== b"\x80\x05\x95B\x00\x00\x00\x00\x00\x00\x00]\x94(\x8c\x0crich.segment\x94\x8c\x07Segment\x94\x93\x94\x8c\rHello, world!\x94NN\x87\x94\x81\x94h\x03\x8c\x01\n\x94NN\x87\x94\x81\x94e."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -86,8 +88,10 @@ async def test_print_multiple_args_batched_as_one_log(devtools, in_memory_logfil
|
|||||||
|
|
||||||
assert queued_log_json["type"] == "client_log"
|
assert queued_log_json["type"] == "client_log"
|
||||||
assert payload["timestamp"] == TIMESTAMP
|
assert payload["timestamp"] == TIMESTAMP
|
||||||
assert payload[
|
assert (
|
||||||
"encoded_segments"] == "gANdcQAoY3JpY2guc2VnbWVudApTZWdtZW50CnEBWBQAAABIZWxsbyB3b3JsZCBtdWx0aXBsZXECTk6HcQOBcQRoAVgBAAAACnEFTk6HcQaBcQdlLg=="
|
payload["encoded_segments"]
|
||||||
|
== "gANdcQAoY3JpY2guc2VnbWVudApTZWdtZW50CnEBWBQAAABIZWxsbyB3b3JsZCBtdWx0aXBsZXECTk6HcQOBcQRoAVgBAAAACnEFTk6HcQaBcQdlLg=="
|
||||||
|
)
|
||||||
assert len(payload["path"]) > 0
|
assert len(payload["path"]) > 0
|
||||||
assert payload["line_number"] != 0
|
assert payload["line_number"] != 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user