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)
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_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)
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_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)
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)