117
117
0x62 ,0x61 ,0x72 ,0x00 ,# Message data
118
118
]))
119
119
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
+
120
137
UMO_DATA = b'''\
121
138
3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAABAAAAE0AAAAQAAAAUgAAAA8BAABj
122
139
AAAABAAAAHMBAAAWAAAAeAEAAABhYsOeAG15Y29udGV4dMOeBGFiw54AUHJvamVjdC1JZC1WZXJz
144
161
MOFILE_BAD_MAJOR_VERSION = os .path .join (LOCALEDIR ,'gettext_bad_major_version.mo' )
145
162
MOFILE_BAD_MINOR_VERSION = os .path .join (LOCALEDIR ,'gettext_bad_minor_version.mo' )
146
163
MOFILE_CORRUPT = os .path .join (LOCALEDIR ,'gettext_corrupt.mo' )
164
+ MOFILE_BIG_ENDIAN = os .path .join (LOCALEDIR ,'gettext_big_endian.mo' )
147
165
UMOFILE = os .path .join (LOCALEDIR ,'ugettext.mo' )
148
166
MMOFILE = os .path .join (LOCALEDIR ,'metadata.mo' )
149
167
@@ -170,6 +188,8 @@ def setUpClass(cls):
170
188
fp .write (base64 .decodebytes (GNU_MO_DATA_BAD_MINOR_VERSION ))
171
189
with open (MOFILE_CORRUPT ,'wb' )as fp :
172
190
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 ))
173
193
with open (UMOFILE ,'wb' )as fp :
174
194
fp .write (base64 .decodebytes (UMO_DATA ))
175
195
with open (MMOFILE ,'wb' )as fp :
@@ -319,6 +339,12 @@ def test_corrupt_file(self):
319
339
self .assertEqual (exception .strerror ,"File is corrupt" )
320
340
self .assertEqual (exception .filename ,MOFILE_CORRUPT )
321
341
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
+
322
348
def test_some_translations (self ):
323
349
eq = self .assertEqual
324
350
# test some translations