Files
git.stella-ops.org/src/Scanner/__Tests/StellaOps.Scanner.Analyzers.Lang.Deno.Tests/Containers/ContainerAdapterTests.cs
2026-01-08 08:54:27 +02:00

52 lines
2.4 KiB
C#

using System.Linq;
using Xunit;
using StellaOps.Scanner.Analyzers.Lang.Deno.Internal;
using StellaOps.Scanner.Analyzers.Lang.Deno.Tests.TestFixtures;
using StellaOps.Scanner.Analyzers.Lang.Deno.Tests.TestUtilities;
namespace StellaOps.Scanner.Analyzers.Lang.Deno.Tests.Containers;
public sealed class ContainerAdapterTests
{
[Fact]
public async Task CollectInputsIncludesCacheVendorAndBundlesAsync()
{
var (root, envDir) = DenoWorkspaceTestFixture.Create();
try
{
Environment.SetEnvironmentVariable("DENO_DIR", envDir);
var context = new LanguageAnalyzerContext(root, TimeProvider.System);
var workspace = await DenoWorkspaceNormalizer.NormalizeAsync(context, TestContext.Current.CancellationToken);
var bundleScan = DenoBundleScanner.Scan(root, TestContext.Current.CancellationToken);
var observations = DenoBundleScanner.ToObservations(bundleScan);
var inputs = DenoContainerAdapter.CollectInputs(workspace, observations);
Assert.NotEmpty(inputs);
var cacheInputs = inputs.Where(input => input.Kind == DenoContainerSourceKind.Cache).ToArray();
Assert.Equal(3, cacheInputs.Length);
Assert.All(cacheInputs, cache => Assert.True(cache.Metadata.ContainsKey("path")));
var vendorInputs = inputs.Where(input => input.Kind == DenoContainerSourceKind.Vendor).ToArray();
Assert.Equal(2, vendorInputs.Length);
Assert.Contains(vendorInputs, vendor => vendor.Metadata.TryGetValue("alias", out var alias) && alias?.Contains("vendor", StringComparison.OrdinalIgnoreCase) == true);
var bundleInputs = inputs.Where(input => input.Kind == DenoContainerSourceKind.Bundle).ToArray();
Assert.Equal(2, bundleInputs.Length);
Assert.Contains(bundleInputs, bundle => string.Equals(bundle.Bundle?.BundleType, "eszip", StringComparison.OrdinalIgnoreCase));
Assert.Contains(bundleInputs, bundle => string.Equals(bundle.Bundle?.BundleType, "deno-compile", StringComparison.OrdinalIgnoreCase));
Assert.All(bundleInputs, bundle =>
{
Assert.True(bundle.Metadata.ContainsKey("entrypoint"));
Assert.True(bundle.Metadata.ContainsKey("moduleCount"));
});
}
finally
{
Environment.SetEnvironmentVariable("DENO_DIR", null);
TestPaths.SafeDelete(root);
}
}
}