ソースを参照

#288 fix log.push for lines containing line breaks

Falko Schindler 2 年 前
コミット
988285ada5
2 ファイル変更14 行追加5 行削除
  1. 1 1
      nicegui/elements/log.py
  2. 13 4
      tests/test_log.py

+ 1 - 1
nicegui/elements/log.py

@@ -24,6 +24,6 @@ class Log(Element):
         self.lines: deque[str] = deque(maxlen=max_lines)
 
     def push(self, line: str) -> None:
-        self.lines.append(line)
+        self.lines.extend(line.splitlines())
         self._props['lines'] = '\n'.join(self.lines)
         self.run_method('push', line)

+ 13 - 4
tests/test_log.py

@@ -1,3 +1,5 @@
+from selenium.webdriver.common.by import By
+
 from nicegui import ui
 
 from .screen import Screen
@@ -11,7 +13,14 @@ def test_log(screen: Screen):
     log.push('D')
 
     screen.open('/')
-    screen.should_not_contain('A')
-    screen.should_contain('B')
-    screen.should_contain('C')
-    screen.should_contain('D')
+    assert screen.selenium.find_element(By.ID, log.id).text == 'B\nC\nD'
+
+
+def test_log_with_newlines(screen: Screen):
+    log = ui.log(max_lines=3)
+    log.push('A')
+    log.push('B')
+    log.push('C\nD')
+
+    screen.open('/')
+    assert screen.selenium.find_element(By.ID, log.id).text == 'B\nC\nD'