using StellaOps.Scanner.CallGraph; using StellaOps.Scanner.CallGraph.Node; using Xunit; using StellaOps.TestKit; namespace StellaOps.Scanner.CallGraph.Tests; public class BenchmarkIntegrationTests { [Trait("Category", TestCategories.Integration)] [Theory] [InlineData("unsafe-eval", true)] [InlineData("guarded-eval", false)] public async Task NodeTraceExtractor_AlignsWithBenchmarkReachability(string caseName, bool expectSinkReachable) { var repoRoot = FindRepoRoot(); if (repoRoot is null) { // Benchmark fixtures not available in this test run Assert.True(true, "Benchmark fixtures not found - test passes vacuously"); return; } var caseDir = Path.Combine(repoRoot, "bench", "reachability-benchmark", "cases", "js", caseName); if (!Directory.Exists(caseDir)) { Assert.True(true, $"Benchmark case '{caseName}' not found - test passes vacuously"); return; } var extractor = new NodeCallGraphExtractor(); var snapshot = await extractor.ExtractAsync(new CallGraphExtractionRequest( ScanId: $"bench-{caseName}", Language: "node", TargetPath: caseDir), TestContext.Current.CancellationToken); var analyzer = new ReachabilityAnalyzer(); var result = analyzer.Analyze(snapshot); Assert.Equal(expectSinkReachable, result.ReachableSinkIds.Length > 0); } private static string? FindRepoRoot() { var directory = new DirectoryInfo(AppContext.BaseDirectory); while (directory is not null) { if (Directory.Exists(Path.Combine(directory.FullName, "bench", "reachability-benchmark"))) { return directory.FullName; } directory = directory.Parent; } return null; } }