1 """Coverage data for Coverage.""" |
1 """Coverage data for Coverage.""" |
2 |
2 |
3 import os |
3 import os |
|
4 import sys |
4 |
5 |
5 from .backward import iitems, pickle, sorted # pylint: disable=W0622 |
6 from .backward import iitems, pickle, sorted # pylint: disable=W0622 |
6 from .files import PathAliases |
7 from .files import PathAliases |
7 from .misc import file_be_gone |
8 from .misc import file_be_gone |
8 |
9 |
99 self.arcs = {} |
100 self.arcs = {} |
100 |
101 |
101 def line_data(self): |
102 def line_data(self): |
102 """Return the map from filenames to lists of line numbers executed.""" |
103 """Return the map from filenames to lists of line numbers executed.""" |
103 return dict( |
104 return dict( |
104 [(f, sorted(lmap.keys())) for f, lmap in iitems(self.lines)] |
105 [(f.decode(sys.getfilesystemencoding()), sorted(lmap.keys())) |
|
106 for f, lmap in iitems(self.lines)] |
105 ) |
107 ) |
106 |
108 |
107 def arc_data(self): |
109 def arc_data(self): |
108 """Return the map from filenames to lists of line number pairs.""" |
110 """Return the map from filenames to lists of line number pairs.""" |
109 return dict( |
111 return dict( |
110 [(f, sorted(amap.keys())) for f, amap in iitems(self.arcs)] |
112 [(f.decode(sys.getfilesystemencoding()), sorted(amap.keys())) |
|
113 for f, amap in iitems(self.arcs)] |
111 ) |
114 ) |
112 |
115 |
113 def write_file(self, filename): |
116 def write_file(self, filename): |
114 """Write the coverage data to `filename`.""" |
117 """Write the coverage data to `filename`.""" |
115 |
118 |
161 try: |
164 try: |
162 data = self.raw_data(filename) |
165 data = self.raw_data(filename) |
163 if isinstance(data, dict): |
166 if isinstance(data, dict): |
164 # Unpack the 'lines' item. |
167 # Unpack the 'lines' item. |
165 lines = dict([ |
168 lines = dict([ |
166 (f, dict.fromkeys(linenos, None)) |
169 (f.encode(sys.getfilesystemencoding()), |
|
170 dict.fromkeys(linenos, None)) |
167 for f, linenos in iitems(data.get('lines', {})) |
171 for f, linenos in iitems(data.get('lines', {})) |
168 ]) |
172 ]) |
169 # Unpack the 'arcs' item. |
173 # Unpack the 'arcs' item. |
170 arcs = dict([ |
174 arcs = dict([ |
171 (f, dict.fromkeys(arcpairs, None)) |
175 (f.encode(sys.getfilesystemencoding()), |
|
176 dict.fromkeys(arcpairs, None)) |
172 for f, arcpairs in iitems(data.get('arcs', {})) |
177 for f, arcpairs in iitems(data.get('arcs', {})) |
173 ]) |
178 ]) |
174 except Exception: |
179 except Exception: |
175 pass |
180 pass |
176 return lines, arcs |
181 return lines, arcs |