def test_spinner_getters_setters(self): """Test spinner getters and setters. """ spinner = HaloNotebook() self.assertEqual(spinner.text, '') self.assertEqual(spinner.color, 'cyan') self.assertIsNone(spinner.spinner_id) spinner.spinner = 'dots12' spinner.text = 'bar' spinner.color = 'red' self.assertEqual(spinner.text, 'bar') self.assertEqual(spinner.color, 'red') if is_supported(): self.assertEqual(spinner.spinner, Spinners['dots12'].value) else: self.assertEqual(spinner.spinner, default_spinner) spinner.spinner = 'dots11' if is_supported(): self.assertEqual(spinner.spinner, Spinners['dots11'].value) else: self.assertEqual(spinner.spinner, default_spinner) spinner.spinner = 'foo_bar' self.assertEqual(spinner.spinner, default_spinner) # Color is None spinner.color = None spinner.start() spinner.stop() self.assertIsNone(spinner.color)
def test_chaining_start(self): """Test chaining start with constructor """ spinner = HaloNotebook().start() spinner_id = spinner.spinner_id self.assertIsNotNone(spinner_id) spinner.stop()
def test_ignore_multiple_start_calls(self): """Test ignoring of multiple start calls. """ spinner = HaloNotebook() spinner.start() spinner_id = spinner.spinner_id spinner.start() self.assertEqual(spinner.spinner_id, spinner_id) spinner.stop()
def test_if_enabled(self): """Test if spinner is enabled """ spinner = HaloNotebook(text="foo", enabled=False) spinner.start() time.sleep(1) output = self._get_test_output(spinner)['text'] spinner.clear() spinner.stop() self.assertEqual(len(output), 0) self.assertEqual(output, [])
def test_warning(self): """Test warn method """ spinner = HaloNotebook() spinner.start('foo') spinner.warn('Warning!') output = self._get_test_output(spinner)['text'] pattern = re.compile(r'(⚠|!!) Warning!', re.UNICODE) self.assertRegexpMatches(output[-1], pattern) spinner.stop()
def test_fail(self): """Test fail method """ spinner = HaloNotebook() spinner.start('foo') spinner.fail() output = self._get_test_output(spinner)['text'] pattern = re.compile(r'(✖|×) foo', re.UNICODE) self.assertRegexpMatches(output[-1], pattern) spinner.stop()
def test_succeed_with_new_text(self): """Test succeed method with new text """ spinner = HaloNotebook() spinner.start('foo') spinner.succeed('bar') output = self._get_test_output(spinner)['text'] pattern = re.compile(r'(✔|v) bar', re.UNICODE) self.assertRegexpMatches(output[-1], pattern) spinner.stop()
def test_info(self): """Test info method """ spinner = HaloNotebook() spinner.start('foo') spinner.info() output = self._get_test_output(spinner) pattern = re.compile(r'(ℹ|¡) foo', re.UNICODE) self.assertRegexpMatches(output[-1], pattern) spinner.stop()
def test_succeed(self): """Test succeed method """ spinner = HaloNotebook() spinner.start('foo') spinner.succeed('foo') output = self._get_test_output(spinner) pattern = re.compile(r'(✔|v) foo', re.UNICODE) self.assertRegexpMatches(output[-1], pattern) spinner.stop()
def test_spinner_color(self): """Test ANSI escape characters are present """ for color, color_int in COLORS.items(): spinner = HaloNotebook(color=color) spinner.start() output = self._get_test_output(spinner, no_ansi=False) spinner.stop() output_merged = [arr for c in output['colors'] for arr in c] self.assertEquals(str(color_int) in output_merged, True)
def test_basic_spinner(self): """Test the basic of basic spinners. """ spinner = HaloNotebook(text='foo', spinner='dots') spinner.start() time.sleep(1) output = self._get_test_output(spinner)['text'] spinner.stop() self.assertEqual(output[0], '{} foo'.format(frames[0])) self.assertEqual(output[1], '{} foo'.format(frames[1])) self.assertEqual(output[2], '{} foo'.format(frames[2])) self.assertEqual(spinner.output.outputs, spinner._output(''))
def test_initial_title_spinner(self): """Test Halo with initial title. """ spinner = HaloNotebook('bar') spinner.start() time.sleep(1) output = self._get_test_output(spinner)['text'] spinner.stop() self.assertEqual(output[0], '{} bar'.format(frames[0])) self.assertEqual(output[1], '{} bar'.format(frames[1])) self.assertEqual(output[2], '{} bar'.format(frames[2])) self.assertEqual(spinner.output.outputs, spinner._output(''))
def test_right_placement(self): """Test right placement of spinner. """ spinner = HaloNotebook(text="foo", placement="right") spinner.start() time.sleep(1) output = self._get_test_output(spinner)['text'] (text, _) = output[-1].split(" ") self.assertEqual(text, "foo") spinner.succeed() output = self._get_test_output(spinner)['text'] (text, symbol) = output[-1].split(" ") pattern = re.compile(r"(✔|v)", re.UNICODE) self.assertEqual(text, "foo") self.assertRegexpMatches(symbol, pattern) spinner.stop()
def test_text_spinner_color(self): """Test basic spinner with available colors color (both spinner and text) """ for color, color_int in COLORS.items(): spinner = HaloNotebook(text='foo', text_color=color, color=color, spinner='dots') spinner.start() time.sleep(1) output = self._get_test_output(spinner)['colors'] spinner.stop() # check if spinner colors match self.assertEqual(color_int, int(output[0][0])) self.assertEqual(color_int, int(output[1][0])) self.assertEqual(color_int, int(output[2][0])) # check if text colors match self.assertEqual(color_int, int(output[0][1])) self.assertEqual(color_int, int(output[1][1])) self.assertEqual(color_int, int(output[2][1]))
class Spinner: """ Halo 라이브러리를 이용한 Spinner """ def __init__(self, text): """ 초기화 Parameters ---------- text: str spinner 사용시 표시할 text """ self.spinner = Halo(text=text, spinner='dots') def start(self): """ Spinner Start""" self.spinner.start() def stop(self): """ Spinner Stop """ self.spinner.stop()