From 12d94d2889605b46f3ade37e19712019f917540d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 7 Feb 2025 10:18:23 +0100 Subject: [PATCH] Adding upstream version 2.2.0. Signed-off-by: Daniel Baumann --- .gitignore | 69 +++++ .travis.yml | 25 ++ CONTRIBUTING.md | 35 +++ LICENSE | 21 ++ README.rst | 229 +++++++++++++++++ appveyor.yml | 17 ++ colorclass/__init__.py | 38 +++ colorclass/__main__.py | 33 +++ colorclass/codes.py | 229 +++++++++++++++++ colorclass/color.py | 220 ++++++++++++++++ colorclass/core.py | 342 ++++++++++++++++++++++++ colorclass/parse.py | 96 +++++++ colorclass/search.py | 49 ++++ colorclass/toggles.py | 42 +++ colorclass/windows.py | 388 ++++++++++++++++++++++++++++ example.png | Bin 0 -> 295535 bytes example.py | 229 +++++++++++++++++ example_windows.png | Bin 0 -> 155348 bytes setup.py | 63 +++++ tests/__init__.py | 1 + tests/conftest.py | 78 ++++++ tests/screenshot.py | 299 +++++++++++++++++++++ tests/sub_box_green_win10.bmp | Bin 0 -> 5026 bytes tests/sub_box_green_winxp.bmp | Bin 0 -> 7254 bytes tests/sub_box_sans_win10.bmp | Bin 0 -> 5026 bytes tests/sub_box_sans_winxp.bmp | Bin 0 -> 7254 bytes tests/sub_red_dark_fg_win10.bmp | Bin 0 -> 446 bytes tests/sub_red_dark_fg_winxp.bmp | Bin 0 -> 702 bytes tests/sub_red_light_fg_win10.bmp | Bin 0 -> 418 bytes tests/sub_red_light_fg_winxp.bmp | Bin 0 -> 702 bytes tests/sub_red_sans_win10.bmp | Bin 0 -> 446 bytes tests/sub_red_sans_winxp.bmp | Bin 0 -> 882 bytes tests/test___main__.py | 64 +++++ tests/test_codes.py | 137 ++++++++++ tests/test_color.py | 185 +++++++++++++ tests/test_core.py | 398 ++++++++++++++++++++++++++++ tests/test_example.py | 96 +++++++ tests/test_parse.py | 79 ++++++ tests/test_search.py | 51 ++++ tests/test_toggles.py | 29 +++ tests/test_windows.py | 429 +++++++++++++++++++++++++++++++ tox.ini | 78 ++++++ 42 files changed, 4049 insertions(+) create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.rst create mode 100644 appveyor.yml create mode 100644 colorclass/__init__.py create mode 100644 colorclass/__main__.py create mode 100644 colorclass/codes.py create mode 100644 colorclass/color.py create mode 100644 colorclass/core.py create mode 100644 colorclass/parse.py create mode 100644 colorclass/search.py create mode 100644 colorclass/toggles.py create mode 100644 colorclass/windows.py create mode 100644 example.png create mode 100755 example.py create mode 100644 example_windows.png create mode 100755 setup.py create mode 100644 tests/__init__.py create mode 100644 tests/conftest.py create mode 100644 tests/screenshot.py create mode 100644 tests/sub_box_green_win10.bmp create mode 100644 tests/sub_box_green_winxp.bmp create mode 100644 tests/sub_box_sans_win10.bmp create mode 100644 tests/sub_box_sans_winxp.bmp create mode 100644 tests/sub_red_dark_fg_win10.bmp create mode 100644 tests/sub_red_dark_fg_winxp.bmp create mode 100644 tests/sub_red_light_fg_win10.bmp create mode 100644 tests/sub_red_light_fg_winxp.bmp create mode 100644 tests/sub_red_sans_win10.bmp create mode 100644 tests/sub_red_sans_winxp.bmp create mode 100644 tests/test___main__.py create mode 100644 tests/test_codes.py create mode 100644 tests/test_color.py create mode 100644 tests/test_core.py create mode 100644 tests/test_example.py create mode 100644 tests/test_parse.py create mode 100644 tests/test_search.py create mode 100644 tests/test_toggles.py create mode 100644 tests/test_windows.py create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11757d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,69 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg +*.rpm +requirements*.txt + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints + +# IntelliJ +.idea/ + +test*.png diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..e919857 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,25 @@ +# Configure. +language: python +python: 3.5 +sudo: false + +# Run. +install: pip install appveyor-artifacts coveralls tox +script: tox -e lint,py35,py34,py33,pypy3,pypy,py27,py26 +after_success: + - mv .coverage .coverage.travis + - appveyor-artifacts -mi download + - coverage combine + - coveralls + +# Deploy. +deploy: + provider: pypi + user: Robpol86 + password: + secure: + "JYR5ZVOHqZnr4uq8qtA9bM0+pBCfenTUApgSK2eMY3AoQ/Xi4UmcJvsGQkX70wq4twstRm\ + twpb/oFkAuxLMKkK7AJOTt9lKzqjF62xm/yGilDIYMZGCWi30OcRuUSQsEaE1Bq0H1TxciV\ + /ztcdwcXpTq2+oNQz9M7sbH7Czmdbw=" + on: + tags: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2ac3098 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# Contributing + +Everyone that wants to contribute to the project should read this document. + +## Getting Started + +You may follow these steps if you wish to create a pull request. Fork the repo and clone it on your local machine. Then +in the project's directory: + +```bash +virtualenv env # Create a virtualenv for the project's dependencies. +source env/bin/activate # Activate the virtualenv. +pip install tox # Install tox, which runs linting and tests. +tox # This runs all tests on your local machine. Make sure they pass. +``` + +If you don't have Python 2.6, 2.7, and 3.4 installed, you can manually run tests on one specific version by running +`tox -e lint,py27` (for Python 2.7) instead. + +## Consistency and Style + +Keep code style consistent with the rest of the project. Some suggestions: + +1. **Write tests for your new features.** `if new_feature else` **Write tests for bug-causing scenarios.** +2. Write docstrings for all classes, functions, methods, modules, etc. +3. Document all function/method arguments and return values. +4. Document all class variables instance variables. +5. Documentation guidelines also apply to tests, though not as strict. +6. Keep code style consistent, such as the kind of quotes to use and spacing. +7. Don't use `except:` or `except Exception:` unless you have a `raise` in the block. Be specific about error handling. +8. Don't use `isinstance()` (it breaks [duck typing](https://en.wikipedia.org/wiki/Duck_typing#In_Python)). + +## Thanks + +Thanks for fixing bugs or adding features to the project! diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d314c3c --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Robpol86 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..b236580 --- /dev/null +++ b/README.rst @@ -0,0 +1,229 @@ +========== +colorclass +========== + +Yet another ANSI color text library for Python. Provides "auto colors" for dark/light terminals. Works on Linux, OS X, +and Windows. For Windows support you just need to call ``Windows.enable()`` in your application. + +On Linux/OS X ``autocolors`` are toggled by calling ``set_light_background()`` and ``set_dark_background()``. On Windows +this can be done automatically if you call ``Windows.enable(auto_colors=True)``. Even though the latest Windows 10 does +support ANSI color codes natively, you still need to run Windows.enable() to take advantage of automatically detecting +the console's background color. + +In Python2.x this library subclasses ``unicode``, while on Python3.x it subclasses ``str``. + +* Python 2.6, 2.7, PyPy, PyPy3, 3.3, 3.4, and 3.5 supported on Linux and OS X. +* Python 2.6, 2.7, 3.3, 3.4, and 3.5 supported on Windows (both 32 and 64 bit versions of Python). + +.. image:: https://img.shields.io/appveyor/ci/Robpol86/colorclass/master.svg?style=flat-square&label=AppVeyor%20CI + :target: https://ci.appveyor.com/project/Robpol86/colorclass + :alt: Build Status Windows + +.. image:: https://img.shields.io/travis/Robpol86/colorclass/master.svg?style=flat-square&label=Travis%20CI + :target: https://travis-ci.org/Robpol86/colorclass + :alt: Build Status + +.. image:: https://img.shields.io/coveralls/Robpol86/colorclass/master.svg?style=flat-square&label=Coveralls + :target: https://coveralls.io/github/Robpol86/colorclass + :alt: Coverage Status + +.. image:: https://img.shields.io/pypi/v/colorclass.svg?style=flat-square&label=Latest + :target: https://pypi.python.org/pypi/colorclass + :alt: Latest Version + +.. image:: https://img.shields.io/pypi/dm/colorclass.svg?style=flat-square&label=PyPI%20Downloads + :target: https://pypi.python.org/pypi/colorclass + :alt: Downloads + +Quickstart +========== + +Install: + +.. code:: bash + + pip install colorclass + +Piped Command Line +================== + +It is possible to pipe curly-bracket tagged (or regular ANSI coded) text to Python in the command line to produce color +text. Some examples: + +.. code:: bash + + echo "{red}Red{/red}" |python -m colorclass # Red colored text. + echo -e "\033[31mRed\033[0m" | COLOR_DISABLE=true python -m colorclass # Strip colors + echo -e "\033[31mRed\033[0m" | COLOR_ENABLE=true python -m colorclass &> file.txt # Force colors. + +Export these environment variables as "true" to enable/disable some features: + +=============== ============================================ +Env Variable Description +=============== ============================================ +COLOR_ENABLE Force colors even when piping to a file. +COLOR_DISABLE Strip all colors from incoming text. +COLOR_LIGHT Use light colored text for dark backgrounds. +COLOR_DARK Use dark colored text for light backgrounds. +=============== ============================================ + +Example Implementation +====================== + +.. image:: https://github.com/Robpol86/colorclass/raw/master/example.png?raw=true + :alt: Example Script Screenshot + +.. image:: https://github.com/Robpol86/colorclass/raw/master/example_windows.png?raw=true + :alt: Example Windows Screenshot + +Source code for the example code is: `example.py `_ + +Usage +===== + +Different colors are chosen using curly-bracket tags, such as ``{red}{/red}``. For a list of available colors, call +``colorclass.list_tags()``. + +The available "auto colors" tags are: + +* autoblack +* autored +* autogreen +* autoyellow +* autoblue +* automagenta +* autocyan +* autowhite +* autobgblack +* autobgred +* autobggreen +* autobgyellow +* autobgblue +* autobgmagenta +* autobgcyan +* autobgwhite + +Methods of Class instances try to return sane data, such as: + +.. code:: python + + from colorclass import Color + color_string = Color('{red}Test{/red}') + + color_string + u'\x1b[31mTest\x1b[39m' + + len(color_string) + 4 + + color_string.istitle() + True + +There are also a couple of helper attributes for all Color instances: + +.. code:: python + + color_string.value_colors + '\x1b[31mTest\x1b[39m' + + color_string.value_no_colors + 'Test' + +Changelog +========= + +This project adheres to `Semantic Versioning `_. + +2.2.0 - 2016-05-14 +------------------ + +Added + * ``disable_if_no_tty()`` function to conditionally disable colors when STDERR and STDOUT are not streams. + +Changed + * Colors enabled by default always, like it was before v2.0.0. + +2.1.1 - 2016-05-10 +------------------ + +Fixed + * Printing box drawing characters on Windows from Python 2.6. + +2.1.0 - 2016-05-07 +------------------ + +Added + * ``keep_tags`` boolean keyword argument to Color(). Prevents colorclass from parsing curly brackets. + * Automatically skip replacing stderr/stdout streams on latest Windows 10 versions with native ANSI color support. + +Changed + * Refactored most of windows.py. + * Background color determined from either stderr or stdout, instead of just one stream (e.g. piping stderr to file). + +Fixed + * https://github.com/Robpol86/colorclass/issues/16 + * https://github.com/Robpol86/colorclass/issues/18 + +2.0.0 - 2016-04-10 +------------------ + +Added + * Python 3.5 support. + * ``enable_all_colors()``, ``is_enabled()``, and ``is_light()`` toggle functions. + * Library can be used as a script (e.g. ``echo "{red}Red{/red}" |python -m colorclass``). + * Ability to add/multiply Color instances just like str. + * Ability to iterate a Color instance and have each character keep its color codes. + +Changed + * Converted library from Python module to a package. + * ``set_light_background()`` and ``set_dark_background()`` no longer enable colors. Use ``enable_all_colors()``. + * Colors are disabled by default when STDERR and STDOUT are not streams (piped to files/null). Similar to ``grep``. + * Reduce size of ANSI escape sequences by removing codes that have no effect. e.g. ``\033[31;35m`` to ``\033[35m``. + * Color methods that return strings now return Color instances instead of str instances. + +Fixed + * https://github.com/Robpol86/colorclass/issues/15 + * https://github.com/Robpol86/colorclass/issues/17 + +1.2.0 - 2015-03-19 +------------------ + +Added + * Convenience single-color methods by `Marc Abramowitz `_. + +1.1.2 - 2015-01-07 +------------------ + +Fixed + * Maintaining ``Color`` type through ``.encode()`` and ``.decode()`` chains. + +1.1.1 - 2014-11-03 +------------------ + +Fixed + * Python 2.7 64-bit original colors bug on Windows. + * resetting colors when ``reset_atexit`` is True. + * Improved sorting of ``list_tags()``. + +1.1.0 - 2014-11-01 +------------------ + +Added + * Native Windows support and automatic background colors. + +1.0.2 - 2014-10-20 +------------------ + +Added + * Ability to disable/strip out all colors. + +1.0.1 - 2014-09-11 +------------------ + +Fixed + * ``splitlines()`` method. + +1.0.0 - 2014-09-01 +------------------ + +* Initial release. diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..5b14160 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,17 @@ +# Configure. +artifacts: + - path: .coverage + +# Run. +init: set PATH=C:\Python35-x64;C:\Python35-x64\Scripts;%PATH% +install: + - appveyor DownloadFile https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-desktop.ps1 + - ps: .\enable-desktop +build_script: pip install tox +test_script: tox -e lint,py35,py34,py33,py27,py26,py35x64,py34x64,py33x64,py27x64,py26x64 + +# Post. +on_finish: + - appveyor PushArtifact test_example_test_windows_screenshot.png + - appveyor PushArtifact test_windows_test_enable_disable.png + - appveyor PushArtifact test_windows_test_box_characters.png diff --git a/colorclass/__init__.py b/colorclass/__init__.py new file mode 100644 index 0000000..cae4016 --- /dev/null +++ b/colorclass/__init__.py @@ -0,0 +1,38 @@ +"""Colorful worry-free console applications for Linux, Mac OS X, and Windows. + +Supported natively on Linux and Mac OSX (Just Works), and on Windows it works the same if Windows.enable() is called. + +Gives you expected and sane results from methods like len() and .capitalize(). + +https://github.com/Robpol86/colorclass +https://pypi.python.org/pypi/colorclass +""" + +from colorclass.codes import list_tags # noqa +from colorclass.color import Color # noqa +from colorclass.toggles import disable_all_colors # noqa +from colorclass.toggles import disable_if_no_tty # noqa +from colorclass.toggles import enable_all_colors # noqa +from colorclass.toggles import is_enabled # noqa +from colorclass.toggles import is_light # noqa +from colorclass.toggles import set_dark_background # noqa +from colorclass.toggles import set_light_background # noqa +from colorclass.windows import Windows # noqa + + +__all__ = ( + 'Color', + 'disable_all_colors', + 'enable_all_colors', + 'is_enabled', + 'is_light', + 'list_tags', + 'set_dark_background', + 'set_light_background', + 'Windows', +) + + +__author__ = '@Robpol86' +__license__ = 'MIT' +__version__ = '2.2.0' diff --git a/colorclass/__main__.py b/colorclass/__main__.py new file mode 100644 index 0000000..d8f3f00 --- /dev/null +++ b/colorclass/__main__.py @@ -0,0 +1,33 @@ +"""Called by "python -m". Allows package to be used as a script. + +Example usage: +echo "{red}Red{/red}" |python -m colorclass +""" + +from __future__ import print_function + +import fileinput +import os + +from colorclass.color import Color +from colorclass.toggles import disable_all_colors +from colorclass.toggles import enable_all_colors +from colorclass.toggles import set_dark_background +from colorclass.toggles import set_light_background +from colorclass.windows import Windows + +TRUTHY = ('true', '1', 'yes', 'on') + + +if __name__ == '__main__': + if os.environ.get('COLOR_ENABLE', '').lower() in TRUTHY: + enable_all_colors() + elif os.environ.get('COLOR_DISABLE', '').lower() in TRUTHY: + disable_all_colors() + if os.environ.get('COLOR_LIGHT', '').lower() in TRUTHY: + set_light_background() + elif os.environ.get('COLOR_DARK', '').lower() in TRUTHY: + set_dark_background() + Windows.enable() + for LINE in fileinput.input(): + print(Color(LINE)) diff --git a/colorclass/codes.py b/colorclass/codes.py new file mode 100644 index 0000000..b0ecb03 --- /dev/null +++ b/colorclass/codes.py @@ -0,0 +1,229 @@ +"""Handles mapping between color names and ANSI codes and determining auto color codes.""" + +import sys +from collections import Mapping + +BASE_CODES = { + '/all': 0, 'b': 1, 'f': 2, 'i': 3, 'u': 4, 'flash': 5, 'outline': 6, 'negative': 7, 'invis': 8, 'strike': 9, + '/b': 22, '/f': 22, '/i': 23, '/u': 24, '/flash': 25, '/outline': 26, '/negative': 27, '/invis': 28, + '/strike': 29, '/fg': 39, '/bg': 49, + + 'black': 30, 'red': 31, 'green': 32, 'yellow': 33, 'blue': 34, 'magenta': 35, 'cyan': 36, 'white': 37, + + 'bgblack': 40, 'bgred': 41, 'bggreen': 42, 'bgyellow': 43, 'bgblue': 44, 'bgmagenta': 45, 'bgcyan': 46, + 'bgwhite': 47, + + 'hiblack': 90, 'hired': 91, 'higreen': 92, 'hiyellow': 93, 'hiblue': 94, 'himagenta': 95, 'hicyan': 96, + 'hiwhite': 97, + + 'hibgblack': 100, 'hibgred': 101, 'hibggreen': 102, 'hibgyellow': 103, 'hibgblue': 104, 'hibgmagenta': 105, + 'hibgcyan': 106, 'hibgwhite': 107, + + 'autored': None, 'autoblack': None, 'automagenta': None, 'autowhite': None, 'autoblue': None, 'autoyellow': None, + 'autogreen': None, 'autocyan': None, + + 'autobgred': None, 'autobgblack': None, 'autobgmagenta': None, 'autobgwhite': None, 'autobgblue': None, + 'autobgyellow': None, 'autobggreen': None, 'autobgcyan': None, + + '/black': 39, '/red': 39, '/green': 39, '/yellow': 39, '/blue': 39, '/magenta': 39, '/cyan': 39, '/white': 39, + '/hiblack': 39, '/hired': 39, '/higreen': 39, '/hiyellow': 39, '/hiblue': 39, '/himagenta': 39, '/hicyan': 39, + '/hiwhite': 39, + + '/bgblack': 49, '/bgred': 49, '/bggreen': 49, '/bgyellow': 49, '/bgblue': 49, '/bgmagenta': 49, '/bgcyan': 49, + '/bgwhite': 49, '/hibgblack': 49, '/hibgred': 49, '/hibggreen': 49, '/hibgyellow': 49, '/hibgblue': 49, + '/hibgmagenta': 49, '/hibgcyan': 49, '/hibgwhite': 49, + + '/autored': 39, '/autoblack': 39, '/automagenta': 39, '/autowhite': 39, '/autoblue': 39, '/autoyellow': 39, + '/autogreen': 39, '/autocyan': 39, + + '/autobgred': 49, '/autobgblack': 49, '/autobgmagenta': 49, '/autobgwhite': 49, '/autobgblue': 49, + '/autobgyellow': 49, '/autobggreen': 49, '/autobgcyan': 49, +} + + +class ANSICodeMapping(Mapping): + """Read-only dictionary, resolves closing tags and automatic colors. Iterates only used color tags. + + :cvar bool DISABLE_COLORS: Disable colors (strip color codes). + :cvar bool LIGHT_BACKGROUND: Use low intensity color codes. + """ + + DISABLE_COLORS = False + LIGHT_BACKGROUND = False + + def __init__(self, value_markup): + """Constructor. + + :param str value_markup: String with {color} tags. + """ + self.whitelist = [k for k in BASE_CODES if '{' + k + '}' in value_markup] + + def __getitem__(self, item): + """Return value for key or None if colors are disabled. + + :param str item: Key. + + :return: Color code integer. + :rtype: int + """ + if item not in self.whitelist: + raise KeyError(item) + if self.DISABLE_COLORS: + return None + return getattr(self, item, BASE_CODES[item]) + + def __iter__(self): + """Iterate dictionary.""" + return iter(self.whitelist) + + def __len__(self): + """Dictionary length.""" + return len(self.whitelist) + + @classmethod + def disable_all_colors(cls): + """Disable all colors. Strips any color tags or codes.""" + cls.DISABLE_COLORS = True + + @classmethod + def enable_all_colors(cls): + """Enable all colors. Strips any color tags or codes.""" + cls.DISABLE_COLORS = False + + @classmethod + def disable_if_no_tty(cls): + """Disable all colors only if there is no TTY available. + + :return: True if colors are disabled, False if stderr or stdout is a TTY. + :rtype: bool + """ + if sys.stdout.isatty() or sys.stderr.isatty(): + return False + cls.disable_all_colors() + return True + + @classmethod + def set_dark_background(cls): + """Choose dark colors for all 'auto'-prefixed codes for readability on light backgrounds.""" + cls.LIGHT_BACKGROUND = False + + @classmethod + def set_light_background(cls): + """Choose dark colors for all 'auto'-prefixed codes for readability on light backgrounds.""" + cls.LIGHT_BACKGROUND = True + + @property + def autoblack(self): + """Return automatic black foreground color depending on background color.""" + return BASE_CODES['black' if ANSICodeMapping.LIGHT_BACKGROUND else 'hiblack'] + + @property + def autored(self): + """Return automatic red foreground color depending on background color.""" + return BASE_CODES['red' if ANSICodeMapping.LIGHT_BACKGROUND else 'hired'] + + @property + def autogreen(self): + """Return automatic green foreground color depending on background color.""" + return BASE_CODES['green' if ANSICodeMapping.LIGHT_BACKGROUND else 'higreen'] + + @property + def autoyellow(self): + """Return automatic yellow foreground color depending on background color.""" + return BASE_CODES['yellow' if ANSICodeMapping.LIGHT_BACKGROUND else 'hiyellow'] + + @property + def autoblue(self): + """Return automatic blue foreground color depending on background color.""" + return BASE_CODES['blue' if ANSICodeMapping.LIGHT_BACKGROUND else 'hiblue'] + + @property + def automagenta(self): + """Return automatic magenta foreground color depending on background color.""" + return BASE_CODES['magenta' if ANSICodeMapping.LIGHT_BACKGROUND else 'himagenta'] + + @property + def autocyan(self): + """Return automatic cyan foreground color depending on background color.""" + return BASE_CODES['cyan' if ANSICodeMapping.LIGHT_BACKGROUND else 'hicyan'] + + @property + def autowhite(self): + """Return automatic white foreground color depending on background color.""" + return BASE_CODES['white' if ANSICodeMapping.LIGHT_BACKGROUND else 'hiwhite'] + + @property + def autobgblack(self): + """Return automatic black background color depending on background color.""" + return BASE_CODES['bgblack' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgblack'] + + @property + def autobgred(self): + """Return automatic red background color depending on background color.""" + return BASE_CODES['bgred' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgred'] + + @property + def autobggreen(self): + """Return automatic green background color depending on background color.""" + return BASE_CODES['bggreen' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibggreen'] + + @property + def autobgyellow(self): + """Return automatic yellow background color depending on background color.""" + return BASE_CODES['bgyellow' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgyellow'] + + @property + def autobgblue(self): + """Return automatic blue background color depending on background color.""" + return BASE_CODES['bgblue' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgblue'] + + @property + def autobgmagenta(self): + """Return automatic magenta background color depending on background color.""" + return BASE_CODES['bgmagenta' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgmagenta'] + + @property + def autobgcyan(self): + """Return automatic cyan background color depending on background color.""" + return BASE_CODES['bgcyan' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgcyan'] + + @property + def autobgwhite(self): + """Return automatic white background color depending on background color.""" + return BASE_CODES['bgwhite' if ANSICodeMapping.LIGHT_BACKGROUND else 'hibgwhite'] + + +def list_tags(): + """List the available tags. + + :return: List of 4-item tuples: opening tag, closing tag, main ansi value, closing ansi value. + :rtype: list + """ + # Build reverse dictionary. Keys are closing tags, values are [closing ansi, opening tag, opening ansi]. + reverse_dict = dict() + for tag, ansi in sorted(BASE_CODES.items()): + if tag.startswith('/'): + reverse_dict[tag] = [ansi, None, None] + else: + reverse_dict['/' + tag][1:] = [tag, ansi] + + # Collapse + four_item_tuples = [(v[1], k, v[2], v[0]) for k, v in reverse_dict.items()] + + # Sort. + def sorter(four_item): + """Sort /all /fg /bg first, then b i u flash, then auto colors, then dark colors, finally light colors. + + :param iter four_item: [opening tag, closing tag, main ansi value, closing ansi value] + + :return Sorting weight. + :rtype: int + """ + if not four_item[2]: # /all /fg /bg + return four_item[3] - 200 + if four_item[2] < 10 or four_item[0].startswith('auto'): # b f i u or auto colors + return four_item[2] - 100 + return four_item[2] + four_item_tuples.sort(key=sorter) + + return four_item_tuples diff --git a/colorclass/color.py b/colorclass/color.py new file mode 100644 index 0000000..2849d06 --- /dev/null +++ b/colorclass/color.py @@ -0,0 +1,220 @@ +"""Color class used by library users.""" + +from colorclass.core import ColorStr + + +class Color(ColorStr): + """Unicode (str in Python3) subclass with ANSI terminal text color support. + + Example syntax: Color('{red}Sample Text{/red}') + + Example without parsing logic: Color('{red}Sample Text{/red}', keep_tags=True) + + For a list of codes, call: colorclass.list_tags() + """ + + @classmethod + def colorize(cls, color, string, auto=False): + """Color-code entire string using specified color. + + :param str color: Color of string. + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + tag = '{0}{1}'.format('auto' if auto else '', color) + return cls('{%s}%s{/%s}' % (tag, string, tag)) + + @classmethod + def black(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('black', string, auto=auto) + + @classmethod + def bgblack(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgblack', string, auto=auto) + + @classmethod + def red(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('red', string, auto=auto) + + @classmethod + def bgred(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgred', string, auto=auto) + + @classmethod + def green(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('green', string, auto=auto) + + @classmethod + def bggreen(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bggreen', string, auto=auto) + + @classmethod + def yellow(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('yellow', string, auto=auto) + + @classmethod + def bgyellow(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgyellow', string, auto=auto) + + @classmethod + def blue(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('blue', string, auto=auto) + + @classmethod + def bgblue(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgblue', string, auto=auto) + + @classmethod + def magenta(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('magenta', string, auto=auto) + + @classmethod + def bgmagenta(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgmagenta', string, auto=auto) + + @classmethod + def cyan(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('cyan', string, auto=auto) + + @classmethod + def bgcyan(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgcyan', string, auto=auto) + + @classmethod + def white(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('white', string, auto=auto) + + @classmethod + def bgwhite(cls, string, auto=False): + """Color-code entire string. + + :param str string: String to colorize. + :param bool auto: Enable auto-color (dark/light terminal). + + :return: Class instance for colorized string. + :rtype: Color + """ + return cls.colorize('bgwhite', string, auto=auto) diff --git a/colorclass/core.py b/colorclass/core.py new file mode 100644 index 0000000..481bb40 --- /dev/null +++ b/colorclass/core.py @@ -0,0 +1,342 @@ +"""String subclass that handles ANSI color codes.""" + +from colorclass.codes import ANSICodeMapping +from colorclass.parse import parse_input, RE_SPLIT +from colorclass.search import build_color_index, find_char_color + +PARENT_CLASS = type(u'') + + +def apply_text(incoming, func): + """Call `func` on text portions of incoming color string. + + :param iter incoming: Incoming string/ColorStr/string-like object to iterate. + :param func: Function to call with string portion as first and only parameter. + + :return: Modified string, same class type as incoming string. + """ + split = RE_SPLIT.split(incoming) + for i, item in enumerate(split): + if not item or RE_SPLIT.match(item): + continue + split[i] = func(item) + return incoming.__class__().join(split) + + +class ColorBytes(bytes): + """Str (bytes in Python3) subclass, .decode() overridden to return unicode (str in Python3) subclass instance.""" + + def __new__(cls, *args, **kwargs): + """Save original class so decode() returns an instance of it.""" + original_class = kwargs.pop('original_class') + combined_args = [cls] + list(args) + instance = bytes.__new__(*combined_args, **kwargs) + instance.original_class = original_class + return instance + + def decode(self, encoding='utf-8', errors='strict'): + """Decode using the codec registered for encoding. Default encoding is 'utf-8'. + + errors may be given to set a different error handling scheme. Default is 'strict' meaning that encoding errors + raise a UnicodeDecodeError. Other possible values are 'ignore' and 'replace' as well as any other name + registered with codecs.register_error that is able to handle UnicodeDecodeErrors. + + :param str encoding: Codec. + :param str errors: Error handling scheme. + """ + original_class = getattr(self, 'original_class') + return original_class(super(ColorBytes, self).decode(encoding, errors)) + + +class ColorStr(PARENT_CLASS): + """Core color class.""" + + def __new__(cls, *args, **kwargs): + """Parse color markup and instantiate.""" + keep_tags = kwargs.pop('keep_tags', False) + + # Parse string. + value_markup = args[0] if args else PARENT_CLASS() # e.g. '{red}test{/red}' + value_colors, value_no_colors = parse_input(value_markup, ANSICodeMapping.DISABLE_COLORS, keep_tags) + color_index = build_color_index(value_colors) + + # Instantiate. + color_args = [cls, value_colors] + list(args[1:]) + instance = PARENT_CLASS.__new__(*color_args, **kwargs) + + # Add additional attributes and return. + instance.value_colors = value_colors + instance.value_no_colors = value_no_colors + instance.has_colors = value_colors != value_no_colors + instance.color_index = color_index + return instance + + def __add__(self, other): + """Concatenate.""" + return self.__class__(self.value_colors + other, keep_tags=True) + + def __getitem__(self, item): + """Retrieve character.""" + try: + color_pos = self.color_index[int(item)] + except TypeError: # slice + return super(ColorStr, self).__getitem__(item) + return self.__class__(find_char_color(self.value_colors, color_pos), keep_tags=True) + + def __iter__(self): + """Yield one color-coded character at a time.""" + for color_pos in self.color_index: + yield self.__class__(find_char_color(self.value_colors, color_pos)) + + def __len__(self): + """Length of string without color codes (what users expect).""" + return self.value_no_colors.__len__() + + def __mod__(self, other): + """String substitution (like printf).""" + return self.__class__(self.value_colors % other, keep_tags=True) + + def __mul__(self, other): + """Multiply string.""" + return self.__class__(self.value_colors * other, keep_tags=True) + + def __repr__(self): + """Representation of a class instance (like datetime.datetime.now()).""" + return '{name}({value})'.format(name=self.__class__.__name__, value=repr(self.value_colors)) + + def capitalize(self): + """Return a copy of the string with only its first character capitalized.""" + return apply_text(self, lambda s: s.capitalize()) + + def center(self, width, fillchar=None): + """Return centered in a string of length width. Padding is done using the specified fill character or space. + + :param int width: Length of output string. + :param str fillchar: Use this character instead of spaces. + """ + if fillchar is not None: + result = self.value_no_colors.center(width, fillchar) + else: + result = self.value_no_colors.center(width) + return self.__class__(result.replace(self.value_no_colors, self.value_colors), keep_tags=True) + + def count(self, sub, start=0, end=-1): + """Return the number of non-overlapping occurrences of substring sub in string[start:end]. + + Optional arguments start and end are interpreted as in slice notation. + + :param str sub: Substring to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + return self.value_no_colors.count(sub, start, end) + + def endswith(self, suffix, start=0, end=None): + """Return True if ends with the specified suffix, False otherwise. + + With optional start, test beginning at that position. With optional end, stop comparing at that position. + suffix can also be a tuple of strings to try. + + :param str suffix: Suffix to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + args = [suffix, start] + ([] if end is None else [end]) + return self.value_no_colors.endswith(*args) + + def encode(self, encoding=None, errors='strict'): + """Encode using the codec registered for encoding. encoding defaults to the default encoding. + + errors may be given to set a different error handling scheme. Default is 'strict' meaning that encoding errors + raise a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and 'xmlcharrefreplace' as well as any + other name registered with codecs.register_error that is able to handle UnicodeEncodeErrors. + + :param str encoding: Codec. + :param str errors: Error handling scheme. + """ + return ColorBytes(super(ColorStr, self).encode(encoding, errors), original_class=self.__class__) + + def decode(self, encoding=None, errors='strict'): + """Decode using the codec registered for encoding. encoding defaults to the default encoding. + + errors may be given to set a different error handling scheme. Default is 'strict' meaning that encoding errors + raise a UnicodeDecodeError. Other possible values are 'ignore' and 'replace' as well as any other name + registered with codecs.register_error that is able to handle UnicodeDecodeErrors. + + :param str encoding: Codec. + :param str errors: Error handling scheme. + """ + return self.__class__(super(ColorStr, self).decode(encoding, errors), keep_tags=True) + + def find(self, sub, start=None, end=None): + """Return the lowest index where substring sub is found, such that sub is contained within string[start:end]. + + Optional arguments start and end are interpreted as in slice notation. + + :param str sub: Substring to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + return self.value_no_colors.find(sub, start, end) + + def format(self, *args, **kwargs): + """Return a formatted version, using substitutions from args and kwargs. + + The substitutions are identified by braces ('{' and '}'). + """ + return self.__class__(super(ColorStr, self).format(*args, **kwargs), keep_tags=True) + + def index(self, sub, start=None, end=None): + """Like S.find() but raise ValueError when the substring is not found. + + :param str sub: Substring to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + return self.value_no_colors.index(sub, start, end) + + def isalnum(self): + """Return True if all characters in string are alphanumeric and there is at least one character in it.""" + return self.value_no_colors.isalnum() + + def isalpha(self): + """Return True if all characters in string are alphabetic and there is at least one character in it.""" + return self.value_no_colors.isalpha() + + def isdecimal(self): + """Return True if there are only decimal characters in string, False otherwise.""" + return self.value_no_colors.isdecimal() + + def isdigit(self): + """Return True if all characters in string are digits and there is at least one character in it.""" + return self.value_no_colors.isdigit() + + def isnumeric(self): + """Return True if there are only numeric characters in string, False otherwise.""" + return self.value_no_colors.isnumeric() + + def isspace(self): + """Return True if all characters in string are whitespace and there is at least one character in it.""" + return self.value_no_colors.isspace() + + def istitle(self): + """Return True if string is a titlecased string and there is at least one character in it. + + That is uppercase characters may only follow uncased characters and lowercase characters only cased ones. Return + False otherwise. + """ + return self.value_no_colors.istitle() + + def isupper(self): + """Return True if all cased characters are uppercase and there is at least one cased character in it.""" + return self.value_no_colors.isupper() + + def join(self, iterable): + """Return a string which is the concatenation of the strings in the iterable. + + :param iterable: Join items in this iterable. + """ + return self.__class__(super(ColorStr, self).join(iterable), keep_tags=True) + + def ljust(self, width, fillchar=None): + """Return left-justified string of length width. Padding is done using the specified fill character or space. + + :param int width: Length of output string. + :param str fillchar: Use this character instead of spaces. + """ + if fillchar is not None: + result = self.value_no_colors.ljust(width, fillchar) + else: + result = self.value_no_colors.ljust(width) + return self.__class__(result.replace(self.value_no_colors, self.value_colors), keep_tags=True) + + def rfind(self, sub, start=None, end=None): + """Return the highest index where substring sub is found, such that sub is contained within string[start:end]. + + Optional arguments start and end are interpreted as in slice notation. + + :param str sub: Substring to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + return self.value_no_colors.rfind(sub, start, end) + + def rindex(self, sub, start=None, end=None): + """Like .rfind() but raise ValueError when the substring is not found. + + :param str sub: Substring to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + return self.value_no_colors.rindex(sub, start, end) + + def rjust(self, width, fillchar=None): + """Return right-justified string of length width. Padding is done using the specified fill character or space. + + :param int width: Length of output string. + :param str fillchar: Use this character instead of spaces. + """ + if fillchar is not None: + result = self.value_no_colors.rjust(width, fillchar) + else: + result = self.value_no_colors.rjust(width) + return self.__class__(result.replace(self.value_no_colors, self.value_colors), keep_tags=True) + + def splitlines(self, keepends=False): + """Return a list of the lines in the string, breaking at line boundaries. + + Line breaks are not included in the resulting list unless keepends is given and True. + + :param bool keepends: Include linebreaks. + """ + return [self.__class__(l) for l in self.value_colors.splitlines(keepends)] + + def startswith(self, prefix, start=0, end=-1): + """Return True if string starts with the specified prefix, False otherwise. + + With optional start, test beginning at that position. With optional end, stop comparing at that position. prefix + can also be a tuple of strings to try. + + :param str prefix: Prefix to search. + :param int start: Beginning position. + :param int end: Stop comparison at this position. + """ + return self.value_no_colors.startswith(prefix, start, end) + + def swapcase(self): + """Return a copy of the string with uppercase characters converted to lowercase and vice versa.""" + return apply_text(self, lambda s: s.swapcase()) + + def title(self): + """Return a titlecased version of the string. + + That is words start with uppercase characters, all remaining cased characters have lowercase. + """ + return apply_text(self, lambda s: s.title()) + + def translate(self, table): + """Return a copy of the string, where all characters have been mapped through the given translation table. + + Table must be a mapping of Unicode ordinals to Unicode ordinals, strings, or None. Unmapped characters are left + untouched. Characters mapped to None are deleted. + + :param table: Translation table. + """ + return apply_text(self, lambda s: s.translate(table)) + + def upper(self): + """Return a copy of the string converted to uppercase.""" + return apply_text(self, lambda s: s.upper()) + + def zfill(self, width): + """Pad a numeric string with zeros on the left, to fill a field of the specified width. + + The string is never truncated. + + :param int width: Length of output string. + """ + if not self.value_no_colors: + result = self.value_no_colors.zfill(width) + else: + result = self.value_colors.replace(self.value_no_colors, self.value_no_colors.zfill(width)) + return self.__class__(result, keep_tags=True) diff --git a/colorclass/parse.py b/colorclass/parse.py new file mode 100644 index 0000000..46dc28e --- /dev/null +++ b/colorclass/parse.py @@ -0,0 +1,96 @@ +"""Parse color markup tags into ANSI escape sequences.""" + +import re + +from colorclass.codes import ANSICodeMapping, BASE_CODES + +CODE_GROUPS = ( + tuple(set(str(i) for i in BASE_CODES.values() if i and (40 <= i <= 49 or 100 <= i <= 109))), # bg colors + tuple(set(str(i) for i in BASE_CODES.values() if i and (30 <= i <= 39 or 90 <= i <= 99))), # fg colors + ('1', '22'), ('2', '22'), ('3', '23'), ('4', '24'), ('5', '25'), ('6', '26'), ('7', '27'), ('8', '28'), ('9', '29'), +) +RE_ANSI = re.compile(r'(\033\[([\d;]+)m)') +RE_COMBINE = re.compile(r'\033\[([\d;]+)m\033\[([\d;]+)m') +RE_SPLIT = re.compile(r'(\033\[[\d;]+m)') + + +def prune_overridden(ansi_string): + """Remove color codes that are rendered ineffective by subsequent codes in one escape sequence then sort codes. + + :param str ansi_string: Incoming ansi_string with ANSI color codes. + + :return: Color string with pruned color sequences. + :rtype: str + """ + multi_seqs = set(p for p in RE_ANSI.findall(ansi_string) if ';' in p[1]) # Sequences with multiple color codes. + + for escape, codes in multi_seqs: + r_codes = list(reversed(codes.split(';'))) + + # Nuke everything before {/all}. + try: + r_codes = r_codes[:r_codes.index('0') + 1] + except ValueError: + pass + + # Thin out groups. + for group in CODE_GROUPS: + for pos in reversed([i for i, n in enumerate(r_codes) if n in group][1:]): + r_codes.pop(pos) + + # Done. + reduced_codes = ';'.join(sorted(r_codes, key=int)) + if codes != reduced_codes: + ansi_string = ansi_string.replace(escape, '\033[' + reduced_codes + 'm') + + return ansi_string + + +def parse_input(tagged_string, disable_colors, keep_tags): + """Perform the actual conversion of tags to ANSI escaped codes. + + Provides a version of the input without any colors for len() and other methods. + + :param str tagged_string: The input unicode value. + :param bool disable_colors: Strip all colors in both outputs. + :param bool keep_tags: Skip parsing curly bracket tags into ANSI escape sequences. + + :return: 2-item tuple. First item is the parsed output. Second item is a version of the input without any colors. + :rtype: tuple + """ + codes = ANSICodeMapping(tagged_string) + output_colors = getattr(tagged_string, 'value_colors', tagged_string) + + # Convert: '{b}{red}' -> '\033[1m\033[31m' + if not keep_tags: + for tag, replacement in (('{' + k + '}', '' if v is None else '\033[%dm' % v) for k, v in codes.items()): + output_colors = output_colors.replace(tag, replacement) + + # Strip colors. + output_no_colors = RE_ANSI.sub('', output_colors) + if disable_colors: + return output_no_colors, output_no_colors + + # Combine: '\033[1m\033[31m' -> '\033[1;31m' + while True: + simplified = RE_COMBINE.sub(r'\033[\1;\2m', output_colors) + if simplified == output_colors: + break + output_colors = simplified + + # Prune: '\033[31;32;33;34;35m' -> '\033[35m' + output_colors = prune_overridden(output_colors) + + # Deduplicate: '\033[1;mT\033[1;mE\033[1;mS\033[1;mT' -> '\033[1;mTEST' + previous_escape = None + segments = list() + for item in (i for i in RE_SPLIT.split(output_colors) if i): + if RE_SPLIT.match(item): + if item != previous_escape: + segments.append(item) + previous_escape = item + else: + segments.append(item) + output_colors = ''.join(segments) + + return output_colors, output_no_colors diff --git a/colorclass/search.py b/colorclass/search.py new file mode 100644 index 0000000..555402d --- /dev/null +++ b/colorclass/search.py @@ -0,0 +1,49 @@ +"""Determine color of characters that may or may not be adjacent to ANSI escape sequences.""" + +from colorclass.parse import RE_SPLIT + + +def build_color_index(ansi_string): + """Build an index between visible characters and a string with invisible color codes. + + :param str ansi_string: String with color codes (ANSI escape sequences). + + :return: Position of visible characters in color string (indexes match non-color string). + :rtype: tuple + """ + mapping = list() + color_offset = 0 + for item in (i for i in RE_SPLIT.split(ansi_string) if i): + if RE_SPLIT.match(item): + color_offset += len(item) + else: + for _ in range(len(item)): + mapping.append(color_offset) + color_offset += 1 + return tuple(mapping) + + +def find_char_color(ansi_string, pos): + """Determine what color a character is in the string. + + :param str ansi_string: String with color codes (ANSI escape sequences). + :param int pos: Position of the character in the ansi_string. + + :return: Character along with all surrounding color codes. + :rtype: str + """ + result = list() + position = 0 # Set to None when character is found. + for item in (i for i in RE_SPLIT.split(ansi_string) if i): + if RE_SPLIT.match(item): + result.append(item) + if position is not None: + position += len(item) + elif position is not None: + for char in item: + if position == pos: + result.append(char) + position = None + break + position += 1 + return ''.join(result) diff --git a/colorclass/toggles.py b/colorclass/toggles.py new file mode 100644 index 0000000..1ba6bce --- /dev/null +++ b/colorclass/toggles.py @@ -0,0 +1,42 @@ +"""Convenience functions to enable/disable features.""" + +from colorclass.codes import ANSICodeMapping + + +def disable_all_colors(): + """Disable all colors. Strip any color tags or codes.""" + ANSICodeMapping.disable_all_colors() + + +def enable_all_colors(): + """Enable colors.""" + ANSICodeMapping.enable_all_colors() + + +def disable_if_no_tty(): + """Disable all colors if there is no TTY available. + + :return: True if colors are disabled, False if stderr or stdout is a TTY. + :rtype: bool + """ + return ANSICodeMapping.disable_if_no_tty() + + +def is_enabled(): + """Are colors enabled.""" + return not ANSICodeMapping.DISABLE_COLORS + + +def set_light_background(): + """Choose dark colors for all 'auto'-prefixed codes for readability on light backgrounds.""" + ANSICodeMapping.set_light_background() + + +def set_dark_background(): + """Choose dark colors for all 'auto'-prefixed codes for readability on light backgrounds.""" + ANSICodeMapping.set_dark_background() + + +def is_light(): + """Are background colors for light backgrounds.""" + return ANSICodeMapping.LIGHT_BACKGROUND diff --git a/colorclass/windows.py b/colorclass/windows.py new file mode 100644 index 0000000..8f69478 --- /dev/null +++ b/colorclass/windows.py @@ -0,0 +1,388 @@ +"""Windows console screen buffer handlers.""" + +from __future__ import print_function + +import atexit +import ctypes +import re +import sys + +from colorclass.codes import ANSICodeMapping, BASE_CODES +from colorclass.core import RE_SPLIT + +ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 +INVALID_HANDLE_VALUE = -1 +IS_WINDOWS = sys.platform == 'win32' +RE_NUMBER_SEARCH = re.compile(r'\033\[([\d;]+)m') +STD_ERROR_HANDLE = -12 +STD_OUTPUT_HANDLE = -11 +WINDOWS_CODES = { + '/all': -33, '/fg': -39, '/bg': -49, + + 'black': 0, 'red': 4, 'green': 2, 'yellow': 6, 'blue': 1, 'magenta': 5, 'cyan': 3, 'white': 7, + + 'bgblack': -8, 'bgred': 64, 'bggreen': 32, 'bgyellow': 96, 'bgblue': 16, 'bgmagenta': 80, 'bgcyan': 48, + 'bgwhite': 112, + + 'hiblack': 8, 'hired': 12, 'higreen': 10, 'hiyellow': 14, 'hiblue': 9, 'himagenta': 13, 'hicyan': 11, 'hiwhite': 15, + + 'hibgblack': 128, 'hibgred': 192, 'hibggreen': 160, 'hibgyellow': 224, 'hibgblue': 144, 'hibgmagenta': 208, + 'hibgcyan': 176, 'hibgwhite': 240, + + '/black': -39, '/red': -39, '/green': -39, '/yellow': -39, '/blue': -39, '/magenta': -39, '/cyan': -39, + '/white': -39, '/hiblack': -39, '/hired': -39, '/higreen': -39, '/hiyellow': -39, '/hiblue': -39, '/himagenta': -39, + '/hicyan': -39, '/hiwhite': -39, + + '/bgblack': -49, '/bgred': -49, '/bggreen': -49, '/bgyellow': -49, '/bgblue': -49, '/bgmagenta': -49, + '/bgcyan': -49, '/bgwhite': -49, '/hibgblack': -49, '/hibgred': -49, '/hibggreen': -49, '/hibgyellow': -49, + '/hibgblue': -49, '/hibgmagenta': -49, '/hibgcyan': -49, '/hibgwhite': -49, +} + + +class COORD(ctypes.Structure): + """COORD structure. http://msdn.microsoft.com/en-us/library/windows/desktop/ms682119.""" + + _fields_ = [ + ('X', ctypes.c_short), + ('Y', ctypes.c_short), + ] + + +class SmallRECT(ctypes.Structure): + """SMALL_RECT structure. http://msdn.microsoft.com/en-us/library/windows/desktop/ms686311.""" + + _fields_ = [ + ('Left', ctypes.c_short), + ('Top', ctypes.c_short), + ('Right', ctypes.c_short), + ('Bottom', ctypes.c_short), + ] + + +class ConsoleScreenBufferInfo(ctypes.Structure): + """CONSOLE_SCREEN_BUFFER_INFO structure. http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093.""" + + _fields_ = [ + ('dwSize', COORD), + ('dwCursorPosition', COORD), + ('wAttributes', ctypes.c_ushort), + ('srWindow', SmallRECT), + ('dwMaximumWindowSize', COORD) + ] + + +def init_kernel32(kernel32=None): + """Load a unique instance of WinDLL into memory, set arg/return types, and get stdout/err handles. + + 1. Since we are setting DLL function argument types and return types, we need to maintain our own instance of + kernel32 to prevent overriding (or being overwritten by) user's own changes to ctypes.windll.kernel32. + 2. While we're doing all this we might as well get the handles to STDOUT and STDERR streams. + 3. If either stream has already been replaced set return value to INVALID_HANDLE_VALUE to indicate it shouldn't be + replaced. + + :raise AttributeError: When called on a non-Windows platform. + + :param kernel32: Optional mock kernel32 object. For testing. + + :return: Loaded kernel32 instance, stderr handle (int), stdout handle (int). + :rtype: tuple + """ + if not kernel32: + kernel32 = ctypes.LibraryLoader(ctypes.WinDLL).kernel32 # Load our own instance. Unique memory address. + kernel32.GetStdHandle.argtypes = [ctypes.c_ulong] + kernel32.GetStdHandle.restype = ctypes.c_void_p + kernel32.GetConsoleScreenBufferInfo.argtypes = [ + ctypes.c_void_p, + ctypes.POINTER(ConsoleScreenBufferInfo), + ] + kernel32.GetConsoleScreenBufferInfo.restype = ctypes.c_long + + # Get handles. + if hasattr(sys.stderr, '_original_stream'): + stderr = INVALID_HANDLE_VALUE + else: + stderr = kernel32.GetStdHandle(STD_ERROR_HANDLE) + if hasattr(sys.stdout, '_original_stream'): + stdout = INVALID_HANDLE_VALUE + else: + stdout = kernel32.GetStdHandle(STD_OUTPUT_HANDLE) + + return kernel32, stderr, stdout + + +def get_console_info(kernel32, handle): + """Get information about this current console window. + + http://msdn.microsoft.com/en-us/library/windows/desktop/ms683231 + https://code.google.com/p/colorama/issues/detail?id=47 + https://bitbucket.org/pytest-dev/py/src/4617fe46/py/_io/terminalwriter.py + + Windows 10 Insider since around February 2016 finally introduced support for ANSI colors. No need to replace stdout + and stderr streams to intercept colors and issue multiple SetConsoleTextAttribute() calls for these consoles. + + :raise OSError: When GetConsoleScreenBufferInfo or GetConsoleMode API calls fail. + + :param ctypes.windll.kernel32 kernel32: Loaded kernel32 instance. + :param int handle: stderr or stdout handle. + + :return: Foreground and background colors (integers) as well as native ANSI support (bool). + :rtype: tuple + """ + # Query Win32 API. + csbi = ConsoleScreenBufferInfo() # Populated by GetConsoleScreenBufferInfo. + lpcsbi = ctypes.byref(csbi) + dword = ctypes.c_ulong() # Populated by GetConsoleMode. + lpdword = ctypes.byref(dword) + if not kernel32.GetConsoleScreenBufferInfo(handle, lpcsbi) or not kernel32.GetConsoleMode(handle, lpdword): + raise ctypes.WinError() + + # Parse data. + # buffer_width = int(csbi.dwSize.X - 1) + # buffer_height = int(csbi.dwSize.Y) + # terminal_width = int(csbi.srWindow.Right - csbi.srWindow.Left) + # terminal_height = int(csbi.srWindow.Bottom - csbi.srWindow.Top) + fg_color = csbi.wAttributes % 16 + bg_color = csbi.wAttributes & 240 + native_ansi = bool(dword.value & ENABLE_VIRTUAL_TERMINAL_PROCESSING) + + return fg_color, bg_color, native_ansi + + +def bg_color_native_ansi(kernel32, stderr, stdout): + """Get background color and if console supports ANSI colors natively for both streams. + + :param ctypes.windll.kernel32 kernel32: Loaded kernel32 instance. + :param int stderr: stderr handle. + :param int stdout: stdout handle. + + :return: Background color (int) and native ANSI support (bool). + :rtype: tuple + """ + try: + if stderr == INVALID_HANDLE_VALUE: + raise OSError + bg_color, native_ansi = get_console_info(kernel32, stderr)[1:] + except OSError: + try: + if stdout == INVALID_HANDLE_VALUE: + raise OSError + bg_color, native_ansi = get_console_info(kernel32, stdout)[1:] + except OSError: + bg_color, native_ansi = WINDOWS_CODES['black'], False + return bg_color, native_ansi + + +class WindowsStream(object): + """Replacement stream which overrides sys.stdout or sys.stderr. When writing or printing, ANSI codes are converted. + + ANSI (Linux/Unix) color codes are converted into win32 system calls, changing the next character's color before + printing it. Resources referenced: + https://github.com/tartley/colorama + http://www.cplusplus.com/articles/2ywTURfi/ + http://thomasfischer.biz/python-and-windows-terminal-colors/ + http://stackoverflow.com/questions/17125440/c-win32-console-color + http://www.tysos.org/svn/trunk/mono/corlib/System/WindowsConsoleDriver.cs + http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python + http://msdn.microsoft.com/en-us/library/windows/desktop/ms682088#_win32_character_attributes + + :cvar list ALL_BG_CODES: List of bg Windows codes. Used to determine if requested color is foreground or background. + :cvar dict COMPILED_CODES: Translation dict. Keys are ANSI codes (values of BASE_CODES), values are Windows codes. + :ivar int default_fg: Foreground Windows color code at the time of instantiation. + :ivar int default_bg: Background Windows color code at the time of instantiation. + """ + + ALL_BG_CODES = [v for k, v in WINDOWS_CODES.items() if k.startswith('bg') or k.startswith('hibg')] + COMPILED_CODES = dict((v, WINDOWS_CODES[k]) for k, v in BASE_CODES.items() if k in WINDOWS_CODES) + + def __init__(self, kernel32, stream_handle, original_stream): + """Constructor. + + :param ctypes.windll.kernel32 kernel32: Loaded kernel32 instance. + :param int stream_handle: stderr or stdout handle. + :param original_stream: sys.stderr or sys.stdout before being overridden by this class' instance. + """ + self._kernel32 = kernel32 + self._stream_handle = stream_handle + self._original_stream = original_stream + self.default_fg, self.default_bg = self.colors + + def __getattr__(self, item): + """If an attribute/function/etc is not defined in this function, retrieve the one from the original stream. + + Fixes ipython arrow key presses. + """ + return getattr(self._original_stream, item) + + @property + def colors(self): + """Return the current foreground and background colors.""" + try: + return get_console_info(self._kernel32, self._stream_handle)[:2] + except OSError: + return WINDOWS_CODES['white'], WINDOWS_CODES['black'] + + @colors.setter + def colors(self, color_code): + """Change the foreground and background colors for subsequently printed characters. + + None resets colors to their original values (when class was instantiated). + + Since setting a color requires including both foreground and background codes (merged), setting just the + foreground color resets the background color to black, and vice versa. + + This function first gets the current background and foreground colors, merges in the requested color code, and + sets the result. + + However if we need to remove just the foreground color but leave the background color the same (or vice versa) + such as when {/red} is used, we must merge the default foreground color with the current background color. This + is the reason for those negative values. + + :param int color_code: Color code from WINDOWS_CODES. + """ + if color_code is None: + color_code = WINDOWS_CODES['/all'] + + # Get current color code. + current_fg, current_bg = self.colors + + # Handle special negative codes. Also determine the final color code. + if color_code == WINDOWS_CODES['/fg']: + final_color_code = self.default_fg | current_bg # Reset the foreground only. + elif color_code == WINDOWS_CODES['/bg']: + final_color_code = current_fg | self.default_bg # Reset the background only. + elif color_code == WINDOWS_CODES['/all']: + final_color_code = self.default_fg | self.default_bg # Reset both. + elif color_code == WINDOWS_CODES['bgblack']: + final_color_code = current_fg # Black background. + else: + new_is_bg = color_code in self.ALL_BG_CODES + final_color_code = color_code | (current_fg if new_is_bg else current_bg) + + # Set new code. + self._kernel32.SetConsoleTextAttribute(self._stream_handle, final_color_code) + + def write(self, p_str): + """Write to stream. + + :param str p_str: string to print. + """ + for segment in RE_SPLIT.split(p_str): + if not segment: + # Empty string. p_str probably starts with colors so the first item is always ''. + continue + if not RE_SPLIT.match(segment): + # No color codes, print regular text. + print(segment, file=self._original_stream, end='') + self._original_stream.flush() + continue + for color_code in (int(c) for c in RE_NUMBER_SEARCH.findall(segment)[0].split(';')): + if color_code in self.COMPILED_CODES: + self.colors = self.COMPILED_CODES[color_code] + + +class Windows(object): + """Enable and disable Windows support for ANSI color character codes. + + Call static method Windows.enable() to enable color support for the remainder of the process' lifetime. + + This class is also a context manager. You can do this: + with Windows(): + print(Color('{autored}Test{/autored}')) + + Or this: + with Windows(auto_colors=True): + print(Color('{autored}Test{/autored}')) + """ + + @classmethod + def disable(cls): + """Restore sys.stderr and sys.stdout to their original objects. Resets colors to their original values. + + :return: If streams restored successfully. + :rtype: bool + """ + # Skip if not on Windows. + if not IS_WINDOWS: + return False + + # Restore default colors. + if hasattr(sys.stderr, '_original_stream'): + getattr(sys, 'stderr').color = None + if hasattr(sys.stdout, '_original_stream'): + getattr(sys, 'stdout').color = None + + # Restore original streams. + changed = False + if hasattr(sys.stderr, '_original_stream'): + changed = True + sys.stderr = getattr(sys.stderr, '_original_stream') + if hasattr(sys.stdout, '_original_stream'): + changed = True + sys.stdout = getattr(sys.stdout, '_original_stream') + + return changed + + @staticmethod + def is_enabled(): + """Return True if either stderr or stdout has colors enabled.""" + return hasattr(sys.stderr, '_original_stream') or hasattr(sys.stdout, '_original_stream') + + @classmethod + def enable(cls, auto_colors=False, reset_atexit=False): + """Enable color text with print() or sys.stdout.write() (stderr too). + + :param bool auto_colors: Automatically selects dark or light colors based on current terminal's background + color. Only works with {autored} and related tags. + :param bool reset_atexit: Resets original colors upon Python exit (in case you forget to reset it yourself with + a closing tag). Does nothing on native ANSI consoles. + + :return: If streams replaced successfully. + :rtype: bool + """ + if not IS_WINDOWS: + return False # Windows only. + + # Get values from init_kernel32(). + kernel32, stderr, stdout = init_kernel32() + if stderr == INVALID_HANDLE_VALUE and stdout == INVALID_HANDLE_VALUE: + return False # No valid handles, nothing to do. + + # Get console info. + bg_color, native_ansi = bg_color_native_ansi(kernel32, stderr, stdout) + + # Set auto colors: + if auto_colors: + if bg_color in (112, 96, 240, 176, 224, 208, 160): + ANSICodeMapping.set_light_background() + else: + ANSICodeMapping.set_dark_background() + + # Don't replace streams if ANSI codes are natively supported. + if native_ansi: + return False + + # Reset on exit if requested. + if reset_atexit: + atexit.register(cls.disable) + + # Overwrite stream references. + if stderr != INVALID_HANDLE_VALUE: + sys.stderr.flush() + sys.stderr = WindowsStream(kernel32, stderr, sys.stderr) + if stdout != INVALID_HANDLE_VALUE: + sys.stdout.flush() + sys.stdout = WindowsStream(kernel32, stdout, sys.stdout) + + return True + + def __init__(self, auto_colors=False): + """Constructor.""" + self.auto_colors = auto_colors + + def __enter__(self): + """Context manager, enables colors on Windows.""" + self.enable(auto_colors=self.auto_colors) + + def __exit__(self, *_): + """Context manager, disabled colors on Windows.""" + self.disable() diff --git a/example.png b/example.png new file mode 100644 index 0000000000000000000000000000000000000000..352aa54081b82a564e3f34a9ea126994c023c59a GIT binary patch literal 295535 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

Bp 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

4Y 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 Hb$tF01#~|0 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..3f22821 --- /dev/null +++ b/setup.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +"""Setup script for the project.""" + +from __future__ import print_function + +import codecs +import os + +from setuptools import setup + + +def readme(): + """Try to read README.rst or return empty string if failed. + + :return: File contents. + :rtype: str + """ + path = os.path.realpath(os.path.join(os.path.dirname(__file__), 'README.rst')) + handle = None + try: + handle = codecs.open(path, encoding='utf-8') + return handle.read(131072) + except IOError: + return '' + finally: + getattr(handle, 'close', lambda: None)() + + +setup( + author='@Robpol86', + author_email='robpol86@gmail.com', + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Console', + 'Environment :: MacOS X', + 'Environment :: Win32 (MS Windows)', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: POSIX :: Linux', + 'Operating System :: POSIX', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: Implementation :: PyPy', + 'Topic :: Software Development :: Libraries', + 'Topic :: Terminals', + 'Topic :: Text Processing :: Markup', + ], + description='Colorful worry-free console applications for Linux, Mac OS X, and Windows.', + install_requires=[], + keywords='Shell Bash ANSI ASCII terminal console colors automatic', + license='MIT', + long_description=readme(), + name='colorclass', + packages=['colorclass'], + url='https://github.com/Robpol86/colorclass', + version='2.2.0', + zip_safe=True, +) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..bf16d1e --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Allows importing from conftest.""" diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..5f404db --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,78 @@ +"""Configure tests.""" + +import py +import pytest + +from colorclass.codes import ANSICodeMapping +from colorclass.color import Color +from colorclass.core import ColorStr, PARENT_CLASS + +PROJECT_ROOT = py.path.local(__file__).dirpath().join('..') + + +@pytest.fixture(autouse=True) +def set_defaults(monkeypatch): + """Set ANSICodeMapping defaults before each test. + + :param monkeypatch: pytest fixture. + """ + monkeypatch.setattr(ANSICodeMapping, 'DISABLE_COLORS', False) + monkeypatch.setattr(ANSICodeMapping, 'LIGHT_BACKGROUND', False) + + +def assert_both_values(actual, expected_plain, expected_color, kind=None): + """Handle asserts for color and non-color strings in color and non-color tests. + + :param ColorStr actual: Return value of ColorStr class method. + :param expected_plain: Expected non-color value. + :param expected_color: Expected color value. + :param str kind: Type of string to test. + """ + if kind.endswith('plain'): + assert actual.value_colors == expected_plain + assert actual.value_no_colors == expected_plain + assert actual.has_colors is False + elif kind.endswith('color'): + assert actual.value_colors == expected_color + assert actual.value_no_colors == expected_plain + if '\033' in actual.value_colors: + assert actual.has_colors is True + else: + assert actual.has_colors is False + else: + assert actual == expected_plain + + if kind.startswith('ColorStr'): + assert actual.__class__ == ColorStr + elif kind.startswith('Color'): + assert actual.__class__ == Color + + +def get_instance(kind, sample=None, color='red'): + """Get either a string, non-color ColorStr, or color ColorStr instance. + + :param str kind: Type of string to test. + :param iter sample: Input test to derive instances from. + :param str color: Color tags to use. Default is red. + + :return: Instance. + """ + # First determine which class/type to use. + if kind.startswith('ColorStr'): + cls = ColorStr + elif kind.startswith('Color'): + cls = Color + else: + cls = PARENT_CLASS + + # Next handle NoneType samples. + if sample is None: + return cls() + + # Finally handle non-None samples. + if kind.endswith('plain'): + return cls(sample) + elif kind.endswith('color'): + tags = '{%s}' % color, '{/%s}' % color + return cls(tags[0] + sample + tags[1]) + return sample diff --git a/tests/screenshot.py b/tests/screenshot.py new file mode 100644 index 0000000..cc391eb --- /dev/null +++ b/tests/screenshot.py @@ -0,0 +1,299 @@ +"""Take screenshots and search for subimages in images.""" + +import ctypes +import os +import random +import struct +import subprocess +import time + +try: + from itertools import izip +except ImportError: + izip = zip # Py3 + +from colorclass.windows import WINDOWS_CODES +from tests.conftest import PROJECT_ROOT + +STARTF_USEFILLATTRIBUTE = 0x00000010 +STARTF_USESHOWWINDOW = getattr(subprocess, 'STARTF_USESHOWWINDOW', 1) +STILL_ACTIVE = 259 +SW_MAXIMIZE = 3 + + +class StartupInfo(ctypes.Structure): + """STARTUPINFO structure.""" + + _fields_ = [ + ('cb', ctypes.c_ulong), + ('lpReserved', ctypes.c_char_p), + ('lpDesktop', ctypes.c_char_p), + ('lpTitle', ctypes.c_char_p), + ('dwX', ctypes.c_ulong), + ('dwY', ctypes.c_ulong), + ('dwXSize', ctypes.c_ulong), + ('dwYSize', ctypes.c_ulong), + ('dwXCountChars', ctypes.c_ulong), + ('dwYCountChars', ctypes.c_ulong), + ('dwFillAttribute', ctypes.c_ulong), + ('dwFlags', ctypes.c_ulong), + ('wShowWindow', ctypes.c_ushort), + ('cbReserved2', ctypes.c_ushort), + ('lpReserved2', ctypes.c_char_p), + ('hStdInput', ctypes.c_ulong), + ('hStdOutput', ctypes.c_ulong), + ('hStdError', ctypes.c_ulong), + ] + + def __init__(self, maximize=False, title=None, white_bg=False): + """Constructor. + + :param bool maximize: Start process in new console window, maximized. + :param bool white_bg: New console window will be black text on white background. + :param bytes title: Set new window title to this instead of exe path. + """ + super(StartupInfo, self).__init__() + self.cb = ctypes.sizeof(self) + if maximize: + self.dwFlags |= STARTF_USESHOWWINDOW + self.wShowWindow = SW_MAXIMIZE + if title: + self.lpTitle = ctypes.c_char_p(title) + if white_bg: + self.dwFlags |= STARTF_USEFILLATTRIBUTE + self.dwFillAttribute = WINDOWS_CODES['hibgwhite'] | WINDOWS_CODES['black'] + + +class ProcessInfo(ctypes.Structure): + """PROCESS_INFORMATION structure.""" + + _fields_ = [ + ('hProcess', ctypes.c_void_p), + ('hThread', ctypes.c_void_p), + ('dwProcessId', ctypes.c_ulong), + ('dwThreadId', ctypes.c_ulong), + ] + + +class RunNewConsole(object): + """Run the command in a new console window. Windows only. Use in a with statement. + + subprocess sucks and really limits your access to the win32 API. Its implementation is half-assed. Using this so + that STARTUPINFO.lpTitle actually works and STARTUPINFO.dwFillAttribute produce the expected result. + """ + + def __init__(self, command, maximized=False, title=None, white_bg=False): + """Constructor. + + :param iter command: Command to run. + :param bool maximized: Start process in new console window, maximized. + :param bytes title: Set new window title to this. Needed by user32.FindWindow. + :param bool white_bg: New console window will be black text on white background. + """ + if title is None: + title = 'pytest-{0}-{1}'.format(os.getpid(), random.randint(1000, 9999)).encode('ascii') + self.startup_info = StartupInfo(maximize=maximized, title=title, white_bg=white_bg) + self.process_info = ProcessInfo() + self.command_str = subprocess.list2cmdline(command).encode('ascii') + self._handles = list() + self._kernel32 = ctypes.LibraryLoader(ctypes.WinDLL).kernel32 + self._kernel32.GetExitCodeProcess.argtypes = [ctypes.c_void_p, ctypes.POINTER(ctypes.c_ulong)] + self._kernel32.GetExitCodeProcess.restype = ctypes.c_long + + def __del__(self): + """Close win32 handles.""" + while self._handles: + try: + self._kernel32.CloseHandle(self._handles.pop(0)) # .pop() is thread safe. + except IndexError: + break + + def __enter__(self): + """Entering the `with` block. Runs the process.""" + if not self._kernel32.CreateProcessA( + None, # lpApplicationName + self.command_str, # lpCommandLine + None, # lpProcessAttributes + None, # lpThreadAttributes + False, # bInheritHandles + subprocess.CREATE_NEW_CONSOLE, # dwCreationFlags + None, # lpEnvironment + str(PROJECT_ROOT).encode('ascii'), # lpCurrentDirectory + ctypes.byref(self.startup_info), # lpStartupInfo + ctypes.byref(self.process_info) # lpProcessInformation + ): + raise ctypes.WinError() + + # Add handles added by the OS. + self._handles.append(self.process_info.hProcess) + self._handles.append(self.process_info.hThread) + + # Get hWnd. + self.hwnd = 0 + for _ in range(int(5 / 0.1)): + # Takes time for console window to initialize. + self.hwnd = ctypes.windll.user32.FindWindowA(None, self.startup_info.lpTitle) + if self.hwnd: + break + time.sleep(0.1) + assert self.hwnd + + # Return generator that yields window size/position. + return self._iter_pos() + + def __exit__(self, *_): + """Cleanup.""" + try: + # Verify process exited 0. + status = ctypes.c_ulong(STILL_ACTIVE) + while status.value == STILL_ACTIVE: + time.sleep(0.1) + if not self._kernel32.GetExitCodeProcess(self.process_info.hProcess, ctypes.byref(status)): + raise ctypes.WinError() + assert status.value == 0 + finally: + # Close handles. + self.__del__() + + def _iter_pos(self): + """Yield new console window's current position and dimensions. + + :return: Yields region the new window is in (left, upper, right, lower). + :rtype: tuple + """ + rect = ctypes.create_string_buffer(16) # To be written to by GetWindowRect. RECT structure. + while ctypes.windll.user32.GetWindowRect(self.hwnd, rect): + left, top, right, bottom = struct.unpack('llll', rect.raw) + width, height = right - left, bottom - top + assert width > 1 + assert height > 1 + yield left, top, right, bottom + raise StopIteration + + +def iter_rows(pil_image): + """Yield tuple of pixels for each row in the image. + + itertools.izip in Python 2.x and zip in Python 3.x are writen in C. Much faster than anything else I've found + written in pure Python. + + From: + http://stackoverflow.com/questions/1624883/alternative-way-to-split-a-list-into-groups-of-n/1625023#1625023 + + :param PIL.Image.Image pil_image: Image to read from. + + :return: Yields rows. + :rtype: tuple + """ + iterator = izip(*(iter(pil_image.getdata()),) * pil_image.width) + for row in iterator: + yield row + + +def get_most_interesting_row(pil_image): + """Look for a row in the image that has the most unique pixels. + + :param PIL.Image.Image pil_image: Image to read from. + + :return: Row (tuple of pixel tuples), row as a set, first pixel tuple, y offset from top. + :rtype: tuple + """ + final = (None, set(), None, None) # row, row_set, first_pixel, y_pos + for y_pos, row in enumerate(iter_rows(pil_image)): + row_set = set(row) + if len(row_set) > len(final[1]): + final = row, row_set, row[0], y_pos + if len(row_set) == pil_image.width: + break # Can't get bigger. + return final + + +def count_subimages(screenshot, subimg): + """Check how often subimg appears in the screenshot image. + + :param PIL.Image.Image screenshot: Screen shot to search through. + :param PIL.Image.Image subimg: Subimage to search for. + + :return: Number of times subimg appears in the screenshot. + :rtype: int + """ + # Get row to search for. + si_pixels = list(subimg.getdata()) # Load entire subimg into memory. + si_width = subimg.width + si_height = subimg.height + si_row, si_row_set, si_pixel, si_y = get_most_interesting_row(subimg) + occurrences = 0 + + # Look for subimg row in screenshot, then crop and compare pixel arrays. + for y_pos, row in enumerate(iter_rows(screenshot)): + if si_row_set - set(row): + continue # Some pixels not found. + for x_pos in range(screenshot.width - si_width + 1): + if row[x_pos] != si_pixel: + continue # First pixel does not match. + if row[x_pos:x_pos + si_width] != si_row: + continue # Row does not match. + # Found match for interesting row of subimg in screenshot. + y_corrected = y_pos - si_y + with screenshot.crop((x_pos, y_corrected, x_pos + si_width, y_corrected + si_height)) as cropped: + if list(cropped.getdata()) == si_pixels: + occurrences += 1 + + return occurrences + + +def try_candidates(screenshot, subimg_candidates, expected_count): + """Call count_subimages() for each subimage candidate until. + + If you get ImportError run "pip install pillow". Only OSX and Windows is supported. + + :param PIL.Image.Image screenshot: Screen shot to search through. + :param iter subimg_candidates: Subimage paths to look for. List of strings. + :param int expected_count: Try until any a subimage candidate is found this many times. + + :return: Number of times subimg appears in the screenshot. + :rtype: int + """ + from PIL import Image + count_found = 0 + + for subimg_path in subimg_candidates: + with Image.open(subimg_path) as rgba_s: + with rgba_s.convert(mode='RGB') as subimg: + # Make sure subimage isn't too large. + assert subimg.width < 256 + assert subimg.height < 256 + + # Count. + count_found = count_subimages(screenshot, subimg) + if count_found == expected_count: + break # No need to try other candidates. + + return count_found + + +def screenshot_until_match(save_to, timeout, subimg_candidates, expected_count, gen): + """Take screenshots until one of the 'done' subimages is found. Image is saved when subimage found or at timeout. + + If you get ImportError run "pip install pillow". Only OSX and Windows is supported. + + :param str save_to: Save screenshot to this PNG file path when expected count found or timeout. + :param int timeout: Give up after these many seconds. + :param iter subimg_candidates: Subimage paths to look for. List of strings. + :param int expected_count: Keep trying until any of subimg_candidates is found this many times. + :param iter gen: Generator yielding window position and size to crop screenshot to. + """ + from PIL import ImageGrab + assert save_to.endswith('.png') + stop_after = time.time() + timeout + + # Take screenshots until subimage is found. + while True: + with ImageGrab.grab(next(gen)) as rgba: + with rgba.convert(mode='RGB') as screenshot: + count_found = try_candidates(screenshot, subimg_candidates, expected_count) + if count_found == expected_count or time.time() > stop_after: + screenshot.save(save_to) + assert count_found == expected_count + return + time.sleep(0.5) diff --git a/tests/sub_box_green_win10.bmp b/tests/sub_box_green_win10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..485788ed999e9472d7e49628670b37a919c9b85f GIT binary patch literal 5026 zcmeHIJywQ542-p0c>oXLWju_I4CG}q3mfp~S@69N$PSZak}Pol z@Oov_?-u7994|O7aa`Cn&Sp>Z{b}(Nr)RUrHcmqB%-+l*SV7v5^C|}E61t#zDWZ-; zj#i;T$U*rq_^W#j1q=yG&UD4NwkHODimj?ENXpA)irnQWs9uUxyb?#NNCYg&IcFF; zQ|W!6&!&1QQt?Whe>uZSW#@C~lRRhGzH%%5K=UfQ%zNyHdMV;$H-?;wW^(@IT?)M) z;mRL%kHyAc+IbQ5E=JMa0!c?cT{O>ZRGuMq)qa*s&GKl$`sMy2RIcyzsjj-)=GQGIm2)6yTfxn ZXV~t?N)J03iL%+ZeaPHJ!*0bcbV4=E*YY4}sSmLQ~wlNF-`u*qSc>nxd z&mZgiy1w7m_vv_E&*S+1|NQ;sYaVaMvHt3(=1g|D-o=E?%&)TbSZ@7upC)&k@J?`>`$#{p3~gn`}XXo z>M1wmspWLYbDt)eZDcwV<}BG}=~U)aJ)I}kGtX)6aKAH~d$T{a9?Pw5?$absn&}%~ z?J+-c-a^xII%M;Qd1&hyA5NXJ`I!?wTL1lL8}qAdJ(gR4^&`1?-fVtz+PucSDLk;p zei3i1PHa+hOU%ET*R9w<<|gypOtwwfdMvlj>enP@Ew^UNAJt?1wr$+Y=Q8=4+&7>0 z=WKvA@YI;IbWZaS@<}H+kM4skyl*_GR!?viCRm=r5FXN#3tO8B=G*e-5A$3j`Z;yV z=@Zs$zSbVwyf=A!-_ZBiZ0%>lpObtFy!}*&aA^t2jh{z1{qdR&`T8mF_D|)e-+F4! zWWu(U&6*!Mr)XMEhrI8zfy`UTbjWnbbjWnbbjab{qvmWgl%V=H9vAr(X^Zn zdEaLPnYWPXkm-==km-==ki)47XZP9q=Q+&@+s-y?e&n2@X*nJ8zRw0SZz0nm(;?F# z(;?F#hf@>IejVGrHD@wm+u3H#kDOC9EvG}?_t`+^Eo3@mI%GOzI%GQJaB9L?@L%r} BgChU{ literal 0 HcmV?d00001 diff --git a/tests/sub_box_sans_win10.bmp b/tests/sub_box_sans_win10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..48344b9b18b066b47a132715f3dfb9b22dc89bbf GIT binary patch literal 5026 zcmeHJL2iUF45a5Cd+8G@?Y$4^nf_!y!Uy_*O8g^F>kt#;cz_txmG%GA(G$jlk~?sk{e1FB5rn2IzVDzhHI&3?x~cd^-Z1gW>3XD;$8he1{`5>Yu0XWDO4m_tciY26ke+8Na zz$wZ4QUtk6C6B6L03k)i_JBBtnX`s@@qQ0A8QXRVVS{V-j%GPdwG|l>sohkwajx-# z$f!KE9+j%B?yJPJEe9iZb!&V=70JD9$0aN)%kO>+QzKw%34@b@q8xA8!dx*fAy`DNo zc>f3oD$a}%4t|0Y@$*nl#4~5QhFm?=H<8P8^{}ouQ literal 0 HcmV?d00001 diff --git a/tests/sub_box_sans_winxp.bmp b/tests/sub_box_sans_winxp.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8277d1e518fbc45c71caeb401e71a4a280e65a6b GIT binary patch literal 7254 zcmcJ~F^(HC5JXWq_W?F=;Ls=7132H*=XK_5nNS)Y-A z_dd=aQ z=YDFv^@ZN1Tu1KvnzC)OPKTY9)2z9DWTPq~h~`o4Vf7}1>hf1!3w?S(!5 z7c2W(Z&R)#C;x0-olYfwZo6$ZoaNM$^3=cjYf`f*Pt7TRRZr?qudThF!}N3VzWK0! z&K9HwZxcJKbC{PfPo3g<^&HH?=f>yM=qa9s6H-2fCcLDlO6Iw)o>vd+9zNH>ha~yU zytHvvty70QePPVb&$XwLbk^W{oATAHL3WF*BkRaIvW~1Hm$N3$Ugy-`&ow)o-kfHW zU%6A7Dc6y&`!>jKk#%GpSx459b>wo^#M$ed`un+Nhtr$WZ1O92N;Bm;@^#+^*)6h; ztRw5lI&QB?j$F=~I4l1J D!4IjE literal 0 HcmV?d00001 diff --git a/tests/sub_red_dark_fg_win10.bmp b/tests/sub_red_dark_fg_win10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4d66fa92a53ceb171987b1ab7f97d18e37e85678 GIT binary patch literal 446 zcmZ`!p%KF{3{+5AK~YEO1OP{RUWXE5;y9^(6rYA3`xODDhn<@e+H zo@9$V>y3F~o|uzdSw&u)f6ks8z!HI=D^Lp{nh@DTLlv2MOlBYx5zD*=oz)UbI_Sua zMixRrw1rKNj<8W#noeZpF6HWy$h8Q6%qtxbDdE3KEjOL}q+t`9%zZm|IEzS7>S{+0 fKD+KWZ2#MzX^7j}bncU`I*Za#G@qmS2yePCEGZaD literal 0 HcmV?d00001 diff --git a/tests/sub_red_dark_fg_winxp.bmp b/tests/sub_red_dark_fg_winxp.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2846c5a5aebc8c438fcaeae7055103d6840d624e GIT binary patch literal 702 zcmb_W$qj%o3=90207hT}2H?+5Jei8sz%VKuwnks_~kq8vZ*Ewr#wCTkWYg3e#+xDCfg{h*U`e3H+Drt0t{aL|6zDV?i` ba`a#Iqa3fR$S;1>p*4l iT<0XULWgtC|F_5gakCkme`d4d@{u|%J~e$?N6!x8F)rW$ literal 0 HcmV?d00001 diff --git a/tests/sub_red_light_fg_winxp.bmp b/tests/sub_red_light_fg_winxp.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e930459609be00133f2fd7a5758d14873b77c8bd GIT binary patch literal 702 zcmaKl(Gh?!2t(07C(sd`zybVsFQ;-fO^fDoQp#B_JQCcGYqVM$`ieK>O?ZPX=w|1; zuLIj{=AV7DZ9uav9Co+AaJlgRz5@)(I8^=F!QvbYA-;~br( ZPSrGI;%C-TbrvUAvuo|N^#vov_5dxGV-NrU literal 0 HcmV?d00001 diff --git a/tests/sub_red_sans_win10.bmp b/tests/sub_red_sans_win10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..738c172ce66d950fcf4abaf00b7ce467325f4b18 GIT binary patch literal 446 zcmZ{fyA1+C3`FN5aw1AV+MEK2mrh&=F2rq|TpI882LWfvmUrwK&pu!KrWOzCoxGA4 za?_0}y~n&gMyZm8OQlE|rb@4{k}W(_Vnyi{z#_v<#TwXo>{e$>Rv-t>iiOa?oV-kA zGmt)nqQL;r!qC%tWRw&UByHT3b-h MV){IrpW&1D0V6YJ&j0`b literal 0 HcmV?d00001 diff --git a/tests/sub_red_sans_winxp.bmp b/tests/sub_red_sans_winxp.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a9f0f2e46662d5f1d98b01a849b593d22fac94fa GIT binary patch literal 882 zcmbV`!3}^g38H=w`U_rsAagR{FOL4M4*&oF literal 0 HcmV?d00001 diff --git a/tests/test___main__.py b/tests/test___main__.py new file mode 100644 index 0000000..17a4b76 --- /dev/null +++ b/tests/test___main__.py @@ -0,0 +1,64 @@ +"""Test objects in module.""" + +import subprocess +import sys + +import pytest + +from colorclass.windows import IS_WINDOWS + + +def test_import_do_nothing(): + """Make sure importing __main__ doesn't print anything.""" + command = [sys.executable, '-c', "from colorclass.__main__ import TRUTHY; assert TRUTHY"] + proc = subprocess.Popen(command, stderr=subprocess.STDOUT, stdout=subprocess.PIPE) + output = proc.communicate() + assert proc.poll() == 0 + assert not output[0] + assert not output[1] + + +@pytest.mark.parametrize('colors', [True, False, None]) +@pytest.mark.parametrize('light', [True, False, None]) +def test(monkeypatch, colors, light): + """Test package as a script. + + :param monkeypatch: pytest fixture. + :param bool colors: Enable, disable, or don't touch colors using CLI args or env variables. + :param bool light: Enable light, dark, or don't touch auto colors using CLI args or env variables. + """ + command = [sys.executable, '-m', 'colorclass' if sys.version_info >= (2, 7) else 'colorclass.__main__'] + stdin = '{autored}Red{/autored} {red}Red{/red} {hired}Red{/hired}'.encode() + + # Set options. + if colors is True: + monkeypatch.setenv('COLOR_ENABLE', 'true') + elif colors is False: + monkeypatch.setenv('COLOR_DISABLE', 'true') + if light is True: + monkeypatch.setenv('COLOR_LIGHT', 'true') + elif light is False: + monkeypatch.setenv('COLOR_DARK', 'true') + + # Run. + proc = subprocess.Popen(command, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, stdin=subprocess.PIPE) + output = proc.communicate(stdin)[0].decode() + assert proc.poll() == 0 + assert 'Red' in output + + # Verify colors. Output is always stripped of all colors on Windows when piped to non-console (e.g. pytest). + if colors is False or IS_WINDOWS: + assert '\033[' not in output + assert 'Red Red Red' in output + return + assert '\033[' in output + + # Verify light bg. + count_dark_fg = output.count('\033[31mRed') + count_light_fg = output.count('\033[91mRed') + if light: + assert count_dark_fg == 2 + assert count_light_fg == 1 + else: + assert count_dark_fg == 1 + assert count_light_fg == 2 diff --git a/tests/test_codes.py b/tests/test_codes.py new file mode 100644 index 0000000..dd146c8 --- /dev/null +++ b/tests/test_codes.py @@ -0,0 +1,137 @@ +"""Test objects in module.""" + +import errno +import os +import subprocess +import sys +import time + +import pytest + +from colorclass.codes import ANSICodeMapping, BASE_CODES, list_tags +from colorclass.windows import IS_WINDOWS + + +def test_ansi_code_mapping_whitelist(): + """Test whitelist enforcement.""" + auto_codes = ANSICodeMapping('{green}{bgred}Test{/all}') + + # Test __getitem__. + with pytest.raises(KeyError): + assert not auto_codes['red'] + assert auto_codes['green'] == 32 + + # Test iter and len. + assert sorted(auto_codes) == ['/all', 'bgred', 'green'] + assert len(auto_codes) == 3 + + +@pytest.mark.parametrize('toggle', ['light', 'dark', 'none']) +def test_auto_toggles(toggle): + """Test auto colors and ANSICodeMapping class toggles. + + :param str toggle: Toggle method to call. + """ + # Toggle. + if toggle == 'light': + ANSICodeMapping.enable_all_colors() + ANSICodeMapping.set_light_background() + assert ANSICodeMapping.DISABLE_COLORS is False + assert ANSICodeMapping.LIGHT_BACKGROUND is True + elif toggle == 'dark': + ANSICodeMapping.enable_all_colors() + ANSICodeMapping.set_dark_background() + assert ANSICodeMapping.DISABLE_COLORS is False + assert ANSICodeMapping.LIGHT_BACKGROUND is False + else: + ANSICodeMapping.disable_all_colors() + assert ANSICodeMapping.DISABLE_COLORS is True + assert ANSICodeMapping.LIGHT_BACKGROUND is False + + # Test iter and len. + auto_codes = ANSICodeMapping('}{'.join([''] + list(BASE_CODES) + [''])) + count = 0 + for k, v in auto_codes.items(): + count += 1 + assert str(k) == k + assert v is None or int(v) == v + assert len(auto_codes) == count + + # Test foreground properties. + key_fg = '{autoblack}{autored}{autogreen}{autoyellow}{autoblue}{automagenta}{autocyan}{autowhite}' + actual = key_fg.format(**auto_codes) + if toggle == 'light': + assert actual == '3031323334353637' + elif toggle == 'dark': + assert actual == '9091929394959697' + else: + assert actual == 'NoneNoneNoneNoneNoneNoneNoneNone' + + # Test background properties. + key_fg = '{autobgblack}{autobgred}{autobggreen}{autobgyellow}{autobgblue}{autobgmagenta}{autobgcyan}{autobgwhite}' + actual = key_fg.format(**auto_codes) + if toggle == 'light': + assert actual == '4041424344454647' + elif toggle == 'dark': + assert actual == '100101102103104105106107' + else: + assert actual == 'NoneNoneNoneNoneNoneNoneNoneNone' + + +def test_list_tags(): + """Test list_tags().""" + actual = list_tags() + assert ('red', '/red', 31, 39) in actual + assert sorted(t for i in actual for t in i[:2] if t is not None) == sorted(BASE_CODES) + + +@pytest.mark.parametrize('tty', [False, True]) +def test_disable_colors_piped(tty): + """Verify colors enabled by default when piped to TTY and disabled when not. + + :param bool tty: Pipe to TTY/terminal? + """ + assert_statement = 'assert __import__("colorclass").codes.ANSICodeMapping.disable_if_no_tty() is {bool}' + command_colors_enabled = [sys.executable, '-c', assert_statement.format(bool='False')] + command_colors_disabled = [sys.executable, '-c', assert_statement.format(bool='True')] + + # Run piped to this pytest process. + if not tty: # Outputs piped to non-terminal/non-tty. Colors disabled by default. + proc = subprocess.Popen(command_colors_disabled, stderr=subprocess.STDOUT, stdout=subprocess.PIPE) + output = proc.communicate() + assert not output[0] + assert not output[1] + assert proc.poll() == 0 + return + + # Run through a new console window (Windows). + if IS_WINDOWS: + c_flags = subprocess.CREATE_NEW_CONSOLE + proc = subprocess.Popen(command_colors_enabled, close_fds=True, creationflags=c_flags) + proc.communicate() # Pipes directed towards new console window. Not worth doing screenshot image processing. + assert proc.poll() == 0 + return + + # Run through pseudo tty (Linux/OSX). + master, slave = __import__('pty').openpty() + proc = subprocess.Popen(command_colors_enabled, stderr=subprocess.STDOUT, stdout=slave, close_fds=True) + os.close(slave) + + # Read output. + output = '' + while True: + try: + data = os.read(master, 1024).decode() + except OSError as exc: + if exc.errno != errno.EIO: # EIO means EOF on some systems. + raise + data = None + if data: + output += data + elif proc.poll() is None: + time.sleep(0.01) + else: + break + os.close(master) + assert not output + assert proc.poll() == 0 diff --git a/tests/test_color.py b/tests/test_color.py new file mode 100644 index 0000000..d5c7170 --- /dev/null +++ b/tests/test_color.py @@ -0,0 +1,185 @@ +"""Test objects in module.""" + +import sys +from functools import partial + +import pytest + +from colorclass.color import Color +from tests.conftest import assert_both_values, get_instance + + +def test_colorize_methods(): + """Test colorize convenience methods.""" + assert Color.black('TEST').value_colors == '\033[30mTEST\033[39m' + assert Color.bgblack('TEST').value_colors == '\033[40mTEST\033[49m' + assert Color.red('TEST').value_colors == '\033[31mTEST\033[39m' + assert Color.bgred('TEST').value_colors == '\033[41mTEST\033[49m' + assert Color.green('TEST').value_colors == '\033[32mTEST\033[39m' + assert Color.bggreen('TEST').value_colors == '\033[42mTEST\033[49m' + assert Color.yellow('TEST').value_colors == '\033[33mTEST\033[39m' + assert Color.bgyellow('TEST').value_colors == '\033[43mTEST\033[49m' + assert Color.blue('TEST').value_colors == '\033[34mTEST\033[39m' + assert Color.bgblue('TEST').value_colors == '\033[44mTEST\033[49m' + assert Color.magenta('TEST').value_colors == '\033[35mTEST\033[39m' + assert Color.bgmagenta('TEST').value_colors == '\033[45mTEST\033[49m' + assert Color.cyan('TEST').value_colors == '\033[36mTEST\033[39m' + assert Color.bgcyan('TEST').value_colors == '\033[46mTEST\033[49m' + assert Color.white('TEST').value_colors == '\033[37mTEST\033[39m' + assert Color.bgwhite('TEST').value_colors == '\033[47mTEST\033[49m' + + assert Color.black('this is a test.', auto=True) == Color('{autoblack}this is a test.{/autoblack}') + assert Color.black('this is a test.') == Color('{black}this is a test.{/black}') + assert Color.bgblack('this is a test.', auto=True) == Color('{autobgblack}this is a test.{/autobgblack}') + assert Color.bgblack('this is a test.') == Color('{bgblack}this is a test.{/bgblack}') + assert Color.red('this is a test.', auto=True) == Color('{autored}this is a test.{/autored}') + assert Color.red('this is a test.') == Color('{red}this is a test.{/red}') + assert Color.bgred('this is a test.', auto=True) == Color('{autobgred}this is a test.{/autobgred}') + assert Color.bgred('this is a test.') == Color('{bgred}this is a test.{/bgred}') + assert Color.green('this is a test.', auto=True) == Color('{autogreen}this is a test.{/autogreen}') + assert Color.green('this is a test.') == Color('{green}this is a test.{/green}') + assert Color.bggreen('this is a test.', auto=True) == Color('{autobggreen}this is a test.{/autobggreen}') + assert Color.bggreen('this is a test.') == Color('{bggreen}this is a test.{/bggreen}') + assert Color.yellow('this is a test.', auto=True) == Color('{autoyellow}this is a test.{/autoyellow}') + assert Color.yellow('this is a test.') == Color('{yellow}this is a test.{/yellow}') + assert Color.bgyellow('this is a test.', auto=True) == Color('{autobgyellow}this is a test.{/autobgyellow}') + assert Color.bgyellow('this is a test.') == Color('{bgyellow}this is a test.{/bgyellow}') + assert Color.blue('this is a test.', auto=True) == Color('{autoblue}this is a test.{/autoblue}') + assert Color.blue('this is a test.') == Color('{blue}this is a test.{/blue}') + assert Color.bgblue('this is a test.', auto=True) == Color('{autobgblue}this is a test.{/autobgblue}') + assert Color.bgblue('this is a test.') == Color('{bgblue}this is a test.{/bgblue}') + assert Color.magenta('this is a test.', auto=True) == Color('{automagenta}this is a test.{/automagenta}') + assert Color.magenta('this is a test.') == Color('{magenta}this is a test.{/magenta}') + assert Color.bgmagenta('this is a test.', auto=True) == Color('{autobgmagenta}this is a test.{/autobgmagenta}') + assert Color.bgmagenta('this is a test.') == Color('{bgmagenta}this is a test.{/bgmagenta}') + assert Color.cyan('this is a test.', auto=True) == Color('{autocyan}this is a test.{/autocyan}') + assert Color.cyan('this is a test.') == Color('{cyan}this is a test.{/cyan}') + assert Color.bgcyan('this is a test.', auto=True) == Color('{autobgcyan}this is a test.{/autobgcyan}') + assert Color.bgcyan('this is a test.') == Color('{bgcyan}this is a test.{/bgcyan}') + assert Color.white('this is a test.', auto=True) == Color('{autowhite}this is a test.{/autowhite}') + assert Color.white('this is a test.') == Color('{white}this is a test.{/white}') + assert Color.bgwhite('this is a test.', auto=True) == Color('{autobgwhite}this is a test.{/autobgwhite}') + assert Color.bgwhite('this is a test.') == Color('{bgwhite}this is a test.{/bgwhite}') + + +@pytest.mark.parametrize('kind', ['str', 'Color plain', 'Color color']) +def test_chaining(kind): + """Test chaining Color instances. + + :param str kind: Type of string to test. + """ + assert_both = partial(assert_both_values, kind=kind) + + # Test string. + instance = get_instance(kind, 'TEST') + for color in ('green', 'blue', 'yellow'): + instance = get_instance(kind, instance, color) + assert_both(instance, 'TEST', '\033[31mTEST\033[39m') + + # Test empty. + instance = get_instance(kind) + for color in ('red', 'green', 'blue', 'yellow'): + instance = get_instance(kind, instance, color) + assert_both(instance, '', '\033[39m') + + # Test complicated. + instance = 'TEST' + for color in ('black', 'bgred', 'green', 'bgyellow', 'blue', 'bgmagenta', 'cyan', 'bgwhite'): + instance = get_instance(kind, instance, color=color) + assert_both(instance, 'TEST', '\033[30;41mTEST\033[39;49m') + + # Test format and length. + instance = get_instance(kind, '{0}').format(get_instance(kind, 'TEST')) + assert_both(instance, 'TEST', '\033[31mTEST\033[39m') + assert len(instance) == 4 + instance = get_instance(kind, '{0}').format(instance) + assert_both(instance, 'TEST', '\033[31mTEST\033[39m') + assert len(instance) == 4 + instance = get_instance(kind, '{0}').format(instance) + assert_both(instance, 'TEST', '\033[31mTEST\033[39m') + assert len(instance) == 4 + + +@pytest.mark.parametrize('kind', ['str', 'Color plain', 'Color color']) +def test_empty(kind): + """Test with empty string. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, u'') + assert_both = partial(assert_both_values, kind=kind) + + assert len(instance) == 0 + assert_both(instance * 2, '', '\033[39m') + assert_both(instance + instance, '', '\033[39m') + with pytest.raises(IndexError): + assert instance[0] + assert not [i for i in instance] + assert not list(instance) + + assert instance.encode('utf-8') == instance.encode('utf-8') + assert instance.encode('utf-8').decode('utf-8') == instance + assert_both(instance.encode('utf-8').decode('utf-8'), '', '\033[39m') + assert_both(instance.__class__.encode(instance, 'utf-8').decode('utf-8'), '', '\033[39m') + assert len(instance.encode('utf-8').decode('utf-8')) == 0 + assert_both(instance.format(value=''), '', '\033[39m') + + assert_both(instance.capitalize(), '', '\033[39m') + assert_both(instance.center(5), ' ', '\033[39m ') + assert instance.count('') == 1 + assert instance.count('t') == 0 + assert instance.endswith('') is True + assert instance.endswith('me') is False + assert instance.find('') == 0 + assert instance.find('t') == -1 + + assert instance.index('') == 0 + with pytest.raises(ValueError): + assert instance.index('t') + assert instance.isalnum() is False + assert instance.isalpha() is False + if sys.version_info[0] != 2: + assert instance.isdecimal() is False + assert instance.isdigit() is False + if sys.version_info[0] != 2: + assert instance.isnumeric() is False + assert instance.isspace() is False + assert instance.istitle() is False + assert instance.isupper() is False + + assert_both(instance.join(['A', 'B']), 'AB', 'A\033[39mB') + assert_both(instance.ljust(5), ' ', '\033[39m ') + assert instance.rfind('') == 0 + assert instance.rfind('t') == -1 + assert instance.rindex('') == 0 + with pytest.raises(ValueError): + assert instance.rindex('t') + assert_both(instance.rjust(5), ' ', '\033[39m ') + if kind in ('str', 'Color plain'): + assert instance.splitlines() == list() + else: + assert instance.splitlines() == ['\033[39m'] + assert instance.startswith('') is True + assert instance.startswith('T') is False + assert_both(instance.swapcase(), '', '\033[39m') + + assert_both(instance.title(), '', '\033[39m') + assert_both(instance.translate({ord('t'): u'1', ord('e'): u'2', ord('s'): u'3'}), '', '\033[39m') + assert_both(instance.upper(), '', '\033[39m') + assert_both(instance.zfill(0), '', '') + assert_both(instance.zfill(1), '0', '0') + + +def test_keep_tags(): + """Test keep_tags keyword arg.""" + assert_both = partial(assert_both_values, kind='Color color') + + instance = Color('{red}Test{/red}', keep_tags=True) + assert_both(instance, '{red}Test{/red}', '{red}Test{/red}') + assert_both(instance.upper(), '{RED}TEST{/RED}', '{RED}TEST{/RED}') + assert len(instance) == 15 + + instance = Color('{red}\033[41mTest\033[49m{/red}', keep_tags=True) + assert_both(instance, '{red}Test{/red}', '{red}\033[41mTest\033[49m{/red}') + assert_both(instance.upper(), '{RED}TEST{/RED}', '{RED}\033[41mTEST\033[49m{/RED}') + assert len(instance) == 15 diff --git a/tests/test_core.py b/tests/test_core.py new file mode 100644 index 0000000..2d398cd --- /dev/null +++ b/tests/test_core.py @@ -0,0 +1,398 @@ +"""Test objects in module.""" + +import sys +from functools import partial + +import pytest + +from colorclass.core import apply_text, ColorStr +from tests.conftest import assert_both_values, get_instance + + +def test_apply_text(): + """Test apply_text().""" + assert apply_text('', lambda _: 0 / 0) == '' + assert apply_text('TEST', lambda s: s.lower()) == 'test' + assert apply_text('!\033[31mRed\033[0m', lambda s: s.upper()) == '!\033[31mRED\033[0m' + assert apply_text('\033[1mA \033[31mB \033[32;41mC \033[0mD', lambda _: '') == '\033[1m\033[31m\033[32;41m\033[0m' + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_dunder(kind): + """Test "dunder" methods (double-underscore). + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, 'test ME ') + assert_both = partial(assert_both_values, kind=kind) + + assert len(instance) == 8 + + if kind == 'str': + assert repr(instance) == "'test ME '" + elif kind == 'ColorStr plain': + assert repr(instance) == "ColorStr('test ME ')" + else: + assert repr(instance) == "ColorStr('\\x1b[31mtest ME \\x1b[39m')" + + assert_both(instance.__class__('1%s2' % instance), '1test ME 2', '1\033[31mtest ME \033[39m2') + assert_both(get_instance(kind, '1%s2') % 'test ME ', '1test ME 2', '\033[31m1test ME 2\033[39m') + assert_both(get_instance(kind, '1%s2') % instance, '1test ME 2', '\033[31m1test ME \033[39m2') + + assert_both(instance * 2, 'test ME test ME ', '\033[31mtest ME test ME \033[39m') + assert_both(instance + instance, 'test ME test ME ', '\033[31mtest ME test ME \033[39m') + assert_both(instance + 'more', 'test ME more', '\033[31mtest ME \033[39mmore') + assert_both(instance.__class__('more' + instance), 'moretest ME ', 'more\033[31mtest ME \033[39m') + instance *= 2 + assert_both(instance, 'test ME test ME ', '\033[31mtest ME test ME \033[39m') + instance += 'more' + assert_both(instance, 'test ME test ME more', '\033[31mtest ME test ME \033[39mmore') + + assert_both(instance[0], 't', '\033[31mt\033[39m') + assert_both(instance[4], ' ', '\033[31m \033[39m') + assert_both(instance[-1], 'e', '\033[39me') + # assert_both(instance[1:-1], 'est ME test ME mor', '\033[31mest ME test ME \033[39mmor') + # assert_both(instance[1:9:2], 'etM ', '\033[31metM \033[39m') + # assert_both(instance[-1::-1], 'erom EM tset EM tset', 'erom\033[31m EM tset EM tset\033[39m') + + with pytest.raises(IndexError): + assert instance[20] + + actual = [i for i in instance] + assert len(actual) == 20 + assert actual == list(instance) + assert_both(actual[0], 't', '\033[31mt\033[39m') + assert_both(actual[1], 'e', '\033[31me\033[39m') + assert_both(actual[2], 's', '\033[31ms\033[39m') + assert_both(actual[3], 't', '\033[31mt\033[39m') + assert_both(actual[4], ' ', '\033[31m \033[39m') + assert_both(actual[5], 'M', '\033[31mM\033[39m') + assert_both(actual[6], 'E', '\033[31mE\033[39m') + assert_both(actual[7], ' ', '\033[31m \033[39m') + assert_both(actual[8], 't', '\033[31mt\033[39m') + assert_both(actual[9], 'e', '\033[31me\033[39m') + assert_both(actual[10], 's', '\033[31ms\033[39m') + assert_both(actual[11], 't', '\033[31mt\033[39m') + assert_both(actual[12], ' ', '\033[31m \033[39m') + assert_both(actual[13], 'M', '\033[31mM\033[39m') + assert_both(actual[14], 'E', '\033[31mE\033[39m') + assert_both(actual[15], ' ', '\033[31m \033[39m') + assert_both(actual[16], 'm', '\033[39mm') + assert_both(actual[17], 'o', '\033[39mo') + assert_both(actual[18], 'r', '\033[39mr') + assert_both(actual[19], 'e', '\033[39me') + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_encode_decode(kind): + """Test encode and decode methods. + + :param str kind: Type of string to test. + """ + assert_both = partial(assert_both_values, kind=kind) + instance = get_instance(kind, 'test ME') + + if sys.version_info[0] == 2: + assert instance.encode('utf-8') == instance + assert instance.decode('utf-8') == instance + assert_both(instance.decode('utf-8'), 'test ME', '\033[31mtest ME\033[39m') + assert_both(instance.__class__.decode(instance, 'utf-8'), 'test ME', '\033[31mtest ME\033[39m') + assert len(instance.decode('utf-8')) == 7 + else: + assert instance.encode('utf-8') != instance + assert instance.encode('utf-8') == instance.encode('utf-8') + assert instance.encode('utf-8').decode('utf-8') == instance + assert_both(instance.encode('utf-8').decode('utf-8'), 'test ME', '\033[31mtest ME\033[39m') + assert_both(instance.__class__.encode(instance, 'utf-8').decode('utf-8'), 'test ME', '\033[31mtest ME\033[39m') + assert len(instance.encode('utf-8').decode('utf-8')) == 7 + + +@pytest.mark.parametrize('mode', ['fg within bg', 'bg within fg']) +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_format(kind, mode): + """Test format method. + + :param str kind: Type of string to test. + :param str mode: Which combination to test. + """ + assert_both = partial(assert_both_values, kind=kind) + + # Test str.format(ColorStr()). + instance = get_instance(kind, 'test me') + assert_both(instance.__class__('1{0}2'.format(instance)), '1test me2', '1\033[31mtest me\033[39m2') + assert_both(instance.__class__(str.format('1{0}2', instance)), '1test me2', '1\033[31mtest me\033[39m2') + + # Get actual. + template_pos = get_instance(kind, 'a{0}c{0}', 'bgred' if mode == 'fg within bg' else 'red') + template_kw = get_instance(kind, 'a{value}c{value}', 'bgred' if mode == 'fg within bg' else 'red') + instance = get_instance(kind, 'B', 'green' if mode == 'fg within bg' else 'bggreen') + + # Get expected. + expected = ['aBcB', None] + if mode == 'fg within bg': + expected[1] = '\033[41ma\033[32mB\033[39mc\033[32mB\033[39;49m' + else: + expected[1] = '\033[31ma\033[42mB\033[49mc\033[42mB\033[39;49m' + + # Test. + assert_both(template_pos.format(instance), expected[0], expected[1]) + assert_both(template_kw.format(value=instance), expected[0], expected[1]) + assert_both(instance.__class__.format(template_pos, instance), expected[0], expected[1]) + assert_both(instance.__class__.format(template_kw, value=instance), expected[0], expected[1]) + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_format_mixed(kind): + """Test format method with https://github.com/Robpol86/colorclass/issues/16 in mind. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, 'XXX: ') + '{0}' + assert_both = partial(assert_both_values, kind=kind) + + assert_both(instance, 'XXX: {0}', '\033[31mXXX: \033[39m{0}') + assert_both(instance.format('{blue}Moo{/blue}'), 'XXX: {blue}Moo{/blue}', '\033[31mXXX: \033[39m{blue}Moo{/blue}') + assert_both(instance.format(get_instance(kind, 'Moo', 'blue')), 'XXX: Moo', '\033[31mXXX: \033[34mMoo\033[39m') + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_c_f(kind): + """Test C through F methods. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, 'test me') + assert_both = partial(assert_both_values, kind=kind) + + assert_both(instance.capitalize(), 'Test me', '\033[31mTest me\033[39m') + + assert_both(instance.center(11), ' test me ', ' \033[31mtest me\033[39m ') + assert_both(instance.center(11, '.'), '..test me..', '..\033[31mtest me\033[39m..') + assert_both(instance.center(12), ' test me ', ' \033[31mtest me\033[39m ') + + assert instance.count('t') == 2 + + assert instance.endswith('me') is True + assert instance.endswith('ME') is False + + assert instance.find('t') == 0 + assert instance.find('t', 0) == 0 + assert instance.find('t', 0, 1) == 0 + assert instance.find('t', 1) == 3 + assert instance.find('t', 1, 4) == 3 + assert instance.find('t', 1, 3) == -1 + assert instance.find('x') == -1 + assert instance.find('m') == 5 + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_i(kind): + """Test I methods. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, 'tantamount') + assert instance.index('t') == 0 + assert instance.index('t', 0) == 0 + assert instance.index('t', 0, 1) == 0 + assert instance.index('t', 1) == 3 + assert instance.index('t', 1, 4) == 3 + assert instance.index('m') == 5 + with pytest.raises(ValueError): + assert instance.index('t', 1, 3) + with pytest.raises(ValueError): + assert instance.index('x') + + assert instance.isalnum() is True + assert get_instance(kind, '123').isalnum() is True + assert get_instance(kind, '.').isalnum() is False + + assert instance.isalpha() is True + assert get_instance(kind, '.').isalpha() is False + + if sys.version_info[0] != 2: + assert instance.isdecimal() is False + assert get_instance(kind, '123').isdecimal() is True + assert get_instance(kind, '.').isdecimal() is False + + assert instance.isdigit() is False + assert get_instance(kind, '123').isdigit() is True + assert get_instance(kind, '.').isdigit() is False + + if sys.version_info[0] != 2: + assert instance.isnumeric() is False + assert get_instance(kind, '123').isnumeric() is True + assert get_instance(kind, '.').isnumeric() is False + + assert instance.isspace() is False + assert get_instance(kind, ' ').isspace() is True + + assert instance.istitle() is False + assert get_instance(kind, 'Test').istitle() is True + + assert instance.isupper() is False + assert get_instance(kind, 'TEST').isupper() is True + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_j_s(kind): + """Test J to S methods. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, 'test me') + assert_both = partial(assert_both_values, kind=kind) + + assert_both(instance.join(['A', 'B']), 'Atest meB', 'A\033[31mtest me\033[39mB') + iterable = [get_instance(kind, 'A', 'green'), get_instance(kind, 'B', 'green')] + assert_both(instance.join(iterable), 'Atest meB', '\033[32mA\033[31mtest me\033[32mB\033[39m') + + assert_both(instance.ljust(11), 'test me ', '\033[31mtest me\033[39m ') + assert_both(instance.ljust(11, '.'), 'test me....', '\033[31mtest me\033[39m....') + assert_both(instance.ljust(12), 'test me ', '\033[31mtest me\033[39m ') + + assert instance.rfind('t') == 3 + assert instance.rfind('t', 0) == 3 + assert instance.rfind('t', 0, 4) == 3 + assert instance.rfind('t', 0, 3) == 0 + assert instance.rfind('t', 3, 3) == -1 + assert instance.rfind('x') == -1 + assert instance.rfind('m') == 5 + + tantamount = get_instance(kind, 'tantamount') + assert tantamount.rindex('t') == 9 + assert tantamount.rindex('t', 0) == 9 + assert tantamount.rindex('t', 0, 5) == 3 + assert tantamount.rindex('m') == 5 + with pytest.raises(ValueError): + assert tantamount.rindex('t', 1, 3) + with pytest.raises(ValueError): + assert tantamount.rindex('x') + + assert_both(instance.rjust(11), ' test me', ' \033[31mtest me\033[39m') + assert_both(instance.rjust(11, '.'), '....test me', '....\033[31mtest me\033[39m') + assert_both(instance.rjust(12), ' test me', ' \033[31mtest me\033[39m') + + actual = get_instance(kind, '1\n2\n3').splitlines() + assert len(actual) == 3 + # assert_both(actual[0], '1', '\033[31m1\033[39m') + # assert_both(actual[1], '2', '\033[31m2\033[39m') + # assert_both(actual[2], '3', '\033[31m3\033[39m') + + assert instance.startswith('t') is True + assert instance.startswith('T') is False + + assert_both(get_instance(kind, 'AbC').swapcase(), 'aBc', '\033[31maBc\033[39m') + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_t_z(kind): + """Test T to Z methods. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, u'test me') + assert_both = partial(assert_both_values, kind=kind) + + assert_both(instance.title(), 'Test Me', '\033[31mTest Me\033[39m') + assert_both(get_instance(kind, 'TEST YOU').title(), 'Test You', '\033[31mTest You\033[39m') + + table = {ord('t'): u'1', ord('e'): u'2', ord('s'): u'3'} + assert_both(instance.translate(table), '1231 m2', '\033[31m1231 m2\033[39m') + + assert_both(instance.upper(), 'TEST ME', '\033[31mTEST ME\033[39m') + + number = get_instance(kind, '350') + assert_both(number.zfill(1), '350', '\033[31m350\033[39m') + assert_both(number.zfill(2), '350', '\033[31m350\033[39m') + assert_both(number.zfill(3), '350', '\033[31m350\033[39m') + assert_both(number.zfill(4), '0350', '\033[31m0350\033[39m') + assert_both(number.zfill(10), '0000000350', '\033[31m0000000350\033[39m') + assert_both(get_instance(kind, '-350').zfill(5), '-0350', '\033[31m-0350\033[39m') + assert_both(get_instance(kind, '-10.3').zfill(5), '-10.3', '\033[31m-10.3\033[39m') + assert_both(get_instance(kind, '-10.3').zfill(6), '-010.3', '\033[31m-010.3\033[39m') + + +@pytest.mark.parametrize('kind', ['str', 'ColorStr plain', 'ColorStr color']) +def test_empty(kind): + """Test with empty string. + + :param str kind: Type of string to test. + """ + instance = get_instance(kind, u'') + assert_both = partial(assert_both_values, kind=kind) + + assert len(instance) == 0 + assert_both(instance * 2, '', '\033[39m') + assert_both(instance + instance, '', '\033[39m') + with pytest.raises(IndexError): + assert instance[0] + assert not [i for i in instance] + assert not list(instance) + + assert instance.encode('utf-8') == instance.encode('utf-8') + assert instance.encode('utf-8').decode('utf-8') == instance + assert_both(instance.encode('utf-8').decode('utf-8'), '', '\033[39m') + assert_both(instance.__class__.encode(instance, 'utf-8').decode('utf-8'), '', '\033[39m') + assert len(instance.encode('utf-8').decode('utf-8')) == 0 + assert_both(instance.format(value=''), '', '\033[39m') + + assert_both(instance.capitalize(), '', '\033[39m') + assert_both(instance.center(5), ' ', '\033[39m ') + assert instance.count('') == 1 + assert instance.count('t') == 0 + assert instance.endswith('') is True + assert instance.endswith('me') is False + assert instance.find('') == 0 + assert instance.find('t') == -1 + + assert instance.index('') == 0 + with pytest.raises(ValueError): + assert instance.index('t') + assert instance.isalnum() is False + assert instance.isalpha() is False + if sys.version_info[0] != 2: + assert instance.isdecimal() is False + assert instance.isdigit() is False + if sys.version_info[0] != 2: + assert instance.isnumeric() is False + assert instance.isspace() is False + assert instance.istitle() is False + assert instance.isupper() is False + + assert_both(instance.join(['A', 'B']), 'AB', 'A\033[39mB') + assert_both(instance.ljust(5), ' ', '\033[39m ') + assert instance.rfind('') == 0 + assert instance.rfind('t') == -1 + assert instance.rindex('') == 0 + with pytest.raises(ValueError): + assert instance.rindex('t') + assert_both(instance.rjust(5), ' ', '\033[39m ') + if kind in ('str', 'ColorStr plain'): + assert instance.splitlines() == list() + else: + assert instance.splitlines() == ['\033[39m'] + assert instance.startswith('') is True + assert instance.startswith('T') is False + assert_both(instance.swapcase(), '', '\033[39m') + + assert_both(instance.title(), '', '\033[39m') + assert_both(instance.translate({ord('t'): u'1', ord('e'): u'2', ord('s'): u'3'}), '', '\033[39m') + assert_both(instance.upper(), '', '\033[39m') + assert_both(instance.zfill(0), '', '') + assert_both(instance.zfill(1), '0', '0') + + +def test_keep_tags(): + """Test keep_tags keyword arg.""" + assert_both = partial(assert_both_values, kind='ColorStr color') + + instance = ColorStr('{red}Test{/red}', keep_tags=True) + assert_both(instance, '{red}Test{/red}', '{red}Test{/red}') + assert_both(instance.upper(), '{RED}TEST{/RED}', '{RED}TEST{/RED}') + assert len(instance) == 15 + + instance = ColorStr('{red}\033[41mTest\033[49m{/red}', keep_tags=True) + assert_both(instance, '{red}Test{/red}', '{red}\033[41mTest\033[49m{/red}') + assert_both(instance.upper(), '{RED}TEST{/RED}', '{RED}\033[41mTEST\033[49m{/RED}') + assert len(instance) == 15 diff --git a/tests/test_example.py b/tests/test_example.py new file mode 100644 index 0000000..7ee8c05 --- /dev/null +++ b/tests/test_example.py @@ -0,0 +1,96 @@ +"""Test example script.""" + +import subprocess +import sys + +import pytest + +from colorclass.windows import IS_WINDOWS +from tests.conftest import PROJECT_ROOT +from tests.screenshot import RunNewConsole, screenshot_until_match + + +@pytest.mark.parametrize('colors', [True, False, None]) +@pytest.mark.parametrize('light_bg', [True, False, None]) +def test_piped(colors, light_bg): + """Test script with output piped to non-tty (this pytest process). + + :param bool colors: Enable, disable, or omit color arguments (default is no colors due to no tty). + :param bool light_bg: Enable light, dark, or omit light/dark arguments. + """ + command = [sys.executable, str(PROJECT_ROOT.join('example.py')), 'print'] + + # Set options. + if colors is True: + command.append('--colors') + elif colors is False: + command.append('--no-colors') + if light_bg is True: + command.append('--light-bg') + elif light_bg is False: + command.append('--dark-bg') + + # Run. + proc = subprocess.Popen(command, stderr=subprocess.STDOUT, stdout=subprocess.PIPE) + output = proc.communicate()[0].decode() + assert proc.poll() == 0 + assert 'Autocolors for all backgrounds' in output + assert 'Red' in output + + # Verify colors. Output is always stripped of all colors on Windows when piped to non-console (e.g. pytest). + if colors is False or IS_WINDOWS: + assert '\033[' not in output + assert 'Black Red Green Yellow Blue Magenta Cyan White' in output + return + assert '\033[' in output + + # Verify light bg. + count_dark_fg = output.count('\033[31mRed') + count_light_fg = output.count('\033[91mRed') + if light_bg: + assert count_dark_fg == 2 + assert count_light_fg == 1 + else: + assert count_dark_fg == 1 + assert count_light_fg == 2 + + +@pytest.mark.skipif(str(not IS_WINDOWS)) +@pytest.mark.parametrize('colors,light_bg', [ + (True, False), + (True, True), + (False, False), + (None, False), +]) +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) diff --git a/tests/test_parse.py b/tests/test_parse.py new file mode 100644 index 0000000..c93d77f --- /dev/null +++ b/tests/test_parse.py @@ -0,0 +1,79 @@ +"""Test objects in module.""" + +import pytest + +from colorclass.parse import parse_input, prune_overridden + + +@pytest.mark.parametrize('in_,expected', [ + ('', ''), + ('test', 'test'), + ('\033[31mTEST\033[0m', '\033[31mTEST\033[0m'), + ('\033[32;31mTEST\033[39;0m', '\033[31mTEST\033[0m'), + ('\033[1;2mTEST\033[22;22m', '\033[1;2mTEST\033[22m'), + ('\033[1;1;1;1;1;1mTEST\033[22m', '\033[1mTEST\033[22m'), + ('\033[31;32;41;42mTEST\033[39;49m', '\033[32;42mTEST\033[39;49m'), +]) +def test_prune_overridden(in_, expected): + """Test function. + + :param str in_: Input string to pass to function. + :param str expected: Expected return value. + """ + actual = prune_overridden(in_) + assert actual == expected + + +@pytest.mark.parametrize('disable', [True, False]) +@pytest.mark.parametrize('in_,expected_colors,expected_no_colors', [ + ('', '', ''), + ('test', 'test', 'test'), + ('{b}TEST{/b}', '\033[1mTEST\033[22m', 'TEST'), + ('{red}{bgred}TEST{/all}', '\033[31;41mTEST\033[0m', 'TEST'), + ('{b}A {red}B {green}{bgred}C {/all}', '\033[1mA \033[31mB \033[32;41mC \033[0m', 'A B C '), + ('C {/all}{b}{blue}{hiblue}{bgcyan}D {/all}', 'C \033[0;1;46;94mD \033[0m', 'C D '), + ('D {/all}{i}\033[31;103mE {/all}', 'D \033[0;3;31;103mE \033[0m', 'D E '), + ('{b}{red}{bgblue}{/all}{i}TEST{/all}', '\033[0;3mTEST\033[0m', 'TEST'), + ('{red}{green}{blue}{black}{yellow}TEST{/fg}{/all}', '\033[33mTEST\033[0m', 'TEST'), + ('{bgred}{bggreen}{bgblue}{bgblack}{bgyellow}TEST{/bg}{/all}', '\033[43mTEST\033[0m', 'TEST'), + ('{red}T{red}E{red}S{red}T{/all}', '\033[31mTEST\033[0m', 'TEST'), + ('{red}T{/all}E{/all}S{/all}T{/all}', '\033[31mT\033[0mEST', 'TEST'), + ('{red}{bgblue}TES{red}{bgblue}T{/all}', '\033[31;44mTEST\033[0m', 'TEST'), +]) +def test_parse_input(disable, in_, expected_colors, expected_no_colors): + """Test function. + + :param bool disable: Disable colors? + :param str in_: Input string to pass to function. + :param str expected_colors: Expected first item of return value. + :param str expected_no_colors: Expected second item of return value. + """ + actual_colors, actual_no_colors = parse_input(in_, disable, False) + if disable: + assert actual_colors == expected_no_colors + else: + assert actual_colors == expected_colors + assert actual_no_colors == expected_no_colors + + +@pytest.mark.parametrize('disable', [True, False]) +@pytest.mark.parametrize('in_,expected_colors,expected_no_colors', [ + ('', '', ''), + ('test', 'test', 'test'), + ('{b}TEST{/b}', '{b}TEST{/b}', '{b}TEST{/b}'), + ('D {/all}{i}\033[31;103mE {/all}', 'D {/all}{i}\033[31;103mE {/all}', 'D {/all}{i}E {/all}'), +]) +def test_parse_input_keep_tags(disable, in_, expected_colors, expected_no_colors): + """Test function with keep_tags=True. + + :param bool disable: Disable colors? + :param str in_: Input string to pass to function. + :param str expected_colors: Expected first item of return value. + :param str expected_no_colors: Expected second item of return value. + """ + actual_colors, actual_no_colors = parse_input(in_, disable, True) + if disable: + assert actual_colors == expected_no_colors + else: + assert actual_colors == expected_colors + assert actual_no_colors == expected_no_colors diff --git a/tests/test_search.py b/tests/test_search.py new file mode 100644 index 0000000..0d5000d --- /dev/null +++ b/tests/test_search.py @@ -0,0 +1,51 @@ +"""Test objects in module.""" + +import pytest + +from colorclass.search import build_color_index, find_char_color + + +@pytest.mark.parametrize('in_,expected', [ + ['', ()], + ['TEST', (0, 1, 2, 3)], + ['!\033[31mRed\033[0m', (0, 6, 7, 8)], + ['\033[1mA \033[31mB \033[32;41mC \033[0mD', (4, 5, 11, 12, 21, 22, 27)], +]) +def test_build_color_index(in_, expected): + """Test function. + + :param str in_: Input string to pass to function. + :param str expected: Expected return value. + """ + actual = build_color_index(in_) + assert actual == expected + + +@pytest.mark.parametrize('in_,pos,expected', [ + ('TEST', 0, 'T'), + + ('\033[31mTEST', 0, '\033[31mT'), + ('\033[31mTEST', 3, '\033[31mT'), + + ('\033[31mT\033[32mE\033[33mS\033[34mT', 0, '\033[31mT\033[32m\033[33m\033[34m'), + ('\033[31mT\033[32mE\033[33mS\033[34mT', 2, '\033[31m\033[32m\033[33mS\033[34m'), + + ('\033[31mTEST\033[0m', 1, '\033[31mE\033[0m'), + ('\033[31mTEST\033[0m', 3, '\033[31mT\033[0m'), + + ('T\033[31mES\033[0mT', 0, 'T\033[31m\033[0m'), + ('T\033[31mES\033[0mT', 1, '\033[31mE\033[0m'), + ('T\033[31mES\033[0mT', 2, '\033[31mS\033[0m'), + ('T\033[31mES\033[0mT', 3, '\033[31m\033[0mT'), +]) +def test_find_char_color(in_, pos, expected): + """Test function. + + :param str in_: Input string to pass to function. + :param int pos: Character position in non-color string to lookup. + :param str expected: Expected return value. + """ + index = build_color_index(in_) + color_pos = index[pos] + actual = find_char_color(in_, color_pos) + assert actual == expected diff --git a/tests/test_toggles.py b/tests/test_toggles.py new file mode 100644 index 0000000..a2a6cda --- /dev/null +++ b/tests/test_toggles.py @@ -0,0 +1,29 @@ +"""Test objects in module.""" + +from colorclass import toggles + + +def test_disable(): + """Test functions.""" + toggles.disable_all_colors() + assert not toggles.is_enabled() + toggles.enable_all_colors() + assert toggles.is_enabled() + toggles.disable_all_colors() + assert not toggles.is_enabled() + toggles.enable_all_colors() + assert toggles.is_enabled() + assert toggles.disable_if_no_tty() # pytest pipes stderr/stdout. + assert not toggles.is_enabled() + + +def test_light_bg(): + """Test functions.""" + toggles.set_dark_background() + assert not toggles.is_light() + toggles.set_light_background() + assert toggles.is_enabled() + toggles.set_dark_background() + assert not toggles.is_light() + toggles.set_light_background() + assert toggles.is_enabled() diff --git a/tests/test_windows.py b/tests/test_windows.py new file mode 100644 index 0000000..e96e4f9 --- /dev/null +++ b/tests/test_windows.py @@ -0,0 +1,429 @@ +"""Test Windows methods.""" + +from __future__ import print_function + +import ctypes +import sys +from textwrap import dedent + +try: + from StringIO import StringIO +except ImportError: + from io import StringIO + +import pytest + +from colorclass import windows +from colorclass.codes import ANSICodeMapping +from colorclass.color import Color +from tests.conftest import PROJECT_ROOT +from tests.screenshot import RunNewConsole, screenshot_until_match + + +class MockKernel32(object): + """Mock kernel32.""" + + def __init__(self, stderr=windows.INVALID_HANDLE_VALUE, stdout=windows.INVALID_HANDLE_VALUE, set_mode=0x0): + """Constructor.""" + self.set_mode = set_mode + self.stderr = stderr + self.stdout = stdout + self.wAttributes = 7 + + def GetConsoleMode(self, _, dword_pointer): # noqa + """Mock GetConsoleMode. + + :param _: Unused handle. + :param dword_pointer: ctypes.byref(lpdword) return value. + """ + ulong_ptr = ctypes.POINTER(ctypes.c_ulong) + dword = ctypes.cast(dword_pointer, ulong_ptr).contents # Dereference pointer. + dword.value = self.set_mode + return 1 + + def GetConsoleScreenBufferInfo(self, _, csbi_pointer): # noqa + """Mock GetConsoleScreenBufferInfo. + + :param _: Unused handle. + :param csbi_pointer: ctypes.byref(csbi) return value. + """ + struct_ptr = ctypes.POINTER(windows.ConsoleScreenBufferInfo) + csbi = ctypes.cast(csbi_pointer, struct_ptr).contents # Dereference pointer. + csbi.wAttributes = self.wAttributes + return 1 + + def GetStdHandle(self, handle): # noqa + """Mock GetStdHandle. + + :param int handle: STD_ERROR_HANDLE or STD_OUTPUT_HANDLE. + """ + return self.stderr if handle == windows.STD_ERROR_HANDLE else self.stdout + + def SetConsoleTextAttribute(self, _, color_code): # noqa + """Mock SetConsoleTextAttribute. + + :param _: Unused handle. + :param int color_code: Merged color code to set. + """ + self.wAttributes = color_code + return 1 + + +class MockSys(object): + """Mock sys standard library module.""" + + def __init__(self, stderr=None, stdout=None): + """Constructor.""" + self.stderr = stderr or type('', (), {}) + self.stdout = stdout or type('', (), {}) + + +@pytest.mark.skipif(str(not windows.IS_WINDOWS)) +def test_init_kernel32_unique(): + """Make sure function doesn't override other LibraryLoaders.""" + k32_a = ctypes.LibraryLoader(ctypes.WinDLL).kernel32 + k32_a.GetStdHandle.argtypes = [ctypes.c_void_p] + k32_a.GetStdHandle.restype = ctypes.c_ulong + + k32_b, stderr_b, stdout_b = windows.init_kernel32() + + k32_c = ctypes.LibraryLoader(ctypes.WinDLL).kernel32 + k32_c.GetStdHandle.argtypes = [ctypes.c_long] + k32_c.GetStdHandle.restype = ctypes.c_short + + k32_d, stderr_d, stdout_d = windows.init_kernel32() + + # Verify external. + assert k32_a.GetStdHandle.argtypes == [ctypes.c_void_p] + assert k32_a.GetStdHandle.restype == ctypes.c_ulong + assert k32_c.GetStdHandle.argtypes == [ctypes.c_long] + assert k32_c.GetStdHandle.restype == ctypes.c_short + + # Verify ours. + assert k32_b.GetStdHandle.argtypes == [ctypes.c_ulong] + assert k32_b.GetStdHandle.restype == ctypes.c_void_p + assert k32_d.GetStdHandle.argtypes == [ctypes.c_ulong] + assert k32_d.GetStdHandle.restype == ctypes.c_void_p + assert stderr_b == stderr_d + assert stdout_b == stdout_d + + +@pytest.mark.parametrize('stderr_invalid', [False, True]) +@pytest.mark.parametrize('stdout_invalid', [False, True]) +def test_init_kernel32_valid_handle(monkeypatch, stderr_invalid, stdout_invalid): + """Test valid/invalid handle handling. + + :param monkeypatch: pytest fixture. + :param bool stderr_invalid: Mock stderr is valid. + :param bool stdout_invalid: Mock stdout is valid. + """ + mock_sys = MockSys() + monkeypatch.setattr(windows, 'sys', mock_sys) + if stderr_invalid: + setattr(mock_sys.stderr, '_original_stream', True) + if stdout_invalid: + setattr(mock_sys.stdout, '_original_stream', True) + + stderr, stdout = windows.init_kernel32(MockKernel32(stderr=100, stdout=200))[1:] + + if stderr_invalid and stdout_invalid: + assert stderr == windows.INVALID_HANDLE_VALUE + assert stdout == windows.INVALID_HANDLE_VALUE + elif stdout_invalid: + assert stderr == 100 + assert stdout == windows.INVALID_HANDLE_VALUE + elif stderr_invalid: + assert stderr == windows.INVALID_HANDLE_VALUE + assert stdout == 200 + else: + assert stderr == 100 + assert stdout == 200 + + +def test_get_console_info(): + """Test function.""" + # Test error. + if windows.IS_WINDOWS: + with pytest.raises(OSError): + windows.get_console_info(windows.init_kernel32()[0], windows.INVALID_HANDLE_VALUE) + + # Test no error with mock methods. + kernel32 = MockKernel32() + fg_color, bg_color, native_ansi = windows.get_console_info(kernel32, windows.INVALID_HANDLE_VALUE) + assert fg_color == 7 + assert bg_color == 0 + assert native_ansi is False + + # Test different console modes. + for not_native in (0x0, 0x1, 0x2, 0x1 | 0x2): + kernel32.set_mode = not_native + assert not windows.get_console_info(kernel32, windows.INVALID_HANDLE_VALUE)[-1] + for native in (i | 0x4 for i in (0x0, 0x1, 0x2, 0x1 | 0x2)): + kernel32.set_mode = native + assert windows.get_console_info(kernel32, windows.INVALID_HANDLE_VALUE)[-1] + + +@pytest.mark.parametrize('stderr', [1, windows.INVALID_HANDLE_VALUE]) +@pytest.mark.parametrize('stdout', [2, windows.INVALID_HANDLE_VALUE]) +def test_bg_color_native_ansi(stderr, stdout): + """Test function. + + :param int stderr: Value of parameter. + :param int stdout: Value of parameter. + """ + kernel32 = MockKernel32(set_mode=0x4) + kernel32.wAttributes = 240 + actual = windows.bg_color_native_ansi(kernel32, stderr, stdout) + if stderr == windows.INVALID_HANDLE_VALUE and stdout == windows.INVALID_HANDLE_VALUE: + expected = 0, False + else: + expected = 240, True + assert actual == expected + + +def test_windows_stream(): + """Test class.""" + # Test error. + if windows.IS_WINDOWS: + stream = windows.WindowsStream(windows.init_kernel32()[0], windows.INVALID_HANDLE_VALUE, StringIO()) + assert stream.colors == (windows.WINDOWS_CODES['white'], windows.WINDOWS_CODES['black']) + stream.colors = windows.WINDOWS_CODES['red'] | windows.WINDOWS_CODES['bgblue'] # No exception, just ignore. + assert stream.colors == (windows.WINDOWS_CODES['white'], windows.WINDOWS_CODES['black']) + + # Test __getattr__() and color resetting. + original_stream = StringIO() + stream = windows.WindowsStream(MockKernel32(), windows.INVALID_HANDLE_VALUE, original_stream) + assert stream.writelines == original_stream.writelines # Test __getattr__(). + assert stream.colors == (windows.WINDOWS_CODES['white'], windows.WINDOWS_CODES['black']) + stream.colors = windows.WINDOWS_CODES['red'] | windows.WINDOWS_CODES['bgblue'] + assert stream.colors == (windows.WINDOWS_CODES['red'], windows.WINDOWS_CODES['bgblue']) + stream.colors = None # Resets colors to original. + assert stream.colors == (windows.WINDOWS_CODES['white'], windows.WINDOWS_CODES['black']) + + # Test special negative codes. + stream.colors = windows.WINDOWS_CODES['red'] | windows.WINDOWS_CODES['bgblue'] + stream.colors = windows.WINDOWS_CODES['/fg'] + assert stream.colors == (windows.WINDOWS_CODES['white'], windows.WINDOWS_CODES['bgblue']) + stream.colors = windows.WINDOWS_CODES['red'] | windows.WINDOWS_CODES['bgblue'] + stream.colors = windows.WINDOWS_CODES['/bg'] + assert stream.colors == (windows.WINDOWS_CODES['red'], windows.WINDOWS_CODES['black']) + stream.colors = windows.WINDOWS_CODES['red'] | windows.WINDOWS_CODES['bgblue'] + stream.colors = windows.WINDOWS_CODES['bgblack'] + assert stream.colors == (windows.WINDOWS_CODES['red'], windows.WINDOWS_CODES['black']) + + # Test write. + stream.write(Color('{/all}A{red}B{bgblue}C')) + original_stream.seek(0) + assert original_stream.read() == 'ABC' + assert stream.colors == (windows.WINDOWS_CODES['red'], windows.WINDOWS_CODES['bgblue']) + + # Test ignore invalid code. + original_stream.seek(0) + original_stream.truncate() + stream.write('\x1b[0mA\x1b[31mB\x1b[44;999mC') + original_stream.seek(0) + assert original_stream.read() == 'ABC' + assert stream.colors == (windows.WINDOWS_CODES['red'], windows.WINDOWS_CODES['bgblue']) + + +@pytest.mark.skipif(str(windows.IS_WINDOWS)) +def test_windows_nix(): + """Test enable/disable on non-Windows platforms.""" + with windows.Windows(): + assert not windows.Windows.is_enabled() + assert not hasattr(sys.stderr, '_original_stream') + assert not hasattr(sys.stdout, '_original_stream') + assert not windows.Windows.is_enabled() + assert not hasattr(sys.stderr, '_original_stream') + assert not hasattr(sys.stdout, '_original_stream') + + +def test_windows_auto_colors(monkeypatch): + """Test Windows class with/out valid_handle and with/out auto_colors. Don't replace streams. + + :param monkeypatch: pytest fixture. + """ + mock_sys = MockSys() + monkeypatch.setattr(windows, 'atexit', type('', (), {'register': staticmethod(lambda _: 0 / 0)})) + monkeypatch.setattr(windows, 'IS_WINDOWS', True) + monkeypatch.setattr(windows, 'sys', mock_sys) + monkeypatch.setattr(ANSICodeMapping, 'LIGHT_BACKGROUND', None) + + # Test no valid handles. + kernel32 = MockKernel32() + monkeypatch.setattr(windows, 'init_kernel32', lambda: (kernel32, -1, -1)) + assert not windows.Windows.enable() + assert not windows.Windows.is_enabled() + assert not hasattr(mock_sys.stderr, '_original_stream') + assert not hasattr(mock_sys.stdout, '_original_stream') + assert ANSICodeMapping.LIGHT_BACKGROUND is None + + # Test auto colors dark background. + kernel32.set_mode = 0x4 # Enable native ANSI to have Windows skip replacing streams. + monkeypatch.setattr(windows, 'init_kernel32', lambda: (kernel32, 1, 2)) + assert not windows.Windows.enable(auto_colors=True) + assert not windows.Windows.is_enabled() + assert not hasattr(mock_sys.stderr, '_original_stream') + assert not hasattr(mock_sys.stdout, '_original_stream') + assert ANSICodeMapping.LIGHT_BACKGROUND is False + + # Test auto colors light background. + kernel32.wAttributes = 240 + assert not windows.Windows.enable(auto_colors=True) + assert not windows.Windows.is_enabled() + assert not hasattr(mock_sys.stderr, '_original_stream') + assert not hasattr(mock_sys.stdout, '_original_stream') + assert ANSICodeMapping.LIGHT_BACKGROUND is True + + +@pytest.mark.parametrize('valid', ['stderr', 'stdout', 'both']) +def test_windows_replace_streams(monkeypatch, tmpdir, valid): + """Test Windows class stdout and stderr replacement. + + :param monkeypatch: pytest fixture. + :param tmpdir: pytest fixture. + :param str valid: Which mock stream(s) should be valid. + """ + ac = list() # atexit called. + mock_sys = MockSys(stderr=tmpdir.join('stderr').open(mode='wb'), stdout=tmpdir.join('stdout').open(mode='wb')) + monkeypatch.setattr(windows, 'atexit', type('', (), {'register': staticmethod(lambda _: ac.append(1))})) + monkeypatch.setattr(windows, 'IS_WINDOWS', True) + monkeypatch.setattr(windows, 'sys', mock_sys) + + # Mock init_kernel32. + stderr = 1 if valid in ('stderr', 'both') else windows.INVALID_HANDLE_VALUE + stdout = 2 if valid in ('stdout', 'both') else windows.INVALID_HANDLE_VALUE + monkeypatch.setattr(windows, 'init_kernel32', lambda: (MockKernel32(), stderr, stdout)) + + # Test. + assert windows.Windows.enable(reset_atexit=True) + assert windows.Windows.is_enabled() + assert len(ac) == 1 + if stderr != windows.INVALID_HANDLE_VALUE: + assert hasattr(mock_sys.stderr, '_original_stream') + else: + assert not hasattr(mock_sys.stderr, '_original_stream') + if stdout != windows.INVALID_HANDLE_VALUE: + assert hasattr(mock_sys.stdout, '_original_stream') + else: + assert not hasattr(mock_sys.stdout, '_original_stream') + + # Test multiple disable. + assert windows.Windows.disable() + assert not windows.Windows.is_enabled() + assert not windows.Windows.disable() + assert not windows.Windows.is_enabled() + + # Test context manager. + with windows.Windows(): + assert windows.Windows.is_enabled() + assert not windows.Windows.is_enabled() + + +@pytest.mark.skipif(str(not windows.IS_WINDOWS)) +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) + + +@pytest.mark.skipif(str(not windows.IS_WINDOWS)) +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) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c214557 --- /dev/null +++ b/tox.ini @@ -0,0 +1,78 @@ +[general] +author = @Robpol86 +license = MIT +name = colorclass +version = 2.2.0 + +[tox] +envlist = lint,py{34,27,26} + +[testenv] +commands = + python -c "import os, sys; sys.platform == 'win32' and os.system('easy_install pillow')" + py.test --cov-append --cov-report term-missing --cov-report xml --cov {[general]name} --cov-config tox.ini \ + {posargs:tests} +deps = + docopt + pytest-cov +passenv = + WINDIR +setenv = + PYTHON_EGG_CACHE = {envtmpdir} +usedevelop = True + +[testenv:py35x64] +basepython = C:\Python35-x64\python.exe + +[testenv:py34x64] +basepython = C:\Python34-x64\python.exe + +[testenv:py33x64] +basepython = C:\Python33-x64\python.exe + +[testenv:py27x64] +basepython = C:\Python27-x64\python.exe + +[testenv:py26x64] +basepython = C:\Python26-x64\python.exe + +[testenv:lint] +commands = + coverage erase + python setup.py check --strict + python setup.py check --strict -m + python setup.py check --strict -s + flake8 --application-import-names={[general]name},tests + pylint --rcfile=tox.ini setup.py {[general]name} + python -c "assert '{[general]author}' == __import__('{[general]name}').__author__" + python -c "assert '{[general]license}' == __import__('{[general]name}').__license__" + python -c "assert '{[general]version}' == __import__('{[general]name}').__version__" + python -c "assert 'author=\'{[general]author}\'' in open('setup.py').read(102400)" + python -c "assert 'license=\'{[general]license}\'' in open('setup.py').read(102400)" + python -c "assert 'version=\'{[general]version}\'' in open('setup.py').read(102400)" + python -c "assert '\n{[general]version} - ' in open('README.rst').read(102400)" +deps = + coverage==4.0.3 + flake8==2.5.4 + flake8-import-order==0.5 + flake8-pep257==1.0.5 + pep8-naming==0.3.3 + pylint==1.5.4 + +[flake8] +exclude = .tox/*,build/*,docs/*,env/*,get-pip.py +ignore = D203 +import-order-style = google +max-line-length = 120 +statistics = True + +[pylint] +ignore = .tox/*,build/*,docs/*,env/*,get-pip.py +max-line-length = 120 +reports = no +disable = + too-few-public-methods, + too-many-public-methods, + +[run] +branch = True