2011-02-13 03:12:36 +08:00
from os . path import join , normpath , abspath , dirname
import warnings
import django
from django . conf import settings
from django . test . utils import get_warnings_state , restore_warnings_state
from django . utils . unittest import TestCase
class DeprecationWarningTests ( TestCase ) :
def setUp ( self ) :
self . warning_state = get_warnings_state ( )
self . old_settings_module = settings . SETTINGS_MODULE
settings . SETTINGS_MODULE = ' regressiontests '
self . old_locale_paths = settings . LOCALE_PATHS
def tearDown ( self ) :
restore_warnings_state ( self . warning_state )
settings . SETTINGS_MODULE = self . old_settings_module
settings . LOCALE_PATHS = self . old_locale_paths
2011-02-13 04:42:39 +08:00
def test_warn_if_project_has_locale_subdir ( self ) :
""" Test that PendingDeprecationWarning is generated when a deprecated project level locale/ subdir is present. """
project_path = join ( dirname ( abspath ( __file__ ) ) , ' .. ' )
warnings . filterwarnings ( ' error ' ,
" Translations in the project directory aren ' t supported anymore \ . Use the LOCALE_PATHS setting instead \ . " ,
PendingDeprecationWarning )
reload ( django . utils . translation )
self . assertRaises ( PendingDeprecationWarning , django . utils . translation . ugettext , ' Time ' )
2011-02-13 03:12:36 +08:00
def test_no_warn_if_project_and_locale_paths_overlap ( self ) :
""" Test that PendingDeprecationWarning isn ' t generated when a deprecated project level locale/ subdir is also included in LOCALE_PATHS. """
project_path = join ( dirname ( abspath ( __file__ ) ) , ' .. ' )
settings . LOCALE_PATHS + = ( normpath ( join ( project_path , ' locale ' ) ) , )
2011-02-13 04:42:39 +08:00
warnings . filterwarnings ( ' error ' ,
" Translations in the project directory aren ' t supported anymore \ . Use the LOCALE_PATHS setting instead \ . " ,
PendingDeprecationWarning )
2011-02-13 03:12:36 +08:00
reload ( django . utils . translation )
try :
django . utils . translation . ugettext ( ' Time ' )
except PendingDeprecationWarning :
self . fail ( " PendingDeprecationWarning shouldn ' t be raised when settings/project locale and a LOCALE_PATHS member point to the same file system location. " )