@@ -93,27 +93,51 @@ def test_keys(self):
9393 expected_keys = {"KEY1" , "KEY2" , "KEY3" }
9494 self .assertEqual (set (keys ), expected_keys )
9595
96+ def test_get_normalizes_carrier_keys (self ):
97+ """Test lookup when the carrier stores non-normalized keys."""
98+ with patch .dict (os .environ , {}, clear = True ):
99+ getter = EnvironmentGetter ()
100+ carrier = {"x-b3-traceid" : "abc123" }
101+
102+ result = getter .get (carrier , "x-b3-traceid" )
103+
104+ self .assertEqual (result , ["abc123" ])
105+
106+ def test_get_uses_carrier_before_environment_snapshot (self ):
107+ """Test that explicit carriers take precedence over the snapshot."""
108+ with patch .dict (os .environ , {"X_B3_TRACEID" : "from_env" }):
109+ getter = EnvironmentGetter ()
110+ carrier = {"x-b3-traceid" : "from_carrier" }
111+
112+ result = getter .get (carrier , "x-b3-traceid" )
113+
114+ self .assertEqual (result , ["from_carrier" ])
115+
116+ def test_keys_normalizes_carrier_keys (self ):
117+ """Test getting normalized keys from an explicit carrier."""
118+ with patch .dict (os .environ , {}, clear = True ):
119+ getter = EnvironmentGetter ()
120+ keys = getter .keys (
121+ {"x-b3-traceid" : "value1" , "BAGGAGE" : "value2" }
122+ )
123+
124+ self .assertEqual (set (keys ), {"X_B3_TRACEID" , "BAGGAGE" })
125+
96126 def test_keys_empty_environment (self ):
97127 """Test getting keys when environment is empty."""
98128 with patch .dict (os .environ , {}, clear = True ):
99129 getter = EnvironmentGetter ()
100130 keys = getter .keys ({})
101131 self .assertEqual (keys , [])
102132
103- def test_uses_snapshot_not_carrier_parameter (self ):
104- """Test that getter uses internal snapshot, not carrier parameter.
105-
106- The carrier parameter exists for interface compatibility with
107- Getter[CarrierT], but EnvironmentGetter reads from os.environ at
108- initialization, creating an immutable snapshot.
109- """
133+ def test_uses_snapshot_when_carrier_is_empty (self ):
134+ """Test that getter uses its internal snapshot for an empty carrier."""
110135 with patch .dict (os .environ , {"TEST_KEY" : "test_value" }):
111136 getter = EnvironmentGetter ()
112- # Both return same value from snapshot, carrier is ignored
113- result1 = getter .get ({}, "test_key" )
114- result2 = getter .get ({"test_key" : "different" }, "test_key" )
115- self .assertEqual (result1 , ["test_value" ])
116- self .assertEqual (result2 , ["test_value" ])
137+
138+ result = getter .get ({}, "test_key" )
139+
140+ self .assertEqual (result , ["test_value" ])
117141
118142 def test_snapshot_immutability (self ):
119143 """Test that getter snapshot doesn't see changes after initialization."""
0 commit comments