You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-python/curtsies/files/curtsies-0.2.4-test-backpor...

133 lines
3.5 KiB

From 5384f455631a973661af84bbe823b9d59af4d5b1 Mon Sep 17 00:00:00 2001
From: Thomas Ballinger <thomasballinger@gmail.com>
Date: Sun, 6 Dec 2015 14:09:37 -0500
Subject: [PATCH] skip tests when blessings Terminal can't be made
---
tests/test_input.py | 13 ++++++++++++-
tests/test_terminal.py | 16 ++++++++++++++++
tests/test_window.py | 14 ++++++++++++++
3 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/tests/test_input.py b/tests/test_input.py
index 13cb25a..31a7d23 100644
--- a/tests/test_input.py
+++ b/tests/test_input.py
@@ -1,20 +1,30 @@
import os
import signal
+import sys
import threading
import time
import unittest
from mock import Mock
try:
- from unittest import skip
+ from unittest import skip, skipIf
except ImportError:
+
def skip(f):
return lambda self: None
+ def skipIf(condition, reason):
+ if condition:
+ return lambda x: x
+ else:
+ return lambda x: None
+
from curtsies import events
from curtsies.input import Input
+fds_closed = sys.stdin.closed or sys.stdout.closed
+
class CustomEvent(events.Event):
pass
@@ -24,6 +34,7 @@ class CustomScheduledEvent(events.ScheduledEvent):
pass
+@skipIf(fds_closed, "need open file descriptors to test")
class TestInput(unittest.TestCase):
def test_create(self):
Input()
diff --git a/tests/test_terminal.py b/tests/test_terminal.py
index 0df11b0..58f40e3 100644
--- a/tests/test_terminal.py
+++ b/tests/test_terminal.py
@@ -17,6 +17,19 @@
from curtsies.window import BaseWindow, FullscreenWindow, CursorAwareWindow
+try:
+ from unittest import skipIf
+except ImportError:
+ def skipIf(condition, reason):
+ if condition:
+ return lambda x: x
+ else:
+ return lambda x: None
+
+
+fds_closed = sys.stdin.closed or sys.stdout.closed
+
+
class FakeStdin(StringIO):
encoding = 'ascii'
@@ -85,6 +98,7 @@ def write(self, s):
def flush(self): pass
+@skipIf(fds_closed, 'blessings Terminal needs streams open')
class TestFullscreenWindow(unittest.TestCase):
def setUp(self):
self.screen = pyte.Screen(10, 3)
@@ -110,6 +124,7 @@ def __enter__(*args): pass
def __exit__(*args): pass
+@skipIf(fds_closed, 'blessings Terminal needs streams open')
class TestCursorAwareWindow(unittest.TestCase):
def setUp(self):
self.screen = ReportingScreen(6, 3)
@@ -142,6 +157,7 @@ def test_inital_cursor_position(self):
self.assertEqual(self.screen.display, [u' ', u'hi ', u'there '])
+@skipIf(fds_closed, 'blessings Terminal needs streams open')
class TestCursorAwareWindowWithExtraInput(unittest.TestCase):
def setUp(self):
self.screen = ReportingScreenWithExtra(6, 3)
diff --git a/tests/test_window.py b/tests/test_window.py
index 1f4485c..89a3480 100644
--- a/tests/test_window.py
+++ b/tests/test_window.py
@@ -9,10 +9,24 @@
else:
from cStringIO import StringIO
+try:
+ from unittest import skipIf
+except ImportError:
+ def skipIf(condition, reason):
+ if condition:
+ return lambda x: x
+ else:
+ return lambda x: None
+
+
+fds_closed = sys.stdin.closed or sys.stdout.closed
+
+
class FakeFullscreenWindow(FullscreenWindow):
width = property(lambda self: 10)
height = property(lambda self: 4)
+@skipIf(fds_closed, "blessings Terminal needs streams open")
class TestBaseWindow(unittest.TestCase):
"""Pretty pathetic tests for window"""
def test_window(self):