Files
nexus/backend-tests/DockerIntegrationTestEnvironment.cs
AzuTear f5552218bc
CI - Build & Test / Backend (.NET) (push) Successful in 42s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m46s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Successful in 56s
feat: ship agent-first mission control v0.2.57
2026-07-31 22:39:47 +02:00

61 lines
2.0 KiB
C#

using Xunit;
namespace Nexus.Api.Tests;
internal static class DockerIntegrationTestEnvironment
{
public const string CollectionName = "Docker integration";
public const string PostgreSqlOptIn = "NEXUS_RUN_DOCKER_INTEGRATION_TESTS";
public const string ToxiproxyOptIn = "NEXUS_RUN_TOXIPROXY_INTEGRATION_TESTS";
public static bool PostgreSqlEnabled => IsEnabled(PostgreSqlOptIn);
public static bool ToxiproxyEnabled =>
PostgreSqlEnabled && IsEnabled(ToxiproxyOptIn);
private static bool IsEnabled(string variable)
{
var value = Environment.GetEnvironmentVariable(variable)?.Trim();
return value is not null
&& (string.Equals(value, "1", StringComparison.Ordinal)
|| string.Equals(value, "true", StringComparison.OrdinalIgnoreCase)
|| string.Equals(value, "yes", StringComparison.OrdinalIgnoreCase)
|| string.Equals(value, "on", StringComparison.OrdinalIgnoreCase));
}
}
[AttributeUsage(AttributeTargets.Method)]
public sealed class PostgreSqlIntegrationFactAttribute : FactAttribute
{
public PostgreSqlIntegrationFactAttribute()
{
if (!DockerIntegrationTestEnvironment.PostgreSqlEnabled)
{
Skip =
$"Requires Docker and explicit {DockerIntegrationTestEnvironment.PostgreSqlOptIn}=true opt-in.";
}
}
}
[AttributeUsage(AttributeTargets.Method)]
public sealed class ToxiproxyIntegrationFactAttribute : FactAttribute
{
public ToxiproxyIntegrationFactAttribute()
{
if (!DockerIntegrationTestEnvironment.ToxiproxyEnabled)
{
Skip =
"Requires Docker plus explicit "
+ $"{DockerIntegrationTestEnvironment.PostgreSqlOptIn}=true and "
+ $"{DockerIntegrationTestEnvironment.ToxiproxyOptIn}=true opt-in.";
}
}
}
[CollectionDefinition(
DockerIntegrationTestEnvironment.CollectionName,
DisableParallelization = true)]
public sealed class DockerIntegrationCollectionDefinition
{
}