@@ -125,18 +125,24 @@ def test_fillna_no_op_returns_copy(self, data):
125125 tm .assert_extension_array_equal (result , data )
126126
127127 def test_fillna_readonly (self , data_missing ):
128+ fill_value = data_missing [1 ]
128129 data = data_missing .copy ()
129130 data ._readonly = True
130131
131132 # by default fillna(copy=True), then this works fine
132- result = data .fillna (data_missing [1 ])
133- assert result [0 ] == data_missing [1 ]
134- tm .assert_extension_array_equal (data , data_missing )
135-
136- # but with copy=False, this raises for EAs that respect the copy keyword
137- with pytest .raises (ValueError , match = "Cannot modify read-only array" ):
138- data .fillna (data_missing [1 ], copy = False )
133+ res_copy = data .fillna (fill_value , copy = True )
134+ assert res_copy [0 ] == fill_value
139135 tm .assert_extension_array_equal (data , data_missing )
136+
137+ if self ._supports_fillna_copy_false :
138+ # but with copy=False, this raises for EAs that respect the copy keyword
139+ with pytest .raises (ValueError , match = "Cannot modify read-only array" ):
140+ data .fillna (fill_value , copy = False )
141+ tm .assert_extension_array_equal (data , data_missing )
142+ else :
143+ res_no_copy = data .fillna (fill_value , copy = False )
144+ tm .assert_extension_array_equal (res_no_copy , res_copy )
145+ tm .assert_extension_array_equal (data , data_missing )
140146
141147 def test_fillna_series (self , data_missing ):
142148 fill_value = data_missing [1 ]
@@ -196,8 +202,3 @@ def test_fillna_fill_other(self, data):
196202
197203 tm .assert_frame_equal (result , expected )
198204
199- def test_fillna_readonly (self , data_missing ):
200- fill_value = data_missing [1 ]
201- result = data_missing .fillna (fill_value , copy = False )
202- expected = data_missing .fillna (fill_value , copy = True )
203- tm .assert_extension_array_equal (result , expected )
0 commit comments