mirror of
https://github.com/not-kennethreitz/blindspin.git
synced 2026-06-05 23:10:18 +00:00
85fc14176e
Signed-off-by: Andreas Maier <andras.r.maier@gmx.de>
108 lines
2.5 KiB
Python
108 lines
2.5 KiB
Python
import sys
|
|
import os
|
|
import time
|
|
import tempfile
|
|
from six import StringIO
|
|
import click
|
|
from click.testing import CliRunner
|
|
|
|
import click_spinner
|
|
|
|
|
|
def test_spinner():
|
|
@click.command()
|
|
def cli():
|
|
with click_spinner.spinner():
|
|
for thing in range(10):
|
|
pass
|
|
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, [])
|
|
assert result.exception is None
|
|
|
|
|
|
def test_spinner_resume():
|
|
@click.command()
|
|
def cli():
|
|
spinner = click_spinner.Spinner()
|
|
spinner.start()
|
|
for thing in range(10):
|
|
pass
|
|
spinner.stop()
|
|
spinner.start()
|
|
for thing in range(10):
|
|
pass
|
|
spinner.stop()
|
|
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, [])
|
|
assert result.exception is None
|
|
|
|
|
|
def test_spinner_redirect():
|
|
@click.command()
|
|
def cli():
|
|
stdout_io = StringIO()
|
|
saved_stdout = sys.stdout
|
|
sys.stdout = stdout_io # redirect stdout to a string buffer
|
|
spinner = click_spinner.Spinner()
|
|
spinner.start()
|
|
time.sleep(1) # allow time for a few spins
|
|
spinner.stop()
|
|
sys.stdout = saved_stdout
|
|
stdout_io.flush()
|
|
stdout_str = stdout_io.getvalue()
|
|
assert len(stdout_str) == 0
|
|
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, [])
|
|
assert result.exception is None
|
|
|
|
|
|
def test_spinner_redirect_force():
|
|
@click.command()
|
|
def cli():
|
|
stdout_io = StringIO()
|
|
saved_stdout = sys.stdout
|
|
sys.stdout = stdout_io # redirect stdout to a string buffer
|
|
spinner = click_spinner.Spinner(force=True)
|
|
spinner.start()
|
|
time.sleep(1) # allow time for a few spins
|
|
spinner.stop()
|
|
sys.stdout = saved_stdout
|
|
stdout_io.flush()
|
|
stdout_str = stdout_io.getvalue()
|
|
assert len(stdout_str) > 0
|
|
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, [])
|
|
assert result.exception is None
|
|
|
|
|
|
def test_spinner_as():
|
|
@click.command()
|
|
def cli():
|
|
spinner = click_spinner.spinner()
|
|
with spinner as sp:
|
|
assert sp == spinner
|
|
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, [])
|
|
assert result.exception is None
|
|
|
|
class CMException(Exception):
|
|
pass
|
|
|
|
|
|
def test_spinner_exc():
|
|
@click.command()
|
|
def cli():
|
|
with click_spinner.spinner():
|
|
for thing in range(10):
|
|
if thing == 5:
|
|
raise CMException("foo")
|
|
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, [])
|
|
assert isinstance(result.exception, CMException)
|