Skip to content

Commit 472300a

Browse files
authored
feat(commons): preclude empty containers from output (#575)
The PR changes AllureLifecycle to only write a container if it has at least one fixture of any type.
1 parent 9293efa commit 472300a

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

Allure.Net.Commons.Tests/AllureLifeCycleTest.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,5 +227,48 @@ public void HistoryAndTestCaseIdsAreNotOverwrittenAfterStop()
227227
Assert.That(lifecycle.Context.CurrentTest.historyId, Is.EqualTo("history-id"));
228228
Assert.That(lifecycle.Context.CurrentTest.testCaseId, Is.EqualTo("testcase-id"));
229229
}
230+
231+
[Test]
232+
public void EmptyTestContainerNotWritten()
233+
{
234+
var writer = new InMemoryResultsWriter();
235+
var lifecycle = new AllureLifecycle(_ => writer);
236+
lifecycle.StartTestContainer(new() { uuid = "foo" });
237+
lifecycle.StopTestContainer();
238+
239+
lifecycle.WriteTestContainer();
240+
241+
Assert.That(writer.testContainers, Is.Empty);
242+
}
243+
244+
[Test]
245+
public void ContainerWithBeforeFixtureIsWritten()
246+
{
247+
var writer = new InMemoryResultsWriter();
248+
var lifecycle = new AllureLifecycle(_ => writer);
249+
lifecycle.StartTestContainer(new() { uuid = "foo" });
250+
lifecycle.StartBeforeFixture(new());
251+
lifecycle.StopFixture();
252+
lifecycle.StopTestContainer();
253+
254+
lifecycle.WriteTestContainer();
255+
256+
Assert.That(writer.testContainers, Has.One.Items);
257+
}
258+
259+
[Test]
260+
public void ContainerWithAfterFixtureIsWritten()
261+
{
262+
var writer = new InMemoryResultsWriter();
263+
var lifecycle = new AllureLifecycle(_ => writer);
264+
lifecycle.StartTestContainer(new() { uuid = "foo" });
265+
lifecycle.StartAfterFixture(new());
266+
lifecycle.StopFixture();
267+
lifecycle.StopTestContainer();
268+
269+
lifecycle.WriteTestContainer();
270+
271+
Assert.That(writer.testContainers, Has.One.Items);
272+
}
230273
}
231274
}

Allure.Net.Commons/AllureLifecycle.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Collections.ObjectModel;
44
using System.IO;
5+
using System.Linq;
56
using System.Threading;
67
using Allure.Net.Commons.Configuration;
78
using Allure.Net.Commons.Functions;
@@ -264,7 +265,10 @@ public virtual AllureLifecycle WriteTestContainer()
264265
{
265266
var container = this.Context.CurrentContainer;
266267
this.UpdateContext(c => c.WithNoLastContainer());
267-
this.writer.Write(container);
268+
if (container.befores.Any() || container.afters.Any())
269+
{
270+
this.writer.Write(container);
271+
}
268272
return this;
269273
}
270274

0 commit comments

Comments
 (0)