@@ -936,39 +936,47 @@ def test_lazy_import(self):
936936 ensure_lazy_imports ("gettext" , {"re" , "warnings" , "locale" })
937937
938938
939- class DGettextTest (unittest . TestCase ):
939+ class DGettextTest (GettextBaseTest ):
940940
941941 def setUp (self ):
942- self .localedir = self .enterContext (os_helper .temp_dir ())
943- self .domain = 'gettext_domain'
944- self .mofile = self .setup_dgettext_test_env ()
945-
946- def setup_dgettext_test_env (self ):
947- os .makedirs (os .path .join (self .localedir , 'en' , 'LC_MESSAGES' ), exist_ok = True )
948- mofile = os .path .join (self .localedir , 'en' , 'LC_MESSAGES' , f'{ self .domain } .mo' )
949- with open (mofile , 'wb' ) as fp :
950- fp .write (b'\x00 \x00 \x00 \x00 ' )
951- return mofile
942+ GettextBaseTest .setUp (self )
943+ gettext .bindtextdomain ('gettext' , os .curdir )
952944
953945 def test_dgettext_found_translation (self ):
954- gettext .bindtextdomain (self .domain , self .localedir )
955- with unittest .mock .patch ('gettext.dgettext' ) as mock_dgettext :
956- mock_dgettext .return_value = 'test message translation'
957- result = gettext .dgettext (self .domain , 'test message' )
958- self .assertEqual (result , 'test message translation' )
959-
960- def test_dgettext_missing_translation (self ):
961- gettext .bindtextdomain (self .domain , self .localedir )
962- result = gettext .dgettext (self .domain , 'missing message' )
963- self .assertEqual (result , 'missing message' )
964-
965- def test_dgettext_non_existent_domain (self ):
966- result = gettext .dgettext ('nonexistent_domain' , 'test message' )
967- self .assertEqual (result , 'test message' )
968-
969- def test_dgettext_empty_domain (self ):
970- result = gettext .dgettext ('' , 'test message' )
971- expected = gettext .gettext ('test message' )
946+ result = gettext .dgettext ('gettext' , 'mullusk' )
947+ self .assertEqual (result , 'bacon' )
948+
949+ def test_dgettext_fallback_cases (self ):
950+ test_cases = [
951+ ('gettext' , 'missing message' ),
952+ ('nonexistent_domain' , 'mullusk' ),
953+ ('' , 'mullusk' ),
954+ ]
955+ for domain , message in test_cases :
956+ with self .subTest (domain = domain , message = message ):
957+ result = gettext .dgettext (domain , message )
958+ if domain == '' :
959+ expected = gettext .gettext (message )
960+ else :
961+ expected = message
962+ self .assertEqual (result , expected )
963+
964+ def test_dgettext_luxury_yacht_translation (self ):
965+ result = gettext .dgettext ('gettext' , 'Raymond Luxury Yach-t' )
966+ self .assertEqual (result , 'Throatwobbler Mangrove' )
967+
968+ def test_dgettext_nudge_nudge_translation (self ):
969+ result = gettext .dgettext ('gettext' , 'nudge nudge' )
970+ self .assertEqual (result , 'wink wink' )
971+
972+ def test_dgettext_multiline_translation (self ):
973+ message = '''This module provides internationalization and localization
974+ support for your Python programs by providing an interface to the GNU
975+ gettext message catalog library.'''
976+ expected = '''Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
977+ fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
978+ trggrkg zrffntr pngnybt yvoenel.'''
979+ result = gettext .dgettext ('gettext' , message )
972980 self .assertEqual (result , expected )
973981
974982
0 commit comments