@@ -35,6 +35,22 @@ public static void assertTraces(
3535 assertTraces (writer , expectedSize , false , SORT_TRACES_BY_START , spec );
3636 }
3737
38+ // Groovy-friendly overload: allow passing a Closure and set delegate to ListWriterAssert
39+ public static void assertTraces (
40+ ListWriter writer , int expectedSize , groovy .lang .Closure <?> spec ) {
41+ assertTraces (
42+ writer ,
43+ expectedSize ,
44+ false ,
45+ SORT_TRACES_BY_START ,
46+ (Consumer <ListWriterAssert >)
47+ (asserter ) -> {
48+ spec .setDelegate (asserter );
49+ spec .setResolveStrategy (groovy .lang .Closure .DELEGATE_FIRST );
50+ spec .call (asserter );
51+ });
52+ }
53+
3854 public static void assertTraces (
3955 ListWriter writer ,
4056 int expectedSize ,
@@ -43,6 +59,25 @@ public static void assertTraces(
4359 assertTraces (writer , expectedSize , ignoreAdditionalTraces , SORT_TRACES_BY_START , spec );
4460 }
4561
62+ // Groovy-friendly overload with ignoreAdditionalTraces
63+ public static void assertTraces (
64+ ListWriter writer ,
65+ int expectedSize ,
66+ boolean ignoreAdditionalTraces ,
67+ groovy .lang .Closure <?> spec ) {
68+ assertTraces (
69+ writer ,
70+ expectedSize ,
71+ ignoreAdditionalTraces ,
72+ SORT_TRACES_BY_START ,
73+ (Consumer <ListWriterAssert >)
74+ (asserter ) -> {
75+ spec .setDelegate (asserter );
76+ spec .setResolveStrategy (groovy .lang .Closure .DELEGATE_FIRST );
77+ spec .call (asserter );
78+ });
79+ }
80+
4681 public static void assertTraces (
4782 ListWriter writer ,
4883 int expectedSize ,
@@ -113,6 +148,26 @@ public static void assertTraces(
113148 }
114149 }
115150
151+ // Groovy-friendly overload with explicit trace sorter
152+ public static void assertTraces (
153+ ListWriter writer ,
154+ int expectedSize ,
155+ boolean ignoreAdditionalTraces ,
156+ Comparator <List <DDSpan >> traceSorter ,
157+ groovy .lang .Closure <?> spec ) {
158+ assertTraces (
159+ writer ,
160+ expectedSize ,
161+ ignoreAdditionalTraces ,
162+ traceSorter ,
163+ (Consumer <ListWriterAssert >)
164+ (asserter ) -> {
165+ spec .setDelegate (asserter );
166+ spec .setResolveStrategy (groovy .lang .Closure .DELEGATE_FIRST );
167+ spec .call (asserter );
168+ });
169+ }
170+
116171 public void sortSpansByStart () {
117172 this .traces =
118173 traces .stream ()
@@ -133,10 +188,36 @@ public void trace(int expectedSize, Consumer<TraceAssert> spec) {
133188 trace (expectedSize , false , spec );
134189 }
135190
191+ // Groovy-friendly overload: allow passing a Closure and set delegate to TraceAssert
192+ public void trace (int expectedSize , groovy .lang .Closure <?> spec ) {
193+ trace (
194+ expectedSize ,
195+ false ,
196+ (Consumer <TraceAssert >)
197+ (asserter ) -> {
198+ spec .setDelegate (asserter );
199+ spec .setResolveStrategy (groovy .lang .Closure .DELEGATE_FIRST );
200+ spec .call (asserter );
201+ });
202+ }
203+
136204 public void trace (int expectedSize , boolean sortByName , Consumer <TraceAssert > spec ) {
137205 trace (expectedSize , sortByName ? TraceAssert .NAME_COMPARATOR : null , spec );
138206 }
139207
208+ // Groovy-friendly overload with sortByName flag
209+ public void trace (int expectedSize , boolean sortByName , groovy .lang .Closure <?> spec ) {
210+ trace (
211+ expectedSize ,
212+ sortByName ? TraceAssert .NAME_COMPARATOR : null ,
213+ (Consumer <TraceAssert >)
214+ (asserter ) -> {
215+ spec .setDelegate (asserter );
216+ spec .setResolveStrategy (groovy .lang .Closure .DELEGATE_FIRST );
217+ spec .call (asserter );
218+ });
219+ }
220+
140221 public void trace (int expectedSize , Comparator <DDSpan > sorter , Consumer <TraceAssert > spec ) {
141222 int index = traceAssertCount .getAndIncrement ();
142223 if (index >= size ) {
@@ -149,6 +230,20 @@ public void trace(int expectedSize, Comparator<DDSpan> sorter, Consumer<TraceAss
149230 assertTrace (trace (index ), expectedSize , sorter , spec );
150231 }
151232
233+ // Groovy-friendly overload with explicit sorter
234+ public void trace (
235+ int expectedSize , Comparator <DDSpan > sorter , groovy .lang .Closure <?> spec ) {
236+ trace (
237+ expectedSize ,
238+ sorter ,
239+ (Consumer <TraceAssert >)
240+ (asserter ) -> {
241+ spec .setDelegate (asserter );
242+ spec .setResolveStrategy (groovy .lang .Closure .DELEGATE_FIRST );
243+ spec .call (asserter );
244+ });
245+ }
246+
152247 public void assertTracesAllVerified () {
153248 if (assertedIndexes .size () != size ) {
154249 throw new AssertionError ("Not all traces were verified." );
0 commit comments