@@ -265,6 +265,30 @@ def test_offline_tracker_accepts_force_carbon_intensity_parameter(self):
265265
266266 self .assertEqual (tracker .force_carbon_intensity_g_co2e_kwh , 0.0 )
267267
268+ def test_force_carbon_intensity_rejects_negative_parameter (self ):
269+ with patch ("builtins.open" , new_callable = get_custom_mock_open ("" , "" )):
270+ with patch ("os.path.exists" , return_value = True ):
271+ tracker = EmissionsTracker (
272+ force_carbon_intensity_g_co2e_kwh = - 1 ,
273+ save_to_file = False ,
274+ allow_multiple_runs = True ,
275+ )
276+
277+ self .assertIsNone (tracker .force_carbon_intensity_g_co2e_kwh )
278+ self .assertIsNone (tracker ._conf ["force_carbon_intensity_g_co2e_kwh" ])
279+
280+ def test_force_carbon_intensity_rejects_non_numeric_parameter (self ):
281+ with patch ("builtins.open" , new_callable = get_custom_mock_open ("" , "" )):
282+ with patch ("os.path.exists" , return_value = True ):
283+ tracker = EmissionsTracker (
284+ force_carbon_intensity_g_co2e_kwh = "invalid" ,
285+ save_to_file = False ,
286+ allow_multiple_runs = True ,
287+ )
288+
289+ self .assertIsNone (tracker .force_carbon_intensity_g_co2e_kwh )
290+ self .assertIsNone (tracker ._conf ["force_carbon_intensity_g_co2e_kwh" ])
291+
268292 def test_track_emissions_forwards_force_carbon_intensity_parameter (self ):
269293 with patch ("codecarbon.emissions_tracker.EmissionsTracker" ) as tracker_class :
270294
@@ -283,6 +307,28 @@ def tracked_function():
283307 321.0 ,
284308 )
285309
310+ def test_track_emissions_forwards_force_carbon_intensity_to_offline_tracker (self ):
311+ with patch (
312+ "codecarbon.emissions_tracker.OfflineEmissionsTracker"
313+ ) as tracker_class :
314+
315+ @track_emissions (
316+ offline = True ,
317+ country_iso_code = "FRA" ,
318+ force_carbon_intensity_g_co2e_kwh = 321.0 ,
319+ save_to_file = False ,
320+ )
321+ def tracked_function ():
322+ return "success"
323+
324+ self .assertEqual (tracked_function (), "success" )
325+
326+ tracker_class .assert_called_once ()
327+ self .assertEqual (
328+ tracker_class .call_args .kwargs ["force_carbon_intensity_g_co2e_kwh" ],
329+ 321.0 ,
330+ )
331+
286332 @mock .patch .dict (
287333 os .environ ,
288334 {
0 commit comments