115
115
0x62 , 0x61 , 0x72 , 0x00 , # Message data
116
116
]))
117
117
118
+
119
+ GNU_MO_DATA_BIG_ENDIAN = base64 .b64encode (bytes ([
120
+ 0x95 , 0x04 , 0x12 , 0xDE , # Magic
121
+ 0x00 , 0x00 , 0x00 , 0x00 , # Version
122
+ 0x00 , 0x00 , 0x00 , 0x01 , # Message count
123
+ 0x00 , 0x00 , 0x00 , 0x1C , # Message offset
124
+ 0x00 , 0x00 , 0x00 , 0x24 , # Translation offset
125
+ 0x00 , 0x00 , 0x00 , 0x00 , # Hash table size
126
+ 0x00 , 0x00 , 0x00 , 0x2C , # Hash table offset
127
+ 0x00 , 0x00 , 0x00 , 0x03 , # 1st message length
128
+ 0x00 , 0x00 , 0x00 , 0x2C , # 1st message offset
129
+ 0x00 , 0x00 , 0x00 , 0x03 , # 1st trans length
130
+ 0x00 , 0x00 , 0x00 , 0x30 , # 1st trans offset
131
+ 0x66 , 0x6F , 0x6F , 0x00 , # Message data
132
+ 0x62 , 0x61 , 0x72 , 0x00 , # Message data
133
+ ]))
134
+
118
135
UMO_DATA = b'''\
119
136
3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAABAAAAE0AAAAQAAAAUgAAAA8BAABj
120
137
AAAABAAAAHMBAAAWAAAAeAEAAABhYsOeAG15Y29udGV4dMOeBGFiw54AUHJvamVjdC1JZC1WZXJz
142
159
MOFILE_BAD_MAJOR_VERSION = os .path .join (LOCALEDIR , 'gettext_bad_major_version.mo' )
143
160
MOFILE_BAD_MINOR_VERSION = os .path .join (LOCALEDIR , 'gettext_bad_minor_version.mo' )
144
161
MOFILE_CORRUPT = os .path .join (LOCALEDIR , 'gettext_corrupt.mo' )
162
+ MOFILE_BIG_ENDIAN = os .path .join (LOCALEDIR , 'gettext_big_endian.mo' )
145
163
UMOFILE = os .path .join (LOCALEDIR , 'ugettext.mo' )
146
164
MMOFILE = os .path .join (LOCALEDIR , 'metadata.mo' )
147
165
@@ -168,6 +186,8 @@ def setUpClass(cls):
168
186
fp .write (base64 .decodebytes (GNU_MO_DATA_BAD_MINOR_VERSION ))
169
187
with open (MOFILE_CORRUPT , 'wb' ) as fp :
170
188
fp .write (base64 .decodebytes (GNU_MO_DATA_CORRUPT ))
189
+ with open (MOFILE_BIG_ENDIAN , 'wb' ) as fp :
190
+ fp .write (base64 .decodebytes (GNU_MO_DATA_BIG_ENDIAN ))
171
191
with open (UMOFILE , 'wb' ) as fp :
172
192
fp .write (base64 .decodebytes (UMO_DATA ))
173
193
with open (MMOFILE , 'wb' ) as fp :
@@ -293,6 +313,12 @@ def test_corrupt_file(self):
293
313
self .assertEqual (exception .strerror , "File is corrupt" )
294
314
self .assertEqual (exception .filename , MOFILE_CORRUPT )
295
315
316
+ def test_big_endian_file (self ):
317
+ with open (MOFILE_BIG_ENDIAN , 'rb' ) as fp :
318
+ t = gettext .GNUTranslations (fp )
319
+
320
+ self .assertEqual (t .gettext ('foo' ), 'bar' )
321
+
296
322
def test_some_translations (self ):
297
323
eq = self .assertEqual
298
324
# test some translations
0 commit comments