Merge all changes

This commit is contained in:
StellaOps Bot
2026-01-08 08:54:27 +02:00
parent 589de352c2
commit 110591d6bf
381 changed files with 2237 additions and 1939 deletions

View File

@@ -46,7 +46,7 @@ public sealed class LanguageAnalyzerContextTests
var context = new LanguageAnalyzerContext(workspace.Path, TimeProvider.System, services: serviceProvider);
Assert.True(context.Secrets.IsAvailable);
using var retrieved = await context.Secrets.GetAsync("registry", "default", CancellationToken.None);
using var retrieved = await context.Secrets.GetAsync("registry", "default", TestContext.Current.CancellationToken);
Assert.Same(handle, retrieved);
Assert.Equal("test", retrieved.Metadata["source"]);
Assert.Equal("token", Encoding.UTF8.GetString(retrieved.AsBytes().Span));
@@ -59,7 +59,7 @@ public sealed class LanguageAnalyzerContextTests
var context = new LanguageAnalyzerContext(workspace.Path, TimeProvider.System);
Assert.False(context.Secrets.IsAvailable);
var secret = await context.Secrets.TryGetAsync("registry", cancellationToken: CancellationToken.None);
var secret = await context.Secrets.TryGetAsync("registry", cancellationToken: TestContext.Current.CancellationToken);
Assert.Null(secret);
}

View File

@@ -1,4 +1,5 @@
using StellaOps.Scanner.Analyzers.Lang.Tests.TestUtilities;
using Xunit;
namespace StellaOps.Scanner.Analyzers.Lang.Tests.Core;
@@ -13,7 +14,7 @@ public sealed class LanguageAnalyzerResultTests
try
{
var context = new LanguageAnalyzerContext(root, TimeProvider.System);
var result = await engine.AnalyzeAsync(context, CancellationToken.None);
var result = await engine.AnalyzeAsync(context, TestContext.Current.CancellationToken);
var component = Assert.Single(result.Components);
Assert.Equal("purl::pkg:example/acme@2.0.0", component.ComponentKey);

View File

@@ -1,4 +1,5 @@
using StellaOps.Scanner.Analyzers.Lang;
using Xunit;
using StellaOps.Scanner.Analyzers.Lang.Tests.Harness;
using StellaOps.Scanner.Analyzers.Lang.Tests.TestUtilities;
@@ -11,7 +12,7 @@ public sealed class LanguageAnalyzerHarnessTests
{
var fixturePath = TestPaths.ResolveFixture("determinism", "basic", "input");
var goldenPath = TestPaths.ResolveFixture("determinism", "basic", "expected.json");
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var analyzers = new ILanguageAnalyzer[]
{

View File

@@ -1,4 +1,5 @@
using System.Linq;
using Xunit;
using System.Threading;
using System.Threading.Tasks;
using StellaOps.Scanner.Analyzers.Lang;
@@ -12,7 +13,7 @@ public sealed class DotNetEntrypointResolverTests
[Fact]
public async Task SimpleFixtureResolvesSingleEntrypointAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "simple");
var context = new LanguageAnalyzerContext(fixturePath, TimeProvider.System);
@@ -33,7 +34,7 @@ public sealed class DotNetEntrypointResolverTests
[Fact]
public async Task DeterministicOrderingIsStableAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "multi");
var context = new LanguageAnalyzerContext(fixturePath, TimeProvider.System);

View File

@@ -1,4 +1,5 @@
using System;
using Xunit;
using System.IO;
using System.Linq;
using System.Text.Json;
@@ -15,7 +16,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SimpleFixtureProducesDeterministicOutputAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "simple");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -34,7 +35,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SignedFixtureCapturesAssemblyMetadataAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "signed");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -58,7 +59,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SelfContainedFixtureHandlesNativeAssetsAndUsageAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "selfcontained");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -84,7 +85,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task AnalyzerIsThreadSafeUnderConcurrencyAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "selfcontained");
var analyzers = new ILanguageAnalyzer[]
@@ -107,7 +108,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task ConfigEnablesIlMetadataEdgesAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var sourceFixture = TestPaths.ResolveFixture("lang", "dotnet", "simple");
var tempRoot = TestPaths.CreateTemporaryDirectory();
@@ -169,7 +170,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task MultiFixtureMergesRuntimeMetadataAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "multi");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -217,7 +218,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task SourceTreeOnlyEmitsDeclaredPackagesAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "source-tree-only");
var analyzers = new ILanguageAnalyzer[]
@@ -253,7 +254,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task LockfileOnlyEmitsDeclaredPackagesAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "lockfile-only");
var analyzers = new ILanguageAnalyzer[]
@@ -291,7 +292,7 @@ public sealed class DotNetLanguageAnalyzerTests
[Fact]
public async Task PackagesConfigOnlyEmitsDeclaredPackagesAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "dotnet", "packages-config-only");
var analyzers = new ILanguageAnalyzer[]

View File

@@ -1,4 +1,5 @@
using StellaOps.Scanner.Analyzers.Lang;
using Xunit;
using StellaOps.Scanner.Analyzers.Lang.Ruby;
using StellaOps.Scanner.Analyzers.Lang.Tests.Harness;
using StellaOps.Scanner.Analyzers.Lang.Tests.TestUtilities;
@@ -18,7 +19,7 @@ public sealed class RubyLanguageAnalyzerTests
fixture,
golden,
new ILanguageAnalyzer[] { new RubyLanguageAnalyzer() },
cancellationToken: CancellationToken.None,
cancellationToken: TestContext.Current.CancellationToken,
usageHints: usageHints);
}
@@ -32,7 +33,7 @@ public sealed class RubyLanguageAnalyzerTests
fixture,
golden,
new ILanguageAnalyzer[] { new RubyLanguageAnalyzer() },
cancellationToken: CancellationToken.None);
cancellationToken: TestContext.Current.CancellationToken);
}
[Fact]
@@ -46,7 +47,7 @@ public sealed class RubyLanguageAnalyzerTests
fixture,
golden,
new ILanguageAnalyzer[] { new RubyLanguageAnalyzer() },
cancellationToken: CancellationToken.None,
cancellationToken: TestContext.Current.CancellationToken,
usageHints: usageHints);
}
}

View File

@@ -1,4 +1,5 @@
using System.Linq;
using Xunit;
using System.Text.Json;
using StellaOps.Scanner.Analyzers.Lang.Rust;
using StellaOps.Scanner.Analyzers.Lang.Tests.Harness;
@@ -11,7 +12,7 @@ public sealed class RustHeuristicCoverageComparisonTests
[Fact]
public async Task HeuristicCoverageExceedsCompetitorBaselineAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "heuristics");
var baselinePath = Path.Combine(fixturePath, "competitor-baseline.json");
RustFixtureBinaries.EnsureHeuristicBinary(fixturePath);

View File

@@ -1,4 +1,5 @@
using System;
using Xunit;
using System.IO;
using System.Linq;
using System.Text.Json.Nodes;
@@ -13,7 +14,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task SimpleFixtureProducesDeterministicOutputAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "simple");
var goldenPath = Path.Combine(fixturePath, "expected.json");
@@ -38,7 +39,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task AnalyzerIsThreadSafeUnderConcurrencyAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "simple");
var analyzers = new ILanguageAnalyzer[]
@@ -61,7 +62,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task HeuristicFixtureProducesExpectedOutputAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "heuristics");
var goldenPath = Path.Combine(fixturePath, "expected.json");
RustFixtureBinaries.EnsureHeuristicBinary(fixturePath);
@@ -86,7 +87,7 @@ public sealed class RustLanguageAnalyzerTests
[Fact]
public async Task FallbackFixtureProducesExpectedOutputAsync()
{
var cancellationToken = CancellationToken.None;
var cancellationToken = TestContext.Current.CancellationToken;
var fixturePath = TestPaths.ResolveFixture("lang", "rust", "fallback");
var goldenPath = Path.Combine(fixturePath, "expected.json");
RustFixtureBinaries.EnsureOpaqueBinary(fixturePath);