test(e2e): guard DeploymentFixture partial-init + teardown (review fixes)

This commit is contained in:
Joseph Doherty
2026-06-05 10:30:16 -04:00
parent 19c4412fd1
commit 8e11f1f900
@@ -77,10 +77,22 @@ public sealed class DeploymentFixture : IAsyncLifetime
return; return;
} }
SiteAId = await CliRunner.ResolveSiteIdAsync(SiteAIdentifier); try
TemplateId = await CliRunner.CreateTemplateAsync(CliRunner.UniqueName("deploytmpl")); {
await CliRunner.AddAttributeAsync(TemplateId, "Value", "Double"); SiteAId = await CliRunner.ResolveSiteIdAsync(SiteAIdentifier);
AreaId = await CliRunner.CreateAreaAsync(SiteAId, CliRunner.UniqueName("area")); TemplateId = await CliRunner.CreateTemplateAsync(CliRunner.UniqueName("deploytmpl"));
await CliRunner.AddAttributeAsync(TemplateId, "Value", "Double");
AreaId = await CliRunner.CreateAreaAsync(SiteAId, CliRunner.UniqueName("area"));
}
catch
{
// Partial-init guard: best-effort cleanup of whatever was created before
// the failure; DeleteAreaAsync/DeleteTemplateAsync are no-ops for id 0.
await CliRunner.DeleteAreaAsync(AreaId);
await CliRunner.DeleteTemplateAsync(TemplateId);
Available = false;
throw;
}
} }
/// <summary> /// <summary>
@@ -104,6 +116,7 @@ public sealed class DeploymentFixture : IAsyncLifetime
public async Task<(int Id, string UniqueName)> CreateInstanceAsync() public async Task<(int Id, string UniqueName)> CreateInstanceAsync()
{ {
var inv = System.Globalization.CultureInfo.InvariantCulture; var inv = System.Globalization.CultureInfo.InvariantCulture;
// "inst" must match the InstanceNamePrefix ("zztest-inst-") used by the teardown sweep.
var name = CliRunner.UniqueName("inst"); var name = CliRunner.UniqueName("inst");
using var doc = await CliRunner.RunJsonAsync( using var doc = await CliRunner.RunJsonAsync(
@@ -154,8 +167,8 @@ public sealed class DeploymentFixture : IAsyncLifetime
// Best-effort teardown — never fail the suite on a cleanup hiccup. // Best-effort teardown — never fail the suite on a cleanup hiccup.
} }
await CliRunner.DeleteAreaAsync(AreaId); try { await CliRunner.DeleteAreaAsync(AreaId); } catch { }
await CliRunner.DeleteTemplateAsync(TemplateId); try { await CliRunner.DeleteTemplateAsync(TemplateId); } catch { }
} }
/// <summary> /// <summary>