117117    0x62 , 0x61 , 0x72 , 0x00 ,  # Message data 
118118]))
119119
120+ 
121+ GNU_MO_DATA_BIG_ENDIAN  =  base64 .b64encode (bytes ([
122+     0x95 , 0x04 , 0x12 , 0xDE ,  # Magic 
123+     0x00 , 0x00 , 0x00 , 0x00 ,  # Version 
124+     0x00 , 0x00 , 0x00 , 0x01 ,  # Message count 
125+     0x00 , 0x00 , 0x00 , 0x1C ,  # Message offset 
126+     0x00 , 0x00 , 0x00 , 0x24 ,  # Translation offset 
127+     0x00 , 0x00 , 0x00 , 0x00 ,  # Hash table size 
128+     0x00 , 0x00 , 0x00 , 0x2C ,  # Hash table offset 
129+     0x00 , 0x00 , 0x00 , 0x03 ,  # 1st message length 
130+     0x00 , 0x00 , 0x00 , 0x2C ,  # 1st message offset 
131+     0x00 , 0x00 , 0x00 , 0x03 ,  # 1st trans length 
132+     0x00 , 0x00 , 0x00 , 0x30 ,  # 1st trans offset 
133+     0x66 , 0x6F , 0x6F , 0x00 ,  # Message data 
134+     0x62 , 0x61 , 0x72 , 0x00 ,  # Message data 
135+ ]))
136+ 
120137UMO_DATA  =  b'''\  
121138
122139AAAABAAAAHMBAAAWAAAAeAEAAABhYsOeAG15Y29udGV4dMOeBGFiw54AUHJvamVjdC1JZC1WZXJz 
144161MOFILE_BAD_MAJOR_VERSION  =  os .path .join (LOCALEDIR , 'gettext_bad_major_version.mo' )
145162MOFILE_BAD_MINOR_VERSION  =  os .path .join (LOCALEDIR , 'gettext_bad_minor_version.mo' )
146163MOFILE_CORRUPT  =  os .path .join (LOCALEDIR , 'gettext_corrupt.mo' )
164+ MOFILE_BIG_ENDIAN  =  os .path .join (LOCALEDIR , 'gettext_big_endian.mo' )
147165UMOFILE  =  os .path .join (LOCALEDIR , 'ugettext.mo' )
148166MMOFILE  =  os .path .join (LOCALEDIR , 'metadata.mo' )
149167
@@ -170,6 +188,8 @@ def setUpClass(cls):
170188            fp .write (base64 .decodebytes (GNU_MO_DATA_BAD_MINOR_VERSION ))
171189        with  open (MOFILE_CORRUPT , 'wb' ) as  fp :
172190            fp .write (base64 .decodebytes (GNU_MO_DATA_CORRUPT ))
191+         with  open (MOFILE_BIG_ENDIAN , 'wb' ) as  fp :
192+             fp .write (base64 .decodebytes (GNU_MO_DATA_BIG_ENDIAN ))
173193        with  open (UMOFILE , 'wb' ) as  fp :
174194            fp .write (base64 .decodebytes (UMO_DATA ))
175195        with  open (MMOFILE , 'wb' ) as  fp :
@@ -319,6 +339,12 @@ def test_corrupt_file(self):
319339            self .assertEqual (exception .strerror , "File is corrupt" )
320340            self .assertEqual (exception .filename , MOFILE_CORRUPT )
321341
342+     def  test_big_endian_file (self ):
343+         with  open (MOFILE_BIG_ENDIAN , 'rb' ) as  fp :
344+             t  =  gettext .GNUTranslations (fp )
345+ 
346+         self .assertEqual (t .gettext ('foo' ), 'bar' )
347+ 
322348    def  test_some_translations (self ):
323349        eq  =  self .assertEqual 
324350        # test some translations 
0 commit comments