< Summary - Kestrun — Combined Coverage

Information
Class: Kestrun.Languages.JScriptDelegateBuilder
Assembly: Kestrun
File(s): /home/runner/work/Kestrun/Kestrun/src/CSharp/Kestrun/Languages/JScriptDelegateBuilder.cs
Tag: Kestrun/Kestrun@5f1d2b981c9d7292c11fd448428c6ab6c811c5de
Line coverage
22%
Covered lines: 5
Uncovered lines: 17
Coverable lines: 22
Total lines: 45
Line coverage: 22.7%
Branch coverage
33%
Covered branches: 2
Total branches: 6
Branch coverage: 33.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 11/19/2025 - 17:40:50 Line coverage: 27.2% (6/22) Branch coverage: 66.6% (4/6) Total lines: 45 Tag: Kestrun/Kestrun@fcf33342333cef0516fe0d0912a86709874fd02603/26/2026 - 03:54:59 Line coverage: 22.7% (5/22) Branch coverage: 33.3% (2/6) Total lines: 45 Tag: Kestrun/Kestrun@844b5179fb0492dc6b1182bae3ff65fa7365521d 11/19/2025 - 17:40:50 Line coverage: 27.2% (6/22) Branch coverage: 66.6% (4/6) Total lines: 45 Tag: Kestrun/Kestrun@fcf33342333cef0516fe0d0912a86709874fd02603/26/2026 - 03:54:59 Line coverage: 22.7% (5/22) Branch coverage: 33.3% (2/6) Total lines: 45 Tag: Kestrun/Kestrun@844b5179fb0492dc6b1182bae3ff65fa7365521d

Coverage delta

Coverage delta 34 -34

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Implemented()100%11100%
Build(...)33.33%25619.05%

File(s)

/home/runner/work/Kestrun/Kestrun/src/CSharp/Kestrun/Languages/JScriptDelegateBuilder.cs

#LineLine coverage
 1using Kestrun.Hosting;
 2using Kestrun.Models;
 3using Microsoft.ClearScript.V8;
 4using Serilog.Events;
 5
 6namespace Kestrun.Languages;
 7// ---------------------------------------------------------------------------
 8//  Python delegate builder  –  now takes optional imports / references
 9// ---------------------------------------------------------------------------
 10
 11internal static class JScriptDelegateBuilder
 12{
 213    public static bool Implemented { get; set; }
 14    internal static RequestDelegate Build(KestrunHost host, string code)
 15    {
 116        var logger = host.Logger;
 117        if (logger.IsEnabled(LogEventLevel.Debug))
 18        {
 019            logger.Debug("Building JavaScript delegate, script length={Length}", code?.Length);
 20        }
 21
 122        if (!Implemented)
 23        {
 124            throw new NotImplementedException("JavaScript scripting is not yet supported in Kestrun.");
 25        }
 26
 027        var engine = new V8ScriptEngine();
 028        engine.AddHostType("KestrunResponse", typeof(KestrunResponse));
 029        engine.Execute(code);               // script defines global  function handle(ctx, res) { ... }
 30
 031        return async context =>
 032        {
 033            var krContext = new KestrunContext(host, context);
 034            var krResponse = krContext.Response;
 035            engine.Script.handle(context, krResponse);
 036
 037            if (!string.IsNullOrEmpty(krResponse.RedirectUrl))
 038            {
 039                return;
 040            }
 041
 042            await krResponse.ApplyTo(context.Response);
 043        };
 44    }
 45}