Moving the "dependency injection printer tools" over to tools/common.py
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sat, 14 Jul 2012 17:36:40 +0000 (12:36 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sat, 14 Jul 2012 17:55:14 +0000 (12:55 -0500)
mediagoblin/db/sql/util.py
mediagoblin/tests/test_sql_migrations.py
mediagoblin/tools/common.py

index 60024b2884d6cd94f8cb0e552318ee564faa2f21..53260db2d24dea6654be327640b5c004a04c08b3 100644 (file)
@@ -19,13 +19,7 @@ import sys
 from mediagoblin.db.sql.base import Session
 from mediagoblin.db.sql.models import MediaEntry, Tag, MediaTag
 
-
-def _simple_printer(string):
-    """
-    Prints a string, but without an auto \n at the end.
-    """
-    sys.stdout.write(string)
-    sys.stdout.flush()
+from mediagoblin.tools.common import simple_printer
 
 
 class MigrationManager(object):
@@ -37,7 +31,7 @@ class MigrationManager(object):
     """
 
     def __init__(self, name, models, migration_registry, session,
-                 printer=_simple_printer):
+                 printer=simple_printer):
         """
         Args:
          - name: identifier of this section of the database
index 8ef46fdc860cd231380bc81afb2636c3f6fdab67..e3b55634bf11a8915274e4be65510704227cd05e 100644 (file)
@@ -27,6 +27,7 @@ from migrate import changeset
 
 from mediagoblin.db.sql.base import GMGTableBase
 from mediagoblin.db.sql.util import MigrationManager, RegisterMigration
+from mediagoblin.tools.common import CollectingPrinter
 
 
 # This one will get filled with local migrations
@@ -520,18 +521,6 @@ def _insert_migration3_objects(session):
     session.commit()
 
 
-class CollectingPrinter(object):
-    def __init__(self):
-        self.collection = []
-    
-    def __call__(self, string):
-        self.collection.append(string)
-
-    @property
-    def combined_string(self):
-        return u''.join(self.collection)
-
-
 def create_test_engine():
     from sqlalchemy import create_engine
     engine = create_engine('sqlite:///:memory:', echo=False)
index 0b29087c6b59659b8f79a2675314ea5c185e92ee..c9f9d0324808a79c5fdb12a6e8d9b3e59b31a177 100644 (file)
@@ -36,3 +36,39 @@ def import_component(import_string):
     module = sys.modules[module_name]
     func = getattr(module, func_name)
     return func
+
+
+def simple_printer(string):
+    """
+    Prints a string, but without an auto \n at the end.
+
+    Useful for places where we want to dependency inject for printing.
+    """
+    sys.stdout.write(string)
+    sys.stdout.flush()
+
+
+class CollectingPrinter(object):
+    """
+    Another printer object, this one useful for capturing output for
+    examination during testing or otherwise.
+
+    Use this like:
+
+      >>> printer = CollectingPrinter()
+      >>> printer("herp derp\n")
+      >>> printer("lollerskates\n")
+      >>> printer.combined_string
+      "herp derp\nlollerskates\n"
+    """
+    def __init__(self):
+        self.collection = []
+    
+    def __call__(self, string):
+        self.collection.append(string)
+
+    @property
+    def combined_string(self):
+        return u''.join(self.collection)
+
+