Permalink
Browse files

Used CommandError in createcachetable command.

Raising CommandError whenever a management command meets an error
condition is the standard way to handle errors in commands.
  • Loading branch information...
claudep committed May 27, 2012
1 parent f2b6763 commit cc4b4d9fd34d9b601de0bafaa3c1f249729fa49a
Showing with 14 additions and 11 deletions.
  1. +6 −7 django/core/management/commands/createcachetable.py
  2. +8 −4 tests/regressiontests/cache/tests.py
@@ -1,7 +1,7 @@
from optparse import make_option
from django.core.cache.backends.db import BaseDatabaseCache
-from django.core.management.base import LabelCommand
+from django.core.management.base import LabelCommand, CommandError
from django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS
from django.db.utils import DatabaseError
@@ -55,11 +55,10 @@ def handle_label(self, tablename, **options):
try:
curs.execute("\n".join(full_statement))
except DatabaseError as e:
- self.stderr.write(
+ transaction.rollback_unless_managed(using=db)
+ raise CommandError(
"Cache table '%s' could not be created.\nThe error was: %s." %
(tablename, e))
- transaction.rollback_unless_managed(using=db)
- else:
- for statement in index_output:
- curs.execute(statement)
- transaction.commit_unless_managed(using=db)
+ for statement in index_output:
+ curs.execute(statement)
+ transaction.commit_unless_managed(using=db)
@@ -7,7 +7,6 @@
import hashlib
import os
import re
-import StringIO
import tempfile
import time
import warnings
@@ -820,9 +819,14 @@ def test_old_initialization(self):
self.perform_cull_test(50, 18)
def test_second_call_doesnt_crash(self):
- err = StringIO.StringIO()
- management.call_command('createcachetable', self._table_name, verbosity=0, interactive=False, stderr=err)
- self.assertTrue(b"Cache table 'test cache table' could not be created" in err.getvalue())
+ with self.assertRaisesRegexp(management.CommandError,
+ "Cache table 'test cache table' could not be created"):
+ management.call_command(
+ 'createcachetable',
+ self._table_name,
+ verbosity=0,
+ interactive=False
+ )
@override_settings(USE_TZ=True)

0 comments on commit cc4b4d9

Please sign in to comment.