OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import difflib | 5 import difflib |
6 import json | 6 import json |
7 import os | 7 import os |
8 import pprint | 8 import pprint |
9 | 9 |
10 from collections import OrderedDict | 10 from collections import OrderedDict |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 """ | 72 """ |
73 @type test: Test() | 73 @type test: Test() |
74 @returns: The deserialized data (or NonExistant), and a boolean indicating if | 74 @returns: The deserialized data (or NonExistant), and a boolean indicating if |
75 the current serialized data is in the same format which was | 75 the current serialized data is in the same format which was |
76 requested by |test|. | 76 requested by |test|. |
77 @rtype: (dict, bool) | 77 @rtype: (dict, bool) |
78 """ | 78 """ |
79 for ext in sorted(SUPPORTED_SERIALIZERS, key=lambda s: s != test.ext): | 79 for ext in sorted(SUPPORTED_SERIALIZERS, key=lambda s: s != test.ext): |
80 path = test.expect_path(ext) | 80 path = test.expect_path(ext) |
81 if path is None: | 81 if path is None: |
82 return None, True | 82 return NonExistant, True |
83 | 83 |
84 if ext not in SERIALIZERS and ext == test.ext: | 84 if ext not in SERIALIZERS and ext == test.ext: |
85 raise Exception('The package to support %s is not installed.' % ext) | 85 raise Exception('The package to support %s is not installed.' % ext) |
86 if os.path.exists(path): | 86 if os.path.exists(path): |
87 try: | 87 try: |
88 with open(path, 'rb') as f: | 88 with open(path, 'rb') as f: |
89 data = SERIALIZERS[ext][0](f) | 89 data = SERIALIZERS[ext][0](f) |
90 except ValueError as err: | 90 except ValueError as err: |
91 raise ValueError('Bad format of %s: %s' % (path, err)) | 91 raise ValueError('Bad format of %s: %s' % (path, err)) |
92 return data, ext == test.ext | 92 return data, ext == test.ext |
(...skipping 25 matching lines...) Expand all Loading... |
118 return new | 118 return new |
119 if old == new: | 119 if old == new: |
120 return None | 120 return None |
121 else: | 121 else: |
122 return list(difflib.context_diff( | 122 return list(difflib.context_diff( |
123 pprint.pformat(old).splitlines(), | 123 pprint.pformat(old).splitlines(), |
124 pprint.pformat(new).splitlines(), | 124 pprint.pformat(new).splitlines(), |
125 fromfile='expected', tofile='current', | 125 fromfile='expected', tofile='current', |
126 n=4, lineterm='' | 126 n=4, lineterm='' |
127 )) | 127 )) |
OLD | NEW |