@@ -1444,6 +1444,36 @@ def test_diff_flamegraph_empty_current(self):
14441444 self .assertIn ("name" , data )
14451445 self .assertEqual (data ["value" ], 0 )
14461446
1447+ def test_diff_flamegraph_empty_baseline (self ):
1448+ """Empty baseline with non-empty current uses scale=1.0 fallback."""
1449+ diff = make_diff_collector_with_mock_baseline ([])
1450+ diff .collect ([
1451+ MockInterpreterInfo (0 , [
1452+ MockThreadInfo (1 , [
1453+ MockFrameInfo ("file.py" , 10 , "func1" ),
1454+ MockFrameInfo ("file.py" , 20 , "func2" ),
1455+ ])
1456+ ])
1457+ ])
1458+
1459+ data = diff ._convert_to_flamegraph_format ()
1460+ strings = data .get ("strings" , [])
1461+
1462+ self .assertTrue (data ["stats" ]["is_differential" ])
1463+ self .assertEqual (data ["stats" ]["baseline_samples" ], 0 )
1464+ self .assertEqual (data ["stats" ]["current_samples" ], 1 )
1465+ self .assertAlmostEqual (data ["stats" ]["baseline_scale" ], 1.0 )
1466+ self .assertEqual (data ["stats" ]["elided_count" ], 0 )
1467+
1468+ children = data .get ("children" , [])
1469+ self .assertEqual (len (children ), 1 )
1470+ child = children [0 ]
1471+ self .assertIn ("func1" , resolve_name (child , strings ))
1472+ self .assertEqual (child ["self_time" ], 1 )
1473+ self .assertAlmostEqual (child ["baseline" ], 0.0 )
1474+ self .assertAlmostEqual (child ["diff" ], 1.0 )
1475+ self .assertAlmostEqual (child ["diff_pct" ], 100.0 )
1476+
14471477 def test_diff_flamegraph_export (self ):
14481478 """DiffFlamegraphCollector export produces differential HTML."""
14491479 test_frames = [
0 commit comments