@@ -190,11 +190,14 @@ def test_resource_merge(self):
190190 right = Resource .create ({}, schema_urls [0 ])
191191 self .assertEqual (left .merge (right ).schema_url , schema_urls [0 ])
192192
193- left = Resource . create ({ }, schema_urls [0 ])
194- right = Resource . create ({ }, schema_urls [1 ])
193+ left = Resource ({ "a" : "left" , "shared" : "left" }, schema_urls [0 ])
194+ right = Resource ({ "b" : "right" , "shared" : "right" }, schema_urls [1 ])
195195 with self .assertLogs (level = WARNING ) as log_entry :
196196 merged = left .merge (right )
197- self .assertEqual (merged .attributes , left .attributes )
197+ self .assertEqual (
198+ merged .attributes ,
199+ {"a" : "left" , "b" : "right" , "shared" : "right" },
200+ )
198201 self .assertEqual (merged .schema_url , "" )
199202 self .assertIn (schema_urls [0 ], log_entry .output [0 ])
200203 self .assertIn (schema_urls [1 ], log_entry .output [0 ])
@@ -207,6 +210,26 @@ def test_resource_merge(self):
207210 fourth = Resource .create ({}, None )
208211 self .assertEqual (merged .merge (fourth ).schema_url , "" )
209212
213+ def test_conflict_eq_hash (self ):
214+ left = Resource ({"a" : "1" }, "https://opentelemetry.io/schemas/1.2.0" )
215+ right = Resource ({"a" : "1" }, "https://opentelemetry.io/schemas/1.3.0" )
216+ with self .assertLogs (level = WARNING ):
217+ cleared = left .merge (right )
218+ cleared_again = left .merge (right )
219+
220+ cases = (
221+ ("cleared vs plain" , cleared , Resource ({"a" : "1" }), False ),
222+ ("cleared vs cleared" , cleared , cleared_again , True ),
223+ )
224+ for name , first , second , expected in cases :
225+ with self .subTest (name ):
226+ for check , actual in (
227+ ("eq" , first == second ),
228+ ("hash" , hash (first ) == hash (second )),
229+ ):
230+ with self .subTest (check ):
231+ self .assertEqual (actual , expected )
232+
210233 def test_resource_merge_empty_string (self ):
211234 """Verify Resource.merge behavior with the empty string.
212235
0 commit comments