52 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|