Selaa lähdekoodia

better infrastructure for testing

simulation of input
oz123 11 vuotta sitten
vanhempi
commit
30692e445f
1 muutettua tiedostoa jossa 22 lisäystä ja 15 poistoa
  1. 22 15
      pwman/ui/tools.py

+ 22 - 15
pwman/ui/tools.py

@@ -162,22 +162,29 @@ def gettermsize():
     return rows, cols
 
 
-def getinput(question, default="", completer=None, width=_defaultwidth):
-    if not _readline_available:
-        return raw_input(question.ljust(width))
-    else:
-        def defaulter():
-            """define default behavior startup"""
-            if _readline_available:
-                readline.insert_text(default)
-            readline.set_startup_hook(defaulter)
-            oldcompleter = readline.get_completer()
+def getinput(question, default="", reader=raw_input,
+             completer=None, width=_defaultwidth):
+    """
+    http://stackoverflow.com/questions/2617057/supply-inputs-to-python-unittests
+    """
+    if reader == raw_input:
+        if not _readline_available:
+            return raw_input(question.ljust(width))
+        else:
+            def defaulter():
+                """define default behavior startup"""
+                if _readline_available:
+                    readline.insert_text(default)
+                readline.set_startup_hook(defaulter)
+                oldcompleter = readline.get_completer()
+                readline.set_completer(completer)
+
+            x = raw_input(question.ljust(width))
             readline.set_completer(completer)
-
-        x = raw_input(question.ljust(width))
-        readline.set_completer(completer)
-        readline.set_startup_hook()
-        return x
+            readline.set_startup_hook()
+            return x
+    else:
+        return reader
 
 
 def getyesno(question, defaultyes=False, width=_defaultwidth):