From: Christopher Allan Webber Date: Sat, 14 Jul 2012 17:36:40 +0000 (-0500) Subject: Moving the "dependency injection printer tools" over to tools/common.py X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=35a24fc26393b4aec1809885884112e35db7afe0;p=mediagoblin.git Moving the "dependency injection printer tools" over to tools/common.py --- diff --git a/mediagoblin/db/sql/util.py b/mediagoblin/db/sql/util.py index 60024b28..53260db2 100644 --- a/mediagoblin/db/sql/util.py +++ b/mediagoblin/db/sql/util.py @@ -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 diff --git a/mediagoblin/tests/test_sql_migrations.py b/mediagoblin/tests/test_sql_migrations.py index 8ef46fdc..e3b55634 100644 --- a/mediagoblin/tests/test_sql_migrations.py +++ b/mediagoblin/tests/test_sql_migrations.py @@ -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) diff --git a/mediagoblin/tools/common.py b/mediagoblin/tools/common.py index 0b29087c..c9f9d032 100644 --- a/mediagoblin/tools/common.py +++ b/mediagoblin/tools/common.py @@ -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) + +