示例#1
0
def test_windows_screenshot(colors, light_bg):
    """Test script on Windows in a new console window. Take a screenshot to verify colors work.

    :param bool colors: Enable, disable, or omit color arguments (default has colors).
    :param bool light_bg: Create console with white background color.
    """
    screenshot = PROJECT_ROOT.join('test_example_test_windows_screenshot.png')
    if screenshot.check():
        screenshot.remove()
    command = [sys.executable, str(PROJECT_ROOT.join('example.py')), 'print', '-w', str(screenshot)]

    # Set options.
    if colors is True:
        command.append('--colors')
    elif colors is False:
        command.append('--no-colors')

    # Setup expected.
    if colors is False:
        candidates = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_red_sans_*.bmp')]
        expected_count = 27
    elif light_bg:
        candidates = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_red_dark_fg_*.bmp')]
        expected_count = 2
    else:
        candidates = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_red_light_fg_*.bmp')]
        expected_count = 2
    assert candidates

    # Run.
    with RunNewConsole(command, maximized=True, white_bg=light_bg) as gen:
        screenshot_until_match(str(screenshot), 15, candidates, expected_count, gen)
示例#2
0
def test_windows_screenshot(tmpdir, mode):
    """Test function on Windows in a new console window. Take a screenshot to verify it works.

    :param tmpdir: pytest fixture.
    :param str mode: Scenario to test for.
    """
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]
    change_title = tmpdir.join('change_title')
    screenshot = PROJECT_ROOT.join('test_terminal_io_{0}.png'.format(mode))
    if screenshot.check():
        screenshot.remove()

    # Determine title.
    if mode == 'ascii':
        title = "'test ASCII test'"
    elif mode == 'unicode':
        title = u"u'test 世界你好蓝色 test'"
    else:
        title = "b'test ASCII test'"

    # Generate script.
    script_template = dedent(u"""\
    # coding: utf-8
    from __future__ import print_function
    import os, time
    from terminaltables.terminal_io import set_terminal_title
    stop_after = time.time() + 20

    print('Waiting for FindWindowA() in RunNewConsole.__enter__()...')
    while not os.path.exists(r'{change_title}') and time.time() < stop_after:
        time.sleep(0.5)
    assert set_terminal_title({title}) is True

    print('Waiting for screenshot_until_match()...')
    while not os.path.exists(r'{screenshot}') and time.time() < stop_after:
        time.sleep(0.5)
    """)
    script_contents = script_template.format(change_title=str(change_title),
                                             title=title,
                                             screenshot=str(screenshot))
    script.write(script_contents.encode('utf-8'), mode='wb')

    # Setup expected.
    if mode == 'unicode':
        sub_images = [str(p) for p in HERE.listdir('sub_title_cjk_*.bmp')]
    else:
        sub_images = [str(p) for p in HERE.listdir('sub_title_ascii_*.bmp')]
    assert sub_images

    # Run.
    with RunNewConsole(command) as gen:
        change_title.ensure(file=True)  # Touch file.
        screenshot_until_match(str(screenshot), 15, sub_images, 1, gen)
def test_windows_screenshot(tmpdir, mode):
    """Test function on Windows in a new console window. Take a screenshot to verify it works.

    :param tmpdir: pytest fixture.
    :param str mode: Scenario to test for.
    """
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]
    change_title = tmpdir.join('change_title')
    screenshot = PROJECT_ROOT.join('test_terminal_io_{0}.png'.format(mode))
    if screenshot.check():
        screenshot.remove()

    # Determine title.
    if mode == 'ascii':
        title = "'test ASCII test'"
    elif mode == 'unicode':
        title = u"u'test 世界你好蓝色 test'"
    else:
        title = "b'test ASCII test'"

    # Generate script.
    script_template = dedent(u"""\
    # coding: utf-8
    from __future__ import print_function
    import os, time
    from terminaltables.terminal_io import set_terminal_title
    stop_after = time.time() + 20

    print('Waiting for FindWindowA() in RunNewConsole.__enter__()...')
    while not os.path.exists(r'{change_title}') and time.time() < stop_after:
        time.sleep(0.5)
    assert set_terminal_title({title}) is True

    print('Waiting for screenshot_until_match()...')
    while not os.path.exists(r'{screenshot}') and time.time() < stop_after:
        time.sleep(0.5)
    """)
    script_contents = script_template.format(change_title=str(change_title), title=title, screenshot=str(screenshot))
    script.write(script_contents.encode('utf-8'), mode='wb')

    # Setup expected.
    if mode == 'unicode':
        sub_images = [str(p) for p in HERE.listdir('sub_title_cjk_*.bmp')]
    else:
        sub_images = [str(p) for p in HERE.listdir('sub_title_ascii_*.bmp')]
    assert sub_images

    # Run.
    with RunNewConsole(command) as gen:
        change_title.ensure(file=True)  # Touch file.
        screenshot_until_match(str(screenshot), 15, sub_images, 1, gen)
示例#4
0
def test_enable_disable(tmpdir):
    """Test enabling, disabling, repeat. Make sure colors still work.

    :param tmpdir: pytest fixture.
    """
    screenshot = PROJECT_ROOT.join('test_windows_test_enable_disable.png')
    if screenshot.check():
        screenshot.remove()
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]

    script.write(
        dedent("""\
    from __future__ import print_function
    import os, time
    from colorclass import Color, Windows

    with Windows(auto_colors=True):
        print(Color('{autored}Red{/autored}'))
    print('Red')
    with Windows(auto_colors=True):
        print(Color('{autored}Red{/autored}'))
    print('Red')

    stop_after = time.time() + 20
    while not os.path.exists(r'%s') and time.time() < stop_after:
        time.sleep(0.5)
    """) % str(screenshot))

    # Setup expected.
    with_colors = [
        str(p)
        for p in PROJECT_ROOT.join('tests').listdir('sub_red_light_fg_*.bmp')
    ]
    sans_colors = [
        str(p)
        for p in PROJECT_ROOT.join('tests').listdir('sub_red_sans_*.bmp')
    ]
    assert with_colors
    assert sans_colors

    # Run.
    with RunNewConsole(command) as gen:
        screenshot_until_match(str(screenshot), 15, with_colors, 2, gen)
        screenshot_until_match(str(screenshot), 15, sans_colors, 2, gen)
def test_windows_screenshot(tmpdir):
    """Test on Windows in a new console window. Take a screenshot to verify it works.

    :param tmpdir: pytest fixture.
    """
    script = tmpdir.join("script.py")
    command = [sys.executable, str(script)]
    screenshot = PROJECT_ROOT.join("test_double_table.png")
    if screenshot.check():
        screenshot.remove()

    # Generate script.
    script_template = dedent(
        u"""\
    from __future__ import print_function
    import os, time
    from colorclass import Color, Windows
    from terminaltables import DoubleTable
    Windows.enable(auto_colors=True)
    stop_after = time.time() + 20

    table_data = [
        [Color('{b}Name{/b}'), Color('{b}Color{/b}'), Color('{b}Misc{/b}')],
        ['Avocado', Color('{autogreen}green{/fg}'), 100],
        ['Tomato', Color('{autored}red{/fg}'), 0.5],
        ['Lettuce', Color('{autogreen}green{/fg}'), None],
    ]
    print(DoubleTable(table_data).table)

    print('Waiting for screenshot_until_match()...')
    while not os.path.exists(r'%s') and time.time() < stop_after:
        time.sleep(0.5)
    """
    )
    script_contents = script_template % str(screenshot)
    script.write(script_contents.encode("utf-8"), mode="wb")

    # Setup expected.
    sub_images = [str(p) for p in HERE.listdir("sub_double_*.bmp")]
    assert sub_images

    # Run.
    with RunNewConsole(command) as gen:
        screenshot_until_match(str(screenshot), 15, sub_images, 1, gen)
def test_windows_screenshot(tmpdir):
    """Test on Windows in a new console window. Take a screenshot to verify it works.

    :param tmpdir: pytest fixture.
    """
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]
    screenshot = PROJECT_ROOT.join('test_double_table.png')
    if screenshot.check():
        screenshot.remove()

    # Generate script.
    script_template = dedent(u"""\
    from __future__ import print_function
    import os, time
    from colorclass import Color, Windows
    from terminaltables import DoubleTable
    Windows.enable(auto_colors=True)
    stop_after = time.time() + 20

    table_data = [
        [Color('{b}Name{/b}'), Color('{b}Color{/b}'), Color('{b}Misc{/b}')],
        ['Avocado', Color('{autogreen}green{/fg}'), 100],
        ['Tomato', Color('{autored}red{/fg}'), 0.5],
        ['Lettuce', Color('{autogreen}green{/fg}'), None],
    ]
    print(DoubleTable(table_data).table)

    print('Waiting for screenshot_until_match()...')
    while not os.path.exists(r'%s') and time.time() < stop_after:
        time.sleep(0.5)
    """)
    script_contents = script_template % str(screenshot)
    script.write(script_contents.encode('utf-8'), mode='wb')

    # Setup expected.
    sub_images = [str(p) for p in HERE.listdir('sub_double_*.bmp')]
    assert sub_images

    # Run.
    with RunNewConsole(command) as gen:
        screenshot_until_match(str(screenshot), 15, sub_images, 1, gen)
示例#7
0
def test_enable_disable(tmpdir):
    """Test enabling, disabling, repeat. Make sure colors still work.

    :param tmpdir: pytest fixture.
    """
    screenshot = PROJECT_ROOT.join('test_windows_test_enable_disable.png')
    if screenshot.check():
        screenshot.remove()
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]

    script.write(dedent("""\
    from __future__ import print_function
    import os, time
    from colorclass import Color, Windows

    with Windows(auto_colors=True):
        print(Color('{autored}Red{/autored}'))
    print('Red')
    with Windows(auto_colors=True):
        print(Color('{autored}Red{/autored}'))
    print('Red')

    stop_after = time.time() + 20
    while not os.path.exists(r'%s') and time.time() < stop_after:
        time.sleep(0.5)
    """) % str(screenshot))

    # Setup expected.
    with_colors = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_red_light_fg_*.bmp')]
    sans_colors = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_red_sans_*.bmp')]
    assert with_colors
    assert sans_colors

    # Run.
    with RunNewConsole(command) as gen:
        screenshot_until_match(str(screenshot), 15, with_colors, 2, gen)
        screenshot_until_match(str(screenshot), 15, sans_colors, 2, gen)
示例#8
0
def test_box_characters(tmpdir):
    """Test for unicode errors with special characters.

    :param tmpdir: pytest fixture.
    """
    screenshot = PROJECT_ROOT.join('test_windows_test_box_characters.png')
    if screenshot.check():
        screenshot.remove()
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]

    script.write(
        dedent("""\
    from __future__ import print_function
    import os, time
    from colorclass import Color, Windows

    Windows.enable(auto_colors=True)
    chars = [
        '+', '-', '|',
        b'\\xb3'.decode('ibm437'),
        b'\\xb4'.decode('ibm437'),
        b'\\xb9'.decode('ibm437'),
        b'\\xba'.decode('ibm437'),
        b'\\xbb'.decode('ibm437'),
        b'\\xbc'.decode('ibm437'),
        b'\\xbf'.decode('ibm437'),
        b'\\xc0'.decode('ibm437'),
        b'\\xc1'.decode('ibm437'),
        b'\\xc2'.decode('ibm437'),
        b'\\xc3'.decode('ibm437'),
        b'\\xc4'.decode('ibm437'),
        b'\\xc5'.decode('ibm437'),
        b'\\xc8'.decode('ibm437'),
        b'\\xc9'.decode('ibm437'),
        b'\\xca'.decode('ibm437'),
        b'\\xcb'.decode('ibm437'),
        b'\\xcc'.decode('ibm437'),
        b'\\xcd'.decode('ibm437'),
        b'\\xce'.decode('ibm437'),
        b'\\xd9'.decode('ibm437'),
        b'\\xda'.decode('ibm437'),
    ]

    for c in chars:
        print(c, end='')
    print()
    for c in chars:
        print(Color.green(c, auto=True), end='')
    print()

    stop_after = time.time() + 20
    while not os.path.exists(r'%s') and time.time() < stop_after:
        time.sleep(0.5)
    """) % str(screenshot))

    # Setup expected.
    with_colors = [
        str(p)
        for p in PROJECT_ROOT.join('tests').listdir('sub_box_green_*.bmp')
    ]
    sans_colors = [
        str(p)
        for p in PROJECT_ROOT.join('tests').listdir('sub_box_sans_*.bmp')
    ]
    assert with_colors
    assert sans_colors

    # Run.
    with RunNewConsole(command) as gen:
        screenshot_until_match(str(screenshot), 15, with_colors, 1, gen)
        screenshot_until_match(str(screenshot), 15, sans_colors, 1, gen)
示例#9
0
def test_box_characters(tmpdir):
    """Test for unicode errors with special characters.

    :param tmpdir: pytest fixture.
    """
    screenshot = PROJECT_ROOT.join('test_windows_test_box_characters.png')
    if screenshot.check():
        screenshot.remove()
    script = tmpdir.join('script.py')
    command = [sys.executable, str(script)]

    script.write(dedent("""\
    from __future__ import print_function
    import os, time
    from colorclass import Color, Windows

    Windows.enable(auto_colors=True)
    chars = [
        '+', '-', '|',
        b'\\xb3'.decode('ibm437'),
        b'\\xb4'.decode('ibm437'),
        b'\\xb9'.decode('ibm437'),
        b'\\xba'.decode('ibm437'),
        b'\\xbb'.decode('ibm437'),
        b'\\xbc'.decode('ibm437'),
        b'\\xbf'.decode('ibm437'),
        b'\\xc0'.decode('ibm437'),
        b'\\xc1'.decode('ibm437'),
        b'\\xc2'.decode('ibm437'),
        b'\\xc3'.decode('ibm437'),
        b'\\xc4'.decode('ibm437'),
        b'\\xc5'.decode('ibm437'),
        b'\\xc8'.decode('ibm437'),
        b'\\xc9'.decode('ibm437'),
        b'\\xca'.decode('ibm437'),
        b'\\xcb'.decode('ibm437'),
        b'\\xcc'.decode('ibm437'),
        b'\\xcd'.decode('ibm437'),
        b'\\xce'.decode('ibm437'),
        b'\\xd9'.decode('ibm437'),
        b'\\xda'.decode('ibm437'),
    ]

    for c in chars:
        print(c, end='')
    print()
    for c in chars:
        print(Color.green(c, auto=True), end='')
    print()

    stop_after = time.time() + 20
    while not os.path.exists(r'%s') and time.time() < stop_after:
        time.sleep(0.5)
    """) % str(screenshot))

    # Setup expected.
    with_colors = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_box_green_*.bmp')]
    sans_colors = [str(p) for p in PROJECT_ROOT.join('tests').listdir('sub_box_sans_*.bmp')]
    assert with_colors
    assert sans_colors

    # Run.
    with RunNewConsole(command) as gen:
        screenshot_until_match(str(screenshot), 15, with_colors, 1, gen)
        screenshot_until_match(str(screenshot), 15, sans_colors, 1, gen)