@@ -936,39 +936,47 @@ def test_lazy_import(self):
936
936
ensure_lazy_imports ("gettext" , {"re" ,"warnings" ,"locale" })
937
937
938
938
939
- class DGettextTest (unittest . TestCase ):
939
+ class DGettextTest (GettextBaseTest ):
940
940
941
941
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 )
952
944
953
945
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 )
972
980
self .assertEqual (result ,expected )
973
981
974
982