Changeset 351


Ignore:
Timestamp:
08/29/09 16:59:56 (5 years ago)
Author:
xi
Message:

Fixed emitting of invalid BOM for UTF-16.

Location:
pyyaml/trunk
Files:
8 added
4 edited

Legend:

Unmodified
Added
Removed
  • pyyaml/trunk/lib/yaml/emitter.py

    r347 r351  
    790790        # Write BOM if needed. 
    791791        if self.encoding and self.encoding.startswith('utf-16'): 
    792             self.stream.write(u'\xFF\xFE'.encode(self.encoding)) 
     792            self.stream.write(u'\uFEFF'.encode(self.encoding)) 
    793793 
    794794    def write_stream_end(self): 
  • pyyaml/trunk/lib3/yaml/emitter.py

    r329 r351  
    786786        # Write BOM if needed. 
    787787        if self.encoding and self.encoding.startswith('utf-16'): 
    788             self.stream.write('\xFF\xFE'.encode(self.encoding)) 
     788            self.stream.write('\uFEFF'.encode(self.encoding)) 
    789789 
    790790    def write_stream_end(self): 
  • pyyaml/trunk/tests/lib/test_representer.py

    r330 r351  
    77    test_constructor._make_objects() 
    88    for allow_unicode in [False, True]: 
    9         native1 = test_constructor._load_code(open(code_filename, 'rb').read()) 
    10         native2 = None 
    11         try: 
    12             output = yaml.dump(native1, Dumper=test_constructor.MyDumper, 
    13                         allow_unicode=allow_unicode) 
    14             native2 = yaml.load(output, Loader=test_constructor.MyLoader) 
     9        for encoding in ['utf-8', 'utf-16-be', 'utf-16-le']: 
     10            native1 = test_constructor._load_code(open(code_filename, 'rb').read()) 
     11            native2 = None 
    1512            try: 
    16                 if native1 == native2: 
    17                     continue 
    18             except TypeError: 
    19                 pass 
    20             value1 = test_constructor._serialize_value(native1) 
    21             value2 = test_constructor._serialize_value(native2) 
    22             if verbose: 
    23                 print "SERIALIZED NATIVE1:" 
    24                 print value1 
    25                 print "SERIALIZED NATIVE2:" 
    26                 print value2 
    27             assert value1 == value2, (native1, native2) 
    28         finally: 
    29             if verbose: 
    30                 print "NATIVE1:" 
    31                 pprint.pprint(native1) 
    32                 print "NATIVE2:" 
    33                 pprint.pprint(native2) 
    34                 print "OUTPUT:" 
    35                 print output 
     13                output = yaml.dump(native1, Dumper=test_constructor.MyDumper, 
     14                            allow_unicode=allow_unicode, encoding=encoding) 
     15                native2 = yaml.load(output, Loader=test_constructor.MyLoader) 
     16                try: 
     17                    if native1 == native2: 
     18                        continue 
     19                except TypeError: 
     20                    pass 
     21                value1 = test_constructor._serialize_value(native1) 
     22                value2 = test_constructor._serialize_value(native2) 
     23                if verbose: 
     24                    print "SERIALIZED NATIVE1:" 
     25                    print value1 
     26                    print "SERIALIZED NATIVE2:" 
     27                    print value2 
     28                assert value1 == value2, (native1, native2) 
     29            finally: 
     30                if verbose: 
     31                    print "NATIVE1:" 
     32                    pprint.pprint(native1) 
     33                    print "NATIVE2:" 
     34                    pprint.pprint(native2) 
     35                    print "OUTPUT:" 
     36                    print output 
    3637 
    3738test_representer_types.unittest = ['.code'] 
  • pyyaml/trunk/tests/lib3/test_representer.py

    r330 r351  
    77    test_constructor._make_objects() 
    88    for allow_unicode in [False, True]: 
    9         native1 = test_constructor._load_code(open(code_filename, 'rb').read()) 
    10         native2 = None 
    11         try: 
    12             output = yaml.dump(native1, Dumper=test_constructor.MyDumper, 
    13                         allow_unicode=allow_unicode) 
    14             native2 = yaml.load(output, Loader=test_constructor.MyLoader) 
     9        for encoding in ['utf-8', 'utf-16-be', 'utf-16-le']: 
     10            native1 = test_constructor._load_code(open(code_filename, 'rb').read()) 
     11            native2 = None 
    1512            try: 
    16                 if native1 == native2: 
    17                     continue 
    18             except TypeError: 
    19                 pass 
    20             value1 = test_constructor._serialize_value(native1) 
    21             value2 = test_constructor._serialize_value(native2) 
    22             if verbose: 
    23                 print("SERIALIZED NATIVE1:") 
    24                 print(value1) 
    25                 print("SERIALIZED NATIVE2:") 
    26                 print(value2) 
    27             assert value1 == value2, (native1, native2) 
    28         finally: 
    29             if verbose: 
    30                 print("NATIVE1:") 
    31                 pprint.pprint(native1) 
    32                 print("NATIVE2:") 
    33                 pprint.pprint(native2) 
    34                 print("OUTPUT:") 
    35                 print(output) 
     13                output = yaml.dump(native1, Dumper=test_constructor.MyDumper, 
     14                            allow_unicode=allow_unicode, encoding=encoding) 
     15                native2 = yaml.load(output, Loader=test_constructor.MyLoader) 
     16                try: 
     17                    if native1 == native2: 
     18                        continue 
     19                except TypeError: 
     20                    pass 
     21                value1 = test_constructor._serialize_value(native1) 
     22                value2 = test_constructor._serialize_value(native2) 
     23                if verbose: 
     24                    print("SERIALIZED NATIVE1:") 
     25                    print(value1) 
     26                    print("SERIALIZED NATIVE2:") 
     27                    print(value2) 
     28                assert value1 == value2, (native1, native2) 
     29            finally: 
     30                if verbose: 
     31                    print("NATIVE1:") 
     32                    pprint.pprint(native1) 
     33                    print("NATIVE2:") 
     34                    pprint.pprint(native2) 
     35                    print("OUTPUT:") 
     36                    print(output) 
    3637 
    3738test_representer_types.unittest = ['.code'] 
Note: See TracChangeset for help on using the changeset viewer.