def test_sigmap_signals_get_registered(sigmap_test_cases): sigmap = sigmap_test_cases if not sigmap: pytest.skip("{0!r} - unsupported case".format(sigmap)) sp = yaspin(sigmap=sigmap) # If test fails, the spinner may infinitely stuck ignoring # signals, except of SIGKILL; try-finally block ensures # that spinner get stopped. try: sp.start() for sig, sig_handler in iteritems(sigmap): handler = signal.getsignal(sig) is_partial = isinstance(handler, functools.partial) if callable(sig_handler) and is_partial: # Handler function is wrapped into ``partial`` and # is accesible via ``func`` attribute. assert sig_handler == handler.func else: # SIG_DFL and SIG_IGN cases assert sig_handler == handler finally: sp.stop()
examples.demo ~~~~~~~~~~~~~ Yaspin features demonstration. """ import random import time from yaspin import yaspin from yaspin.compat import iteritems from yaspin.constants import COLOR_MAP from yaspin.spinners import Spinners COLORS = (k for k, v in iteritems(COLOR_MAP) if v == "color") HIGHLIGHTS = (k for k, v in iteritems(COLOR_MAP) if v == "on_color") def any_spinner_you_like(): params = [ ("line", 0.8), ("dots10", 0.8), ("dots11", 0.8), ("simpleDots", 1), ("star", 0.5), ("balloon", 0.7), ("noise", 0.5), ("arc", 0.5), ("arrow2", 0.5), ("bouncingBar", 1),
Tests for spinners collection. """ from __future__ import absolute_import import codecs import json import pytest from yaspin.compat import iteritems from yaspin.spinners import SPINNERS_PATH, Spinners with codecs.open(SPINNERS_PATH, encoding='utf-8') as f: spinners_dict = json.load(f) test_cases = [(name, v["frames"], v["interval"]) for name, v in iteritems(spinners_dict)] def test_len(): assert len(Spinners) == len(spinners_dict) # Entry example: # ('balloon', [' ', '.', 'o', 'O', '@', '*', ' '], 140) @pytest.mark.parametrize("name, frames, interval", test_cases) def test_spinners(name, frames, interval): assert getattr(Spinners, name).frames == frames assert getattr(Spinners, name).interval == interval
# Multiple attrs (["bold", "dark"], ["bold", "dark"]), (["bold", "dark", "reverse"], ["bold", "dark", "reverse"]), # Unsupported attrs (["Dark"], ValueError()), (["bold", "bar"], ValueError()), ], ) def attrs_test_cases(request): return request.param @pytest.fixture( scope="session", ids=color_id_func, params=sorted([k for k, v in iteritems(COLOR_MAP) if v == "color"]), ) def supported_colors(request): return request.param @pytest.fixture( scope="session", ids=color_id_func, params=sorted([k for k, v in iteritems(COLOR_MAP) if v == "on_color"]), ) def supported_highlights(request): return request.param @pytest.fixture(
pytest.skip("{0} - unsupported case".format(repr(on_color))) sp = yaspin() if isinstance(expected, Exception): with pytest.raises(AttributeError): getattr(sp, on_color) else: getattr(sp, on_color) assert sp.on_color == expected assert sp._color_func.keywords["on_color"] == expected # Values for ``attrs`` argument @pytest.mark.parametrize( "attr", sorted([k for k, v in iteritems(COLOR_MAP) if v == "attrs"])) def test_attrs(attr): sp = yaspin() getattr(sp, attr) assert sp.attrs == [attr] assert sp._color_func.keywords["attrs"] == [attr] def id_func(case): return ", ".join(case) @pytest.mark.parametrize( "attrs", [ ["bold", "bold"],