@@ -60,20 +60,32 @@ def coverage_fileobj():
6060
6161def test_coveragedata (coverage_fileobj ):
6262 import coverage
63- from covimerage .coveragepy import CoverageData , CoverageWrapperException
63+ from covimerage .coveragepy import (
64+ CoverageData , CoveragePyData , CoverageWrapperException )
6465
6566 with pytest .raises (TypeError ) as excinfo :
66- CoverageData (data_file = 'foo' , cov_data = 'bar' )
67+ CoverageData (data_file = 'foo' , cov_data = CoveragePyData () )
6768 assert excinfo .value .args == (
6869 'data and data_file are mutually exclusive.' ,)
6970
7071 data = CoverageData ()
71- assert isinstance (data .cov_data , coverage .data .CoverageData )
72+ try :
73+ from coverage .data import CoverageJsonData
74+ except ImportError :
75+ assert isinstance (data .cov_data , coverage .data .CoverageData )
76+ else :
77+ assert isinstance (data .cov_data , CoverageJsonData )
7278
7379 with pytest .raises (TypeError ) as excinfo :
7480 CoverageData (cov_data = 'foo' )
75- assert excinfo .value .args == (
76- 'data needs to be of type coverage.data.CoverageData' ,)
81+ try :
82+ from coverage .data import CoverageJsonData
83+ except ImportError :
84+ assert excinfo .value .args == (
85+ 'data needs to be of type coverage.data.CoverageData' ,)
86+ else :
87+ assert excinfo .value .args == (
88+ 'data needs to be of type coverage.data.CoverageJsonData' ,)
7789
7890 with pytest .raises (CoverageWrapperException ) as excinfo :
7991 CoverageData (data_file = '/does/not/exist' )
@@ -106,29 +118,34 @@ def test_coveragedata_empty(covdata_empty):
106118
107119 f = StringIO ()
108120 data = CoverageData ()
109- data .cov_data .write_fileobj (f )
121+ try :
122+ write_fileobj = data .cov_data .write_fileobj
123+ except AttributeError :
124+ # coveragepy 5
125+ write_fileobj = data .cov_data ._write_fileobj
126+ write_fileobj (f )
110127 f .seek (0 )
111128 assert f .read () == covdata_empty
112129
113130
114131def test_coveragewrapper (coverage_fileobj , devnull ):
115132 import coverage
116133 from covimerage .coveragepy import (
117- CoverageData , CoverageWrapper , CoverageWrapperException )
134+ CoverageData , CoveragePyData , CoverageWrapper , CoverageWrapperException )
118135
119136 cov_data = CoverageWrapper ()
120137 assert cov_data .lines == {}
121138 assert isinstance (cov_data .data , CoverageData )
122139
123- cov_data = CoverageWrapper (data = coverage . data . CoverageData ())
140+ cov_data = CoverageWrapper (data = CoveragePyData ())
124141 assert cov_data .lines == {}
125142 assert isinstance (cov_data .data , CoverageData )
126143
127144 with pytest .raises (TypeError ):
128145 CoverageWrapper (data_file = 'foo' , data = 'bar' )
129146
130147 with pytest .raises (TypeError ):
131- CoverageWrapper (data_file = 'foo' , data = CoverageData ())
148+ CoverageWrapper (data_file = 'foo' , data = CoveragePyData ())
132149
133150 cov = CoverageWrapper (data_file = coverage_fileobj )
134151 with pytest .raises (attr .exceptions .FrozenInstanceError ):
@@ -139,7 +156,11 @@ def test_coveragewrapper(coverage_fileobj, devnull):
139156 3 , 8 , 9 , 11 , 13 , 14 , 15 , 17 , 23 ]}
140157
141158 assert isinstance (cov ._cov_obj , coverage .control .Coverage )
142- assert cov ._cov_obj .data is cov .data .cov_data
159+ if hasattr (cov ._cov_obj , '_data' ):
160+ # coveragepy 5
161+ assert cov ._cov_obj ._data is cov .data .cov_data
162+ else :
163+ assert cov ._cov_obj .data is cov .data .cov_data
143164
144165 with pytest .raises (CoverageWrapperException ) as excinfo :
145166 CoverageWrapper (data_file = devnull .name )
@@ -158,6 +179,17 @@ def test_coveragewrapper(coverage_fileobj, devnull):
158179 e .message , e .orig_exc )
159180
160181
182+ def test_coveragewrapper_requires_jsondata ():
183+ pytest .importorskip ('coverage.sqldata' )
184+ from covimerage .coveragepy import CoverageWrapper
185+
186+ with pytest .raises (TypeError ) as excinfo :
187+ CoverageWrapper (data = coverage .sqldata .CoverageSqliteData ())
188+
189+ assert excinfo .value .args [0 ] == (
190+ 'data needs to be of type coverage.data.CoverageJsonData' )
191+
192+
161193def test_coveragewrapper_uses_config_file (tmpdir , capfd ):
162194 from covimerage .coveragepy import CoverageWrapper , CoverageWrapperException
163195
0 commit comments