From b13756eb0acb81e3ef03c48bdbdc1325397f2684 Mon Sep 17 00:00:00 2001 From: Tomasz Hemperek Date: Sun, 22 Jan 2023 14:37:44 +0100 Subject: [PATCH] Add test for long log line --- cocotb_test/simulator.py | 7 ++++++- tests/test_long_log.py | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 tests/test_long_log.py diff --git a/cocotb_test/simulator.py b/cocotb_test/simulator.py index a70a827..96e5f0f 100644 --- a/cocotb_test/simulator.py +++ b/cocotb_test/simulator.py @@ -292,7 +292,12 @@ def get_abs_paths(self, paths): async def _log_pipe(self, level, stream): while not stream.at_eof(): - line = await stream.readline() + try: + line = await stream.readline() + except ValueError: + warnings.warn("Logging limit is reached. Log file will be truncated.", RuntimeWarning, stacklevel=2) + continue + if line: self.logger.log(level, line.decode("utf-8").rstrip()) diff --git a/tests/test_long_log.py b/tests/test_long_log.py new file mode 100644 index 0000000..16fdd7a --- /dev/null +++ b/tests/test_long_log.py @@ -0,0 +1,23 @@ +import cocotb +from cocotb.triggers import Timer + +import pytest +from cocotb_test.simulator import run +import os + +hdl_dir = os.path.dirname(__file__) + + +@cocotb.test() +def run_test_long_log(dut): + + yield Timer(1) + + dut._log.info("BEFORE") + dut._log.info("LONGLOG" * 100000) + dut._log.info("AFTER") + + +@pytest.mark.skipif(os.getenv("SIM") == "ghdl", reason="VHDL not suported") +def test_long_log(): + run(verilog_sources=[os.path.join(hdl_dir, "dff.sv")], module="test_long_log", toplevel="dff_test")