Source: rich
Version: 9.11.0-1
Severity: important

Hello, looks like the testsuite is failing with TERM=unknown, I don't really 
know why, but calling dh_auto_test with TERM=linux seems to fix it.

override_dh_auto_test:
        TERM=linux PYBUILD_SYSTEM=custom 
PYBUILD_TEST_ARGS="PYTHONPATH=$(CURDIR) {interpreter} -m pytest" dh_auto_test


I'm not adding the tag "patch" because some bug in the code probably exists.

Example of failure:
https://launchpadlibrarian.net/524437846/buildlog_ubuntu-hirsute-amd64.rich_9.11.0-1_BUILDING.txt.gz



APT_CONFIG=/var/lib/sbuild/apt.conf
DEB_BUILD_OPTIONS=parallel=4
HOME=/sbuild-nonexistent
LANG=C.UTF-8
LC_ALL=C.UTF-8
LOGNAME=buildd
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SCHROOT_ALIAS_NAME=build-PACKAGEBUILD-21056332
SCHROOT_CHROOT_NAME=build-PACKAGEBUILD-21056332
SCHROOT_COMMAND=env
SCHROOT_GID=2501
SCHROOT_GROUP=buildd
SCHROOT_SESSION_ID=build-PACKAGEBUILD-21056332
SCHROOT_UID=2001
SCHROOT_USER=buildd
SHELL=/bin/sh
TERM=unknown
USER=buildd
V=1

dpkg-buildpackage
-----------------

dpkg-buildpackage: info: source package rich
dpkg-buildpackage: info: source version 9.11.0-1
dpkg-buildpackage: info: source distribution unstable
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
dpkg-source: info: using options from rich-9.11.0/debian/source/options: 
--extend-diff-ignore=^[^/]+.egg-info/
 fakeroot debian/rules clean
dh clean --with python3 --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:232: python3.9 setup.py clean 
running clean
removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_rich/build' (and everything 
under it)
'build/bdist.linux-x86_64' does not exist -- can't clean it
'build/scripts-3.9' does not exist -- can't clean it
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules build
dh build --with python3 --buildsystem=pybuild
   dh_update_autotools_config -O--buildsystem=pybuild
   dh_autoreconf -O--buildsystem=pybuild
   dh_auto_configure -O--buildsystem=pybuild
I: pybuild base:232: python3.9 setup.py config 
running config
   dh_auto_build -O--buildsystem=pybuild
I: pybuild base:232: /usr/bin/python3 setup.py build 
running build
   debian/rules override_dh_auto_test
make[1]: Entering directory '/<<PKGBUILDDIR>>'
PYBUILD_SYSTEM=custom PYBUILD_TEST_ARGS="PYTHONPATH=/<<PKGBUILDDIR>> 
{interpreter} -m pytest" dh_auto_test
I: pybuild base:232: PYTHONPATH=/<<PKGBUILDDIR>> python3.9 -m pytest
============================= test session starts ==============================
platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0
rootdir: /<<PKGBUILDDIR>>
collected 464 items

tests/test_align.py ..........F.....                                     [  3%]
tests/test_ansi.py .                                                     [  3%]
tests/test_bar.py .......                                                [  5%]
tests/test_block_bar.py ....                                             [  6%]
tests/test_box.py ......                                                 [  7%]
tests/test_card.py .                                                     [  7%]
tests/test_cells.py .                                                    [  7%]
tests/test_color.py ................                                     [ 11%]
tests/test_color_triplet.py ...                                          [ 11%]
tests/test_columns.py .                                                  [ 12%]
tests/test_columns_align.py .                                            [ 12%]
tests/test_console.py F............FF.....F......FFF.FFF.........F...... [ 23%]
...FF.                                                                   [ 24%]
tests/test_constrain.py .                                                [ 24%]
tests/test_containers.py ....                                            [ 25%]
tests/test_control.py ..                                                 [ 25%]
tests/test_emoji.py ....                                                 [ 26%]
tests/test_file_proxy.py ..                                              [ 27%]
tests/test_filesize.py ..                                                [ 27%]
tests/test_highlighter.py .....................................          [ 35%]
tests/test_inspect.py ........                                           [ 37%]
tests/test_jupyter.py .                                                  [ 37%]
tests/test_layout.py ..                                                  [ 37%]
tests/test_live.py .FFFFF.F.F                                            [ 40%]
tests/test_live_render.py ....                                           [ 40%]
tests/test_log.py ..                                                     [ 41%]
tests/test_logging.py FF                                                 [ 41%]
tests/test_lrucache.py .                                                 [ 42%]
tests/test_markdown.py ..                                                [ 42%]
tests/test_markdown_no_hyperlinks.py .                                   [ 42%]
tests/test_markup.py ...............                                     [ 45%]
tests/test_measure.py .....                                              [ 46%]
tests/test_padding.py .....                                              [ 48%]
tests/test_palette.py .                                                  [ 48%]
tests/test_panel.py ........                                             [ 50%]
tests/test_pick.py .                                                     [ 50%]
tests/test_pretty.py ................                                    [ 53%]
tests/test_progress.py .........FFFFF......F                             [ 58%]
tests/test_prompt.py ......                                              [ 59%]
tests/test_protocol.py ...                                               [ 60%]
tests/test_ratio.py .......                                              [ 61%]
tests/test_rich_print.py ....                                            [ 62%]
tests/test_rule.py F..FF..                                               [ 64%]
tests/test_screen.py .                                                   [ 64%]
tests/test_segment.py ...............                                    [ 67%]
tests/test_spinner.py ...                                                [ 68%]
tests/test_stack.py .                                                    [ 68%]
tests/test_status.py ..                                                  [ 68%]
tests/test_style.py ......................                               [ 73%]
tests/test_styled.py F                                                   [ 73%]
tests/test_syntax.py ............                                        [ 76%]
tests/test_table.py F....                                                [ 77%]
tests/test_tabulate.py .                                                 [ 77%]
tests/test_text.py ..................................................... [ 89%]
........................                                                 [ 94%]
tests/test_theme.py .....                                                [ 95%]
tests/test_tools.py ....                                                 [ 96%]
tests/test_traceback.py ............                                     [ 98%]
tests/test_tree.py ....s.                                                [100%]

=================================== FAILURES ===================================
____________________________ test_align_right_style ____________________________

    def test_align_right_style():
        console = Console(
            file=io.StringIO(), width=10, color_system="truecolor", 
force_terminal=True
        )
        console.print(Align("foo", "right", style="on blue"))
>       assert console.file.getvalue() == "\x1b[44m       
> \x1b[0m\x1b[44mfoo\x1b[0m\n"
E       AssertionError: assert '\x1b[44m    ...mfoo\x1b[0m\n' == '\x1b[44m    
...mfoo\x1b[0m\n'
E         -        foo
E         +                                                                
              foo

tests/test_align.py:101: AssertionError
______________________________ test_dumb_terminal ______________________________

    def test_dumb_terminal():
        console = Console(force_terminal=True)
>       assert console.color_system is not None
E       assert None is not None
E        +  where None = <console width=80 None>.color_system

tests/test_console.py:29: AssertionError
_______________________________ test_show_cursor _______________________________

    def test_show_cursor():
        console = Console(file=io.StringIO(), force_terminal=True, 
legacy_windows=False)
        console.show_cursor(False)
        console.print("foo")
        console.show_cursor(True)
>       assert console.file.getvalue() == "\x1b[?25lfoo\n\x1b[?25h"
E       AssertionError: assert 'foo\n' == '\x1b[?25lfoo\n\x1b[?25h'
E         + foo
E         - [?25lfoo
E         - [?25h

tests/test_console.py:168: AssertionError
__________________________________ test_clear __________________________________

    def test_clear():
        console = Console(file=io.StringIO(), force_terminal=True)
        console.clear()
        console.clear(home=False)
>       assert console.file.getvalue() == "\033[2J\033[H" + "\033[2J"
E       AssertionError: assert '' == '\x1b[2J\x1b[H\x1b[2J'
E         - 

tests/test_console.py:175: AssertionError
_________________________________ test_control _________________________________

    def test_control():
        console = Console(file=io.StringIO(), force_terminal=True)
        console.control("FOO")
        console.print("BAR")
>       assert console.file.getvalue() == "FOOBAR\n"
E       AssertionError: assert 'BAR\n' == 'FOOBAR\n'
E         - FOOBAR
E         + BAR

tests/test_console.py:213: AssertionError
______________________________ test_justify_left _______________________________

    def test_justify_left():
        console = Console(file=io.StringIO(), force_terminal=True, width=20)
        console.print("FOO", justify="left")
>       assert console.file.getvalue() == "FOO                 \n"
E       AssertionError: assert 'FOO         ...           \n' == 'FOO           
      \n'
E         - FOO                 
E         + FOO

tests/test_console.py:278: AssertionError
_____________________________ test_justify_center ______________________________

    def test_justify_center():
        console = Console(file=io.StringIO(), force_terminal=True, width=20)
        console.print("FOO", justify="center")
>       assert console.file.getvalue() == "        FOO         \n"
E       AssertionError: assert '            ...           \n' == '        FOO   
      \n'
E         -         FOO         
E         +                                       FOO

tests/test_console.py:284: AssertionError
______________________________ test_justify_right ______________________________

    def test_justify_right():
        console = Console(file=io.StringIO(), force_terminal=True, width=20)
        console.print("FOO", justify="right")
>       assert console.file.getvalue() == "                 FOO\n"
E       AssertionError: assert '            ...        FOO\n' == '              
   FOO\n'
E         -                  FOO
E         +                                                                     
         FOO

tests/test_console.py:290: AssertionError
_________________________ test_justify_renderable_left _________________________

    def test_justify_renderable_left():
        console = Console(
            file=io.StringIO(), force_terminal=True, width=10, 
legacy_windows=False
        )
        console.print(Panel("FOO", expand=False, padding=0), justify="left")
>       assert console.file.getvalue() == "╭───╮     \n│FOO│     \n╰───╯     \n"
E       AssertionError: assert '╭───╮       ...           \n' == '╭───╮     
\n...n╰───╯     \n'
E         - ╭───╮     
E         - │FOO│     
E         - ╰───╯     
E         + ╭───╮                                                               
            
E         + │FOO│                                                               
            
E         + ╰───╯

tests/test_console.py:306: AssertionError
________________________ test_justify_renderable_center ________________________

    def test_justify_renderable_center():
        console = Console(
            file=io.StringIO(), force_terminal=True, width=10, 
legacy_windows=False
        )
        console.print(Panel("FOO", expand=False, padding=0), justify="center")
>       assert console.file.getvalue() == "  ╭───╮   \n  │FOO│   \n  ╰───╯   \n"
E       AssertionError: assert '            ...           \n' == '  ╭───╮   
\n...n  ╰───╯   \n'
E         -   ╭───╮   
E         -   │FOO│   
E         -   ╰───╯   
E         +                                      ╭───╮                          
            
E         +                                      │FOO│                          
            
E         +                                      ╰───╯

tests/test_console.py:314: AssertionError
________________________ test_justify_renderable_right _________________________

    def test_justify_renderable_right():
        console = Console(
            file=io.StringIO(), force_terminal=True, width=20, 
legacy_windows=False
        )
        console.print(Panel("FOO", expand=False, padding=0), justify="right")
>       assert (
            console.file.getvalue()
            == "               ╭───╮\n               │FOO│\n               
╰───╯\n"
        )
E       AssertionError: assert '            ...      ╰───╯\n' == '            
...      ╰───╯\n'
E         -                ╭───╮
E         -                │FOO│
E         -                ╰───╯
E         +                                                                     
       ╭───╮
E         +                                                                     
       │FOO│
E         +                                                                     
       ╰───╯

tests/test_console.py:322: AssertionError
__________________________________ test_bell ___________________________________

    def test_bell() -> None:
        console = Console(force_terminal=True)
        console.begin_capture()
        console.bell()
>       assert console.end_capture() == "\x07"
E       AssertionError: assert '' == '\x07'
E         - 

tests/test_console.py:412: AssertionError
_________________________________ test_screen __________________________________

    @pytest.mark.skipif(sys.platform == "win32", reason="does not run on 
windows")
    def test_screen():
        console = Console(color_system=None, force_terminal=True, 
force_interactive=True)
        with console.capture() as capture:
            with console.screen():
                console.print("Don't panic")
        expected = "\x1b[?1049h\x1b[H\x1b[?25lDon't panic\n\x1b[?1049l\x1b[?25h"
        result = capture.get()
        print(repr(result))
>       assert result == expected
E       assert "Don't panic\n" == '\x1b[?1049h\...049l\x1b[?25h'
E         + Don't panic
E         - [?1049h[?25lDon't panic
E         - [?1049l[?25h

tests/test_console.py:526: AssertionError
----------------------------- Captured stdout call -----------------------------
"Don't panic\n"
______________________________ test_screen_update ______________________________

    @pytest.mark.skipif(sys.platform == "win32", reason="does not run on 
windows")
    def test_screen_update():
        console = Console(width=20, height=4, color_system="truecolor", 
force_terminal=True)
        with console.capture() as capture:
            with console.screen() as screen:
                screen.update("foo", style="blue")
                screen.update("bar")
                screen.update()
        result = capture.get()
        print(repr(result))
        expected = "\x1b[?1049h\x1b[H\x1b[?25l\x1b[34mfoo\x1b[0m\x1b[34m        
         \x1b[0m\n\x1b[34m                    \x1b[0m\n\x1b[34m                 
   \x1b[0m\n\x1b[34m                    \x1b[0m\x1b[34mbar\x1b[0m\x1b[34m       
          \x1b[0m\n\x1b[34m                    \x1b[0m\n\x1b[34m                
    \x1b[0m\n\x1b[34m                    \x1b[0m\x1b[34mbar\x1b[0m\x1b[34m      
           \x1b[0m\n\x1b[34m                    \x1b[0m\n\x1b[34m               
     \x1b[0m\n\x1b[34m                    \x1b[0m\x1b[?1049l\x1b[?25h"
>       assert result == expected
E       AssertionError: assert '\x1b[34mfoo\...      \x1b[0m' == 
'\x1b[?1049h\...049l\x1b[?25h'
E         - [?1049h[?25lfoo                 
E         ? -----------------
E         + foo                 
E                               
E                               
E                               bar                 
E                               ...
E         
E         ...Full output truncated (8 lines hidden), use '-vv' to show

tests/test_console.py:540: AssertionError
----------------------------- Captured stdout call -----------------------------
'\x1b[34mfoo\x1b[0m\x1b[34m                 \x1b[0m\n\x1b[34m                   
 \x1b[0m\n\x1b[34m                    \x1b[0m\n\x1b[34m                    
\x1b[0m\x1b[34mbar\x1b[0m\x1b[34m                 \x1b[0m\n\x1b[34m             
       \x1b[0m\n\x1b[34m                    \x1b[0m\n\x1b[34m                   
 \x1b[0m\x1b[34mbar\x1b[0m\x1b[34m                 \x1b[0m\n\x1b[34m            
        \x1b[0m\n\x1b[34m                    \x1b[0m\n\x1b[34m                  
  \x1b[0m'
_____________________________ test_growing_display _____________________________

    def test_growing_display() -> None:
        console = create_capture_console()
        console.begin_capture()
        with Live(console=console, auto_refresh=False) as live:
            display = ""
            for step in range(10):
                display += f"Step {step}\n"
                live.update(display, refresh=True)
        output = console.end_capture()
        print(repr(output))
>       assert (
            output
            == "\x1b[?25lStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 
4\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 
5\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 
6\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 
7\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 
8\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\n\x1b[?25h"
        )
E       AssertionError: assert 'Step 0\nStep...8\nStep 9\n\n' == 
'\x1b[?25lSte...\n\n\x1b[?25h'
E         - [?25lStep 0
E         - 

E         - Step 0
E         - Step 1
E         ?      ^
E         + Step 0
E         ?      ^...
E         
E         ...Full output truncated (74 lines hidden), use '-vv' to show

tests/test_live.py:49: AssertionError
----------------------------- Captured stdout call -----------------------------
'Step 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\n'
________________________ test_growing_display_transient ________________________

    def test_growing_display_transient() -> None:
        console = create_capture_console()
        console.begin_capture()
        with Live(console=console, auto_refresh=False, transient=True) as live:
            display = ""
            for step in range(10):
                display += f"Step {step}\n"
                live.update(display, refresh=True)
        output = console.end_capture()
>       assert (
            output
            == "\x1b[?25lStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 
4\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 
5\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 
6\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 
7\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 
8\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\n\x1b[?25h\r\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K"
        )
E       AssertionError: assert '\n' == '\x1b[?25lSte...x1b[1A\x1b[2K'
E         Strings contain only whitespace, escaping them using repr()
E         - '\x1b[?25lStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 
4\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 
5\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\...
E         
E         ...Full output truncated (2 lines hidden), use '-vv' to show

tests/test_live.py:64: AssertionError
____________________ test_growing_display_overflow_ellipsis ____________________

    def test_growing_display_overflow_ellipsis() -> None:
        console = create_capture_console(height=5)
        console.begin_capture()
        with Live(
            console=console, auto_refresh=False, vertical_overflow="ellipsis"
        ) as live:
            display = ""
            for step in range(10):
                display += f"Step {step}\n"
                live.update(display, refresh=True)
        output = console.end_capture()
>       assert (
            output
            == "\x1b[?25lStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\n                            ...                      
       \r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\n                            ...                      
       \r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\n                            ...                      
       \r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\n                            ...                      
       \r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\n                            ...                      
       \r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\n                            ...                      
       \r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\n\x1b[?25h"
        )
E       AssertionError: assert 'Step 0\nStep...8\nStep 9\n\n' == 
'\x1b[?25lSte...\n\n\x1b[?25h'
E         - [?25lStep 0
E         - 

E         - Step 0
E         - Step 1
E         ?      ^
E         + Step 0
E         ?      ^...
E         
E         ...Full output truncated (53 lines hidden), use '-vv' to show

tests/test_live.py:81: AssertionError
______________________ test_growing_display_overflow_crop ______________________

    def test_growing_display_overflow_crop() -> None:
        console = create_capture_console(height=5)
        console.begin_capture()
        with Live(console=console, auto_refresh=False, 
vertical_overflow="crop") as live:
            display = ""
            for step in range(10):
                display += f"Step {step}\n"
                live.update(display, refresh=True)
        output = console.end_capture()
>       assert (
            output
            == "\x1b[?25lStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 
4\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\nStep 2\nStep 3\nStep 
4\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\nStep 2\nStep 3\nStep 
4\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\nStep 2\nStep 3\nStep 
4\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\nStep 2\nStep 3\nStep 
4\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\nStep 2\nStep 3\nStep 
4\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 9\n\n\x1b[?25h"
        )
E       AssertionError: assert 'Step 0\nStep...8\nStep 9\n\n' == 
'\x1b[?25lSte...\n\n\x1b[?25h'
E         - [?25lStep 0
E         - 

E         - Step 0
E         - Step 1
E         ?      ^
E         + Step 0
E         ?      ^...
E         
E         ...Full output truncated (53 lines hidden), use '-vv' to show

tests/test_live.py:96: AssertionError
____________________ test_growing_display_overflow_visible _____________________

    def test_growing_display_overflow_visible() -> None:
        console = create_capture_console(height=5)
        console.begin_capture()
        with Live(console=console, auto_refresh=False, 
vertical_overflow="visible") as live:
            display = ""
            for step in range(10):
                display += f"Step {step}\n"
                live.update(display, refresh=True)
        output = console.end_capture()
>       assert (
            output
            == "\x1b[?25lStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 
4\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 
5\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 
6\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 
7\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 
8\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\n\x1b[?25h"
        )
E       AssertionError: assert 'Step 0\nStep...8\nStep 9\n\n' == 
'\x1b[?25lSte...\n\n\x1b[?25h'
E         - [?25lStep 0
E         - 

E         - Step 0
E         - Step 1
E         ?      ^
E         + Step 0
E         ?      ^...
E         
E         ...Full output truncated (74 lines hidden), use '-vv' to show

tests/test_live.py:111: AssertionError
____________________ test_growing_display_console_redirect _____________________

    def test_growing_display_console_redirect() -> None:
        console = create_capture_console()
        console.begin_capture()
        with Live(console=console, auto_refresh=False) as live:
            display = ""
            for step in range(10):
                console.print(f"Running step {step}")
                display += f"Step {step}\n"
                live.update(display, refresh=True)
        output = console.end_capture()
>       assert (
            output
            == "\x1b[?25lRunning step 0\n\r\x1b[2KStep 
0\n\r\x1b[2K\x1b[1A\x1b[2KRunning step 1\nStep 0\n\r\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning step 2\nStep 0\nStep 
1\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 0\nStep 1\nStep 
2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning step 3\nStep 
0\nStep 1\nStep 2\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning 
step 4\nStep 0\nStep 1\nStep 2\nStep 
3\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep 
0\nStep 1\nStep 2\nStep 3\nStep 
4\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning
 step 5\nStep 0\nStep 1\nStep 2\nStep 3\nStep 
4\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 
5\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning
 step 6\nStep 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 
5\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 
6\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning
 step 7\nStep 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 
6\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 
7\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning
 step 8\nStep 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 
7\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 
8\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KRunning
 step 9\nStep 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 
8\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2KStep
 0\nStep 1\nStep 2\nStep 3\nStep 4\nStep 5\nStep 6\nStep 7\nStep 8\nStep 
9\n\n\x1b[?25h"
        )
E       AssertionError: assert 'Running step...8\nStep 9\n\n' == 
'\x1b[?25lRun...\n\n\x1b[?25h'
E         - [?25lRunning step 0
E         ? ------
E         + Running step 0
E         - 

E         - Step 0
E         - 

E         - Running step 1...
E         
E         ...Full output truncated (147 lines hidden), use '-vv' to show

tests/test_live.py:143: AssertionError
_______________________________ test_live_screen _______________________________

    def test_live_screen() -> None:
        console = create_capture_console(width=20, height=5)
        console.begin_capture()
        with Live(Text("foo"), screen=True, console=console, 
auto_refresh=False) as live:
            live.refresh()
        result = console.end_capture()
        print(repr(result))
        expected = "\x1b[?1049h\x1b[H\x1b[?25l\x1b[Hfoo                 \n      
              \n                    \n                    \n                    
\x1b[Hfoo                 \n                    \n                    \n        
            \n                    \x1b[?25h\x1b[?1049l"
>       assert result == expected
E       AssertionError: assert '' == '\x1b[?1049h\...5h\x1b[?1049l'
E         - [?1049h[?25lfoo                 
E         -                     
E         -                     
E         -                     
E         -                     foo                 
E         -                     
E         -                     ...
E         
E         ...Full output truncated (3 lines hidden), use '-vv' to show

tests/test_live.py:172: AssertionError
----------------------------- Captured stdout call -----------------------------
''
________________________________ test_exception ________________________________

    @skip_win
    def test_exception():
        console = Console(
            file=io.StringIO(), force_terminal=True, width=140, 
color_system="truecolor"
        )
        handler_with_tracebacks = RichHandler(
            console=console, enable_link_path=False, rich_tracebacks=True
        )
        log.addHandler(handler_with_tracebacks)
    
        try:
            1 / 0
        except ZeroDivisionError:
            log.exception("message")
    
        render = handler_with_tracebacks.console.file.getvalue()
        print(render)
    
        assert "ZeroDivisionError" in render
        assert "message" in render
>       assert "division by zero" in render
E       AssertionError: assert 'division by zero' in '\x1b[2;36m[02/22/21 
11:41:25]\x1b[0m\x1b[2;36m \x1b[0m\x1b[1;31mERROR   \x1b[0m message             
             \x1b...0mdivision by                     \n                        
     zero                                               \n'

tests/test_logging.py:48: AssertionError
----------------------------- Captured stdout call -----------------------------
[02/22/21 11:41:25] ERROR    message           
               test_logging.py:41
                             ╭─ Traceback 
(most recent call─╮                   
                             │ /<<BUILDDIR>>/rich-9.11 
│                   
                             │ 
.0/tests/test_logging.py:39  │          
         
                             │ in test_exception            
│                   
                             │                              │ 
                  
                             │   36 │   
log.addHandler(hand │                   
                             │   37 │                  
     │                   
                             │   38 │   try:  
              │                   
                             │ ❱ 39 │   │   
1 / 0           │                   
                             │   40 │   
except ZeroDivision │                   
                             │   41 │   │   
log.exception(" │                   
                             ╰──────────────────────────────╯          
         
                             ZeroDivisionError: division by          
           
                             zero                                               

------------------------------ Captured log call -------------------------------
ERROR    rich:test_logging.py:41 message
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/tests/test_logging.py", line 39, in test_exception
    1 / 0
ZeroDivisionError: division by zero
_______________________ test_exception_with_extra_lines ________________________

    def test_exception_with_extra_lines():
        console = Console(
            file=io.StringIO(), force_terminal=True, width=140, 
color_system="truecolor"
        )
        handler_extra_lines = RichHandler(
            console=console,
            enable_link_path=False,
            markup=True,
            rich_tracebacks=True,
            tracebacks_extra_lines=5,
        )
        log.addHandler(handler_extra_lines)
    
        try:
            1 / 0
        except ZeroDivisionError:
            log.exception("message")
    
        render = handler_extra_lines.console.file.getvalue()
        print(render)
    
        assert "ZeroDivisionError" in render
        assert "message" in render
>       assert "division by zero" in render
E       AssertionError: assert 'division by zero' in '\x1b[2;36m[02/22/21 
11:41:25]\x1b[0m\x1b[2;36m \x1b[0m\x1b[1;31mERROR   \x1b[0m message             
             \x1b...0mdivision by                     \n                        
     zero                                               \n'

tests/test_logging.py:74: AssertionError
----------------------------- Captured stdout call -----------------------------
[02/22/21 11:41:25] ERROR    message           
               test_logging.py:67
                             ╭─ Traceback 
(most recent call─╮                   
                             │ /<<BUILDDIR>>/rich-9.11 
│                   
                             │ 
.0/tests/test_logging.py:65  │          
         
                             │ in test_exception_with_extra 
│                   
                             │ _lines                       
│                   
                             │                              │ 
                  
                             │   60 │   │   
tracebacks_extr │                   
                             │   61 │   )              
     │                   
                             │   62 │   
log.addHandler(hand │                   
                             │   63 │                  
     │                   
                             │   64 │   try:  
              │                   
                             │ ❱ 65 │   │   
1 / 0           │                   
                             │   66 │   
except ZeroDivision │                   
                             │   67 │   │   
log.exception(" │                   
                             │   68 │                  
     │                   
                             │   69 │   render = 
handler_ex │                   
                             │   70 │   
print(render)       │                   
                             ╰──────────────────────────────╯          
         
                             ZeroDivisionError: division by          
           
                             zero                                               

------------------------------ Captured log call -------------------------------
ERROR    rich:test_logging.py:67 message
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/tests/test_logging.py", line 65, in 
test_exception_with_extra_lines
    1 / 0
ZeroDivisionError: division by zero
_______________________________ test_expand_bar ________________________________

    def test_expand_bar() -> None:
        console = Console(
            file=io.StringIO(),
            force_terminal=True,
            width=10,
            color_system="truecolor",
            legacy_windows=False,
        )
        progress = Progress(
            BarColumn(bar_width=None),
            console=console,
            get_time=lambda: 1.0,
            auto_refresh=False,
        )
        progress.add_task("foo")
        with progress:
            pass
        expected = 
"\x1b[?25l\x1b[38;5;237m━━━━━━━━━━\x1b[0m\r\x1b[2K\x1b[38;5;237m━━━━━━━━━━\x1b[0m\n\x1b[?25h"
        render_result = console.file.getvalue()
        print("RESULT\n", repr(render_result))
        print("EXPECTED\n", repr(expected))
>       assert render_result == expected
E       AssertionError: assert '\x1b[38;5;23...━━━━\x1b[0m\n' == 
'\x1b[?25l\x1...0m\n\x1b[?25h'
E         + 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
E         - [?25l━━━━━━━━━━

E         - ━━━━━━━━━━
E         - [?25h

tests/test_progress.py:193: AssertionError
----------------------------- Captured stdout call -----------------------------
RESULT
 
'\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\n'
EXPECTED
 
'\x1b[?25l\x1b[38;5;237m━━━━━━━━━━\x1b[0m\r\x1b[2K\x1b[38;5;237m━━━━━━━━━━\x1b[0m\n\x1b[?25h'
_________________________________ test_render __________________________________

    def test_render() -> None:
        expected = "\x1b[?25lfoo  
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\nbar  
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 53%\x1b[0m \x1b[36m-:--:--\x1b[0m\nfoo2 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m 
\x1b[36m0:00:00\x1b[0m\r\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2Kfoo  
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\nbar  
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 53%\x1b[0m \x1b[36m-:--:--\x1b[0m\nfoo2 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n\x1b[?25h"
        render_result = render_progress()
        print(repr(render_result))
>       assert render_result == expected
E       AssertionError: assert 'foo  \x1b[38...0:00\x1b[0m\n' == 
'\x1b[?25lfoo...0m\n\x1b[?25h'
E         - [?25lfoo  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
  0% -:--:--
E         ? ------
E         + foo  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   
0% -:--:--
E         - bar  
━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━
  53% -:--:--
E         - foo2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00

E         - foo  
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   0% 
-:--:--
E           bar  ━━━━━━━...
E         
E         ...Full output truncated (3 lines hidden), use '-vv' to show

tests/test_progress.py:200: AssertionError
----------------------------- Captured stdout call -----------------------------
'foo  \x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\nbar  
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 53%\x1b[0m \x1b[36m-:--:--\x1b[0m\nfoo2 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n'
__________________________________ test_track __________________________________

    def test_track() -> None:
    
        console = Console(
            file=io.StringIO(),
            force_terminal=True,
            width=60,
            color_system="truecolor",
            legacy_windows=False,
        )
        test = ["foo", "bar", "baz"]
        expected_values = iter(test)
        for value in track(
            test, "test", console=console, auto_refresh=False, 
get_time=MockClock(auto=True)
        ):
            assert value == next(expected_values)
        result = console.file.getvalue()
        print(repr(result))
        expected = "\x1b[?25l\r\x1b[2Ktest 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 33%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;2;249;38;114m╸\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 67%\x1b[0m \x1b[36m0:00:06\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n\x1b[?25h"
        print("--")
        print("RESULT:")
        print(result)
        print(repr(result))
        print("EXPECTED:")
        print(expected)
        print(repr(expected))
    
>       assert result == expected
E       AssertionError: assert 'test \x1b[38...0:00\x1b[0m\n' == 
'\x1b[?25l\r\...0m\n\x1b[?25h'
E         - [?25l

E         - test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
  0% -:--:--

E         - test 
━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━
  33% -:--:--

E         - test 
━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━
  67% 0:00:06

E         - test 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 
0:00:00

E         - test 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%...
E         
E         ...Full output truncated (4 lines hidden), use '-vv' to show

tests/test_progress.py:229: AssertionError
----------------------------- Captured stdout call -----------------------------
'test \x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n'
--
RESULT:
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00

'test \x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n'
EXPECTED:
[?25l
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   0% 
-:--:--
test 
━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━
  33% -:--:--
test 
━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━
  67% 0:00:06
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00
[?25h
'\x1b[?25l\r\x1b[2Ktest 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 33%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;2;249;38;114m╸\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 67%\x1b[0m \x1b[36m0:00:06\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n\x1b[?25h'
_____________________________ test_progress_track ______________________________

    def test_progress_track() -> None:
        console = Console(
            file=io.StringIO(),
            force_terminal=True,
            width=60,
            color_system="truecolor",
            legacy_windows=False,
        )
        progress = Progress(
            console=console, auto_refresh=False, get_time=MockClock(auto=True)
        )
        test = ["foo", "bar", "baz"]
        expected_values = iter(test)
        with progress:
            for value in progress.track(test, description="test"):
                assert value == next(expected_values)
        result = console.file.getvalue()
        print(repr(result))
        expected = "\x1b[?25l\r\x1b[2Ktest 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 33%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;2;249;38;114m╸\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 67%\x1b[0m \x1b[36m0:00:06\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n\x1b[?25h"
    
        print(expected)
        print(repr(expected))
        print(result)
        print(repr(result))
    
>       assert result == expected
E       AssertionError: assert 'test \x1b[38...0:00\x1b[0m\n' == 
'\x1b[?25l\r\...0m\n\x1b[?25h'
E         - [?25l

E         - test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
  0% -:--:--

E         - test 
━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━
  33% -:--:--

E         - test 
━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━
  67% 0:00:06

E         - test 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 
0:00:00

E         - test 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%...
E         
E         ...Full output truncated (4 lines hidden), use '-vv' to show

tests/test_progress.py:261: AssertionError
----------------------------- Captured stdout call -----------------------------
'test \x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n'
[?25l
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   0% 
-:--:--
test 
━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━
  33% -:--:--
test 
━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━
  67% 0:00:06
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00
[?25h
'\x1b[?25l\r\x1b[2Ktest 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[35m  
0%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━\x1b[0m\x1b[38;5;237m╺\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 33%\x1b[0m \x1b[36m-:--:--\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m\x1b[38;2;249;38;114m╸\x1b[0m\x1b[38;5;237m━━━━━━━━━━━━━\x1b[0m
 \x1b[35m 67%\x1b[0m \x1b[36m0:00:06\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\r\x1b[2Ktest 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n\x1b[?25h'
test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
100% 0:00:00

'test \x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[35m100%\x1b[0m \x1b[36m0:00:00\x1b[0m\n'
_________________________________ test_columns _________________________________

    def test_columns() -> None:
    
        console = Console(
            file=io.StringIO(),
            force_terminal=True,
            width=80,
            log_time_format="[TIME]",
            color_system="truecolor",
            legacy_windows=False,
            log_path=False,
        )
        progress = Progress(
            "test",
            TextColumn("{task.description}"),
            BarColumn(bar_width=None),
            TimeRemainingColumn(),
            TimeElapsedColumn(),
            FileSizeColumn(),
            TotalFileSizeColumn(),
            DownloadColumn(),
            TransferSpeedColumn(),
            transient=True,
            console=console,
            auto_refresh=False,
            get_time=MockClock(),
        )
        task1 = progress.add_task("foo", total=10)
        task2 = progress.add_task("bar", total=7)
        with progress:
            for n in range(4):
                progress.advance(task1, 3)
                progress.advance(task2, 4)
            print("foo")
            console.log("hello")
            console.print("world")
            progress.refresh()
        from .render import replace_link_ids
    
        result = replace_link_ids(console.file.getvalue())
        print(repr(result))
        expected = "\x1b[?25ltest foo 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:37\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m10 bytes\x1b[0m 
\x1b[32m0/10 bytes\x1b[0m \x1b[31m?\x1b[0m\ntest bar 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:36\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m7 bytes \x1b[0m 
\x1b[32m0/7 bytes \x1b[0m \x1b[31m?\x1b[0m\r\x1b[2K\x1b[1A\x1b[2Kfoo\ntest foo 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:37\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m10 bytes\x1b[0m 
\x1b[32m0/10 bytes\x1b[0m \x1b[31m?\x1b[0m\ntest bar 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:36\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m7 bytes \x1b[0m 
\x1b[32m0/7 bytes \x1b[0m 
\x1b[31m?\x1b[0m\r\x1b[2K\x1b[1A\x1b[2K\x1b[2;36m[TIME]\x1b[0m\x1b[2;36m 
\x1b[0mhello                                                                    
\ntest foo \x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m 
\x1b[36m-:--:--\x1b[0m \x1b[33m0:00:37\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m10 
bytes\x1b[0m \x1b[32m0/10 bytes\x1b[0m \x1b[31m?\x1b[0m\ntest bar 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:36\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m7 bytes \x1b[0m 
\x1b[32m0/7 bytes \x1b[0m \x1b[31m?\x1b[0m\r\x1b[2K\x1b[1A\x1b[2Kworld\ntest 
foo \x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:37\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m10 bytes\x1b[0m 
\x1b[32m0/10 bytes\x1b[0m \x1b[31m?\x1b[0m\ntest bar 
\x1b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m-:--:--\x1b[0m 
\x1b[33m0:00:36\x1b[0m \x1b[32m0 bytes\x1b[0m \x1b[32m7 bytes \x1b[0m 
\x1b[32m0/7 bytes \x1b[0m \x1b[31m?\x1b[0m\r\x1b[2K\x1b[1A\x1b[2Ktest foo 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m0:00:00\x1b[0m 
\x1b[33m0:01:00\x1b[0m \x1b[32m12 bytes\x1b[0m \x1b[32m10 bytes\x1b[0m 
\x1b[32m12/10 bytes\x1b[0m \x1b[31m1 byte/s\x1b[0m\ntest bar 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m0:00:00\x1b[0m 
\x1b[33m0:00:45\x1b[0m \x1b[32m16 bytes\x1b[0m \x1b[32m7 bytes \x1b[0m 
\x1b[32m16/7 bytes \x1b[0m \x1b[31m1 byte/s\x1b[0m\r\x1b[2K\x1b[1A\x1b[2Ktest 
foo \x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m0:00:00\x1b[0m 
\x1b[33m0:01:00\x1b[0m \x1b[32m12 bytes\x1b[0m \x1b[32m10 bytes\x1b[0m 
\x1b[32m12/10 bytes\x1b[0m \x1b[31m1 byte/s\x1b[0m\ntest bar 
\x1b[38;2;114;156;31m━━━━━━━━━━━━━━━━\x1b[0m \x1b[36m0:00:00\x1b[0m 
\x1b[33m0:00:45\x1b[0m \x1b[32m16 bytes\x1b[0m \x1b[32m7 bytes \x1b[0m 
\x1b[32m16/7 bytes \x1b[0m \x1b[31m1 
byte/s\x1b[0m\n\x1b[?25h\r\x1b[1A\x1b[2K\x1b[1A\x1b[2K"
>       assert result == expected
E       AssertionError: assert 'foo\n\x1b[2;...  \nworld\n\n' == 
'\x1b[?25ltes...x1b[1A\x1b[2K'
E         + foo
E         - [?25ltest foo ━━━━━━━━━━━━━━━━━━━━━━━━━ 
-:--:-- 0:00:37 0 bytes 10 bytes 0/10 
bytes ?
E         - test bar ━━━━━━━━━━━━━━━━━━━━━━━━━ -:--:-- 
0:00:36 0 bytes 7 bytes  0/7 bytes  
?

E         - foo
E         - test foo ━━━━━━━━━━━━━━━━━━━━━━━━━ -:--:-- 
0:00:37 0 bytes 10 bytes 0/10 bytes 
?
E         - test bar ━━━━━━━━━━━━━━━━━━━━━━━━━ -:--:-- 
0:00:36 0 b...
E         
E         ...Full output truncated (17 lines hidden), use '-vv' to show

tests/test_progress.py:309: AssertionError
----------------------------- Captured stdout call -----------------------------
'foo\n\x1b[2;36m[TIME]\x1b[0m\x1b[2;36m \x1b[0mhello                            
                                        \nworld\n\n'
__________________________ test_progress_max_refresh ___________________________

    def test_progress_max_refresh() -> None:
        """Test max_refresh argment."""
        time = 0.0
    
        def get_time() -> float:
            nonlocal time
            try:
                return time
            finally:
                time = time + 1.0
    
        console = Console(
            color_system=None, width=80, legacy_windows=False, 
force_terminal=True
        )
        column = TextColumn("{task.description}")
        column.max_refresh = 3
        progress = Progress(
            column,
            get_time=get_time,
            auto_refresh=False,
            console=console,
        )
        console.begin_capture()
        with progress:
            task_id = progress.add_task("start")
            for tick in range(6):
                progress.update(task_id, description=f"tick {tick}")
                progress.refresh()
        result = console.end_capture()
        print(repr(result))
>       assert (
            result
            == "\x1b[?25l\r\x1b[2Kstart\r\x1b[2Kstart\r\x1b[2Ktick 
1\r\x1b[2Ktick 1\r\x1b[2Ktick 3\r\x1b[2Ktick 3\r\x1b[2Ktick 5\r\x1b[2Ktick 
5\n\x1b[?25h"
        )
E       AssertionError: assert 'tick 5\n' == '\x1b[?25l\r\... 5\n\x1b[?25h'
E         - [?25l

E         - start

E         - start

E         - tick 1

E         - tick 1

E         - tick 3

E         - tick 3
...
E         
E         ...Full output truncated (6 lines hidden), use '-vv' to show

tests/test_progress.py:421: AssertionError
----------------------------- Captured stdout call -----------------------------
'tick 5\n'
__________________________________ test_rule ___________________________________

    def test_rule():
        console = Console(
            width=16, file=io.StringIO(), force_terminal=True, 
legacy_windows=False
        )
        console.print(Rule())
        console.print(Rule("foo"))
        console.rule(Text("foo", style="bold"))
        console.rule("foobarbazeggfoobarbazegg")
        expected = "\x1b[92m────────────────\x1b[0m\n"
        expected += "\x1b[92m───── \x1b[0mfoo\x1b[92m ──────\x1b[0m\n"
        expected += "\x1b[92m───── \x1b[0m\x1b[1mfoo\x1b[0m\x1b[92m 
──────\x1b[0m\n"
        expected += "\x1b[92m─ \x1b[0mfoobarbazeg…\x1b[92m ─\x1b[0m\n"
    
        result = console.file.getvalue()
>       assert result == expected
E       AssertionError: assert '────────────...───────────\n' == 
'\x1b[92m────...2m ─\x1b[0m\n'
E         - ────────────────
E         - ───── foo ──────
E         - ───── foo ──────
E         - ─ foobarbazeg… ─
E         + 
────────────────────────────────────────────────────────────────────────────────
E         + ───────────────────────────────────── foo 
──────────────────────────────────────
E         + ───────────────────────────────────── foo 
──────────────────────────────────────...
E         
E         ...Full output truncated (2 lines hidden), use '-vv' to show

tests/test_rule.py:24: AssertionError
________________________________ test_rule_cjk _________________________________

    def test_rule_cjk():
        console = Console(
            width=16,
            file=io.StringIO(),
            force_terminal=True,
            color_system=None,
            legacy_windows=False,
        )
        console.rule("欢迎!")
        expected = "──── 欢迎! ────\n"
>       assert console.file.getvalue() == expected
E       AssertionError: assert '────────────...───────────\n' == '──── 欢迎! 
────\n'
E         - ──── 欢迎! ────
E         + ──────────────────────────────────── 欢迎! 
────────────────────────────────────

tests/test_rule.py:56: AssertionError
_______________________________ test_characters ________________________________

    def test_characters():
        console = Console(
            width=16,
            file=io.StringIO(),
            force_terminal=True,
            color_system=None,
            legacy_windows=False,
        )
        console.rule(characters="+*")
        console.rule("foo", characters="+*")
        console.print(Rule(characters=".,"))
        expected = "+*+*+*+*+*+*+*+*\n"
        expected += "+*+*+ foo +*+*+*\n"
        expected += ".,.,.,.,.,.,.,.,\n"
>       assert console.file.getvalue() == expected
E       AssertionError: assert '+*+*+*+*+*+*...,.,.,.,.,.,\n' == 
'+*+*+*+*+*+*...,.,.,.,.,.,\n'
E         - +*+*+*+*+*+*+*+*
E         - +*+*+ foo +*+*+*
E         - .,.,.,.,.,.,.,.,
E         + 
+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
E         + +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+ foo 
+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
E         + 
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,

tests/test_rule.py:73: AssertionError
_________________________________ test_styled __________________________________

    def test_styled():
        styled_foo = Styled("foo", "on red")
        console = Console(file=io.StringIO(), force_terminal=True)
        assert Measurement.get(console, styled_foo, 80) == Measurement(3, 3)
        console.print(styled_foo)
        result = console.file.getvalue()
        expected = "\x1b[41mfoo\x1b[0m\n"
>       assert result == expected
E       AssertionError: assert 'foo\n' == '\x1b[41mfoo\x1b[0m\n'
E         - foo
E         + foo

tests/test_styled.py:15: AssertionError
______________________________ test_render_table _______________________________

    def test_render_table():
        expected = " test table \n┏━━━━━━┳━┳━┓\n┃ foo  ┃ ┃ ┃\n┡━━━━━━╇━╇━┩\n│ 
Ave… │ │ │\n└──────┴─┴─┘\n   table    \n  caption   \n   test table    
\n┏━━━━━━━━━━━┳━┳━┓\n┃ foo       ┃ ┃ ┃\n┡━━━━━━━━━━━╇━╇━┩\n│ Averlong… │ │ 
│\n└───────────┴─┴─┘\n  table caption  \n      test table      
\n┏━━━━━━━━━━━━━━━━┳━┳━┓\n┃ foo            ┃ ┃ ┃\n┡━━━━━━━━━━━━━━━━╇━╇━┩\n│ 
Averlongwordg… │ │ │\n└────────────────┴─┴─┘\n    table caption     \n        
test table         \n┏━━━━━━━━━━━━━━━━━━━━━┳━┳━┓\n┃ foo                 ┃ ┃ 
┃\n┡━━━━━━━━━━━━━━━━━━━━━╇━╇━┩\n│ Averlongwordgoeshe… │ │ 
│\n└─────────────────────┴─┴─┘\n       table caption       \n          test 
table          \n┏━━━━━━━━━━━━━━━━━━━━━━┳━━┳━━┓\n┃ foo                  ┃  ┃  
┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━╇━━┩\n│ Averlongwordgoeshere │  │  
│\n└──────────────────────┴──┴──┘\n        table caption         \n            
test table             \n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━┳━━━━┓\n┃ foo             
     ┃ bar ┃ b… ┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━╇━━━━┩\n│ Averlongwordgoeshere 
│ ba… │    │\n│                      │ pa… │    
│\n└──────────────────────┴─────┴────┘\n           table caption           \n   
            test table               
\n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━┓\n┃ foo                  ┃   bar   ┃ 
baz ┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━┩\n│ Averlongwordgoeshere │ 
banana  │     │\n│                      │ pancak… │     
│\n└──────────────────────┴─────────┴─────┘\n             table caption         
     \n                 test table                  
\n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━┓\n┃ foo                  ┃     
bar      ┃ baz ┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━┩\n│ 
Averlongwordgoeshere │    banana    │     │\n│                      │   
pancakes   │     │\n└──────────────────────┴──────────────┴─────┘\n             
   table caption                \n                    test table                
    \n┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━┓\n┃ foo                 
  ┃       bar        ┃ baz 
┃\n┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━┩\n│ Averlongwordgoeshere  
│ banana pancakes  │     
│\n└───────────────────────┴──────────────────┴─────┘\n                  table 
caption                   \n                      test table                    
   \n┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━┓\n┃ foo             
         ┃        bar         ┃ baz 
┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━┩\n│ 
Averlongwordgoeshere     │  banana pancakes   │     
│\n└──────────────────────────┴────────────────────┴─────┘\n                    
 table caption                     \n                   test table              
                 \n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┓            
\n┃ foo                  ┃       bar       ┃ baz ┃            
\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━┩            \n│ 
Averlongwordgoeshere │ banana pancakes │     │            
\n└──────────────────────┴─────────────────┴─────┘            \n                
 table caption                              \n                         test 
table                         \n      
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┓      \n      ┃ foo             
     ┃       bar       ┃ baz ┃      \n      
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━┩      \n      │ 
Averlongwordgoeshere │ banana pancakes │     │      \n      
└──────────────────────┴─────────────────┴─────┘      \n                       
table caption                        \n                               test 
table                   \n            
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┓\n            ┃ foo             
     ┃       bar       ┃ baz ┃\n            
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━┩\n            │ 
Averlongwordgoeshere │ banana pancakes │     │\n            
└──────────────────────┴─────────────────┴─────┘\n                             
table caption                  \n                        test table             
            \n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┳━━━━━━━━━━┓\n┃ 
foo                  ┃       bar       ┃ baz ┃          
┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━╇━━━━━━━━━━┩\n│ 
Averlongwordgoeshere │ banana pancakes │     │          │\n│ Coffee             
  │                 │     │          │\n│ Coffee               │    Chocolate   
 │     │ cinnamon 
│\n└──────────────────────┴─────────────────┴─────┴──────────┘\n                
       table caption                       \n                        test table 
                        
\n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┳━━━━━━━━━━┓\n┃ foo            
      ┃       bar       ┃ baz ┃          
┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━╇━━━━━━━━━━┩\n│ 
Averlongwordgoeshere │ banana pancakes │     │          
│\n├──────────────────────┼─────────────────┼─────┼──────────┤\n│ Coffee        
       │                 │     │          
│\n├──────────────────────┼─────────────────┼─────┼──────────┤\n│ Coffee        
       │    Chocolate    │     │ cinnamon 
│\n└──────────────────────┴─────────────────┴─────┴──────────┘\n                
       table caption                       \n                        test table 
                        
\n┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┳━━━━━━━━━━┓\n┃ foo            
      ┃       bar       ┃ baz ┃          
┃\n┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━╇━━━━━━━━━━┩\n│ 
Averlongwordgoeshere │ banana pancakes │     │          
│\n├──────────────────────┼─────────────────┼─────┼──────────┤\n│ Coffee        
       │                 │     │          
│\n├──────────────────────┼─────────────────┼─────┼──────────┤\n│ Coffee        
       │    Chocolate    │     │ cinnamon 
│\n├──────────────────────┼─────────────────┼─────┼──────────┤\n│ total         
       │                 │     │          
│\n└──────────────────────┴─────────────────┴─────┴──────────┘\n                
       table caption                       \n                       test table  
                      \n foo                  ┃       bar       ┃ baz ┃         
 \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━╇━━━━━━━━━━\n 
Averlongwordgoeshere │ banana pancakes │     │          
\n──────────────────────┼─────────────────┼─────┼──────────\n Coffee            
   │                 │     │          
\n──────────────────────┼─────────────────┼─────┼──────────\n Coffee            
   │    Chocolate    │     │ cinnamon 
\n──────────────────────┼─────────────────┼─────┼──────────\n total             
   │                 │     │          \n                      table caption     
                 \n                       test table                        \n  
                    ┃                 ┃     ┃          \n foo                  
┃       bar       ┃ baz ┃          \n                      ┃                 ┃  
   ┃          \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━╇━━━━━━━━━━\n     
                 │                 │     │          \n Averlongwordgoeshere │ 
banana pancakes │     │          \n                      │                 │    
 │          \n──────────────────────┼─────────────────┼─────┼──────────\n       
               │                 │     │          \n Coffee               │     
            │     │          \n                      │                 │     │  
        \n──────────────────────┼─────────────────┼─────┼──────────\n           
           │                 │     │          \n Coffee               │    
Chocolate    │     │ cinnamon \n                      │                 │     │ 
         \n──────────────────────┼─────────────────┼─────┼──────────\n          
            │                 │     │          \n total                │        
         │     │          \n                      │                 │     │     
     \n                      table caption                      \n      test 
table       \n                 ┃ ┃ ┃ \n foo             ┃ ┃ ┃ \n                
 ┃ ┃ ┃ \n━━━━━━━━━━━━━━━━━╇━╇━╇━\n                 │ │ │ \n Averlongwordgo… │ │ 
│ \n                 │ │ │ \n─────────────────┼─┼─┼─\n                 │ │ │ \n 
Coffee          │ │ │ \n                 │ │ │ \n─────────────────┼─┼─┼─\n      
           │ │ │ \n Coffee          │ │ │ \n                 │ │ │ 
\n─────────────────┼─┼─┼─\n                 │ │ │ \n total           │ │ │ \n   
              │ │ │ \n     table caption     \n       test table       \n       
   ┃         ┃ ┃ \n foo      ┃   bar   ┃ ┃ \n          ┃         ┃ ┃ 
\n━━━━━━━━━━╇━━━━━━━━━╇━╇━\n          │         │ │ \n Averlon… │ banana… │ │ 
\n          │         │ │ \n──────────┼─────────┼─┼─\n          │         │ │ 
\n Coffee   │         │ │ \n          │         │ │ 
\n──────────┼─────────┼─┼─\n          │         │ │ \n Coffee   │ Chocol… │ │ 
\n          │         │ │ \n──────────┼─────────┼─┼─\n          │         │ │ 
\n total    │         │ │ \n          │         │ │ \n     table caption      
\n                         test table                         \nfoo             
         ┃        bar        ┃ baz┃         
\n━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━╇━━━━━━━━━\nAverlongwordgoeshere
     │  banana pancakes  │    │         \n                         │            
       │    │         \nCoffee                   │                   │    │     
    \n                         │                   │    │         \nCoffee      
             │     Chocolate     │    │cinnamon 
\n─────────────────────────┼───────────────────┼────┼─────────\ntotal           
         │                   │    │         \n                       table 
caption                        \n"
>       assert render_tables() == expected
E       AssertionError: assert ' test table ...           \n' == ' test table 
...           \n'
E         Skipping 2587 identical leading characters in diff, use -v to show
E         -           
E         +                               
E         - ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┓            
E         + ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━┓                    
            
E         ?                                                             
++++++++++++++++++++
E         - ┃ foo                  ┃       bar       ┃ baz ┃            ...
E         
E         ...Full output truncated (175 lines hidden), use '-vv' to show

tests/test_table.py:84: AssertionError
=========================== short test summary info ============================
FAILED tests/test_align.py::test_align_right_style - AssertionError: assert '...
FAILED tests/test_console.py::test_dumb_terminal - assert None is not None
FAILED tests/test_console.py::test_show_cursor - AssertionError: assert 'foo\...
FAILED tests/test_console.py::test_clear - AssertionError: assert '' == '\x1b...
FAILED tests/test_console.py::test_control - AssertionError: assert 'BAR\n' =...
FAILED tests/test_console.py::test_justify_left - AssertionError: assert 'FOO...
FAILED tests/test_console.py::test_justify_center - AssertionError: assert ' ...
FAILED tests/test_console.py::test_justify_right - AssertionError: assert '  ...
FAILED tests/test_console.py::test_justify_renderable_left - AssertionError: ...
FAILED tests/test_console.py::test_justify_renderable_center - AssertionError...
FAILED tests/test_console.py::test_justify_renderable_right - AssertionError:...
FAILED tests/test_console.py::test_bell - AssertionError: assert '' == '\x07'
FAILED tests/test_console.py::test_screen - assert "Don't panic\n" == '\x1b[?...
FAILED tests/test_console.py::test_screen_update - AssertionError: assert '\x...
FAILED tests/test_live.py::test_growing_display - AssertionError: assert 'Ste...
FAILED tests/test_live.py::test_growing_display_transient - AssertionError: a...
FAILED tests/test_live.py::test_growing_display_overflow_ellipsis - Assertion...
FAILED tests/test_live.py::test_growing_display_overflow_crop - AssertionErro...
FAILED tests/test_live.py::test_growing_display_overflow_visible - AssertionE...
FAILED tests/test_live.py::test_growing_display_console_redirect - AssertionE...
FAILED tests/test_live.py::test_live_screen - AssertionError: assert '' == '\...
FAILED tests/test_logging.py::test_exception - AssertionError: assert 'divisi...
FAILED tests/test_logging.py::test_exception_with_extra_lines - AssertionErro...
FAILED tests/test_progress.py::test_expand_bar - AssertionError: assert '\x1b...
FAILED tests/test_progress.py::test_render - AssertionError: assert 'foo  \x1...
FAILED tests/test_progress.py::test_track - AssertionError: assert 'test \x1b...
FAILED tests/test_progress.py::test_progress_track - AssertionError: assert '...
FAILED tests/test_progress.py::test_columns - AssertionError: assert 'foo\n\x...
FAILED tests/test_progress.py::test_progress_max_refresh - AssertionError: as...
FAILED tests/test_rule.py::test_rule - AssertionError: assert '────────────.....
FAILED tests/test_rule.py::test_rule_cjk - AssertionError: assert '──────────...
FAILED tests/test_rule.py::test_characters - AssertionError: assert '+*+*+*+*...
FAILED tests/test_styled.py::test_styled - AssertionError: assert 'foo\n' == ...
FAILED tests/test_table.py::test_render_table - AssertionError: assert ' test...
================== 34 failed, 429 passed, 1 skipped in 6.05s ===================
E: pybuild pybuild:353: test: plugin custom failed with: exit code=1: 
PYTHONPATH=/<<PKGBUILDDIR>> python3.9 -m pytest
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 
returned exit code 13
make[1]: *** [debian/rules:12: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:6: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2

Reply via email to