@@ -936,39 +936,51 @@ 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' )
946
+ result = gettext .dgettext ('gettext' , 'mullusk' )
947
+ self .assertEqual (result , 'bacon' )
959
948
960
949
def test_dgettext_missing_translation (self ):
961
- gettext .bindtextdomain (self .domain , self .localedir )
962
- result = gettext .dgettext (self .domain , 'missing message' )
950
+ result = gettext .dgettext ('gettext' , 'missing message' )
963
951
self .assertEqual (result , 'missing message' )
964
952
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' )
953
+ def test_dgettext_fallback_cases (self ):
954
+ test_cases = [
955
+ ('gettext' , 'missing message' ),
956
+ ('nonexistent_domain' , 'mullusk' ),
957
+ ('' , 'mullusk' ),
958
+ ]
959
+ for domain , message in test_cases :
960
+ with self .subTest (domain = domain , message = message ):
961
+ result = gettext .dgettext (domain , message )
962
+ if domain == '' :
963
+ expected = gettext .gettext (message )
964
+ else :
965
+ expected = message
966
+ self .assertEqual (result , expected )
967
+
968
+ def test_dgettext_luxury_yacht_translation (self ):
969
+ result = gettext .dgettext ('gettext' , 'Raymond Luxury Yach-t' )
970
+ self .assertEqual (result , 'Throatwobbler Mangrove' )
971
+
972
+ def test_dgettext_nudge_nudge_translation (self ):
973
+ result = gettext .dgettext ('gettext' , 'nudge nudge' )
974
+ self .assertEqual (result , 'wink wink' )
975
+
976
+ def test_dgettext_multiline_translation (self ):
977
+ message = '''This module provides internationalization and localization
978
+ support for your Python programs by providing an interface to the GNU
979
+ gettext message catalog library.'''
980
+ expected = '''Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
981
+ fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
982
+ trggrkg zrffntr pngnybt yvoenel.'''
983
+ result = gettext .dgettext ('gettext' , message )
972
984
self .assertEqual (result , expected )
973
985
974
986
0 commit comments