From 2842132836733062fe4bf69d567e9172bf9fe3ea Mon Sep 17 00:00:00 2001 From: Pavel Ratushny <161594096+pratushnyi@users.noreply.github.com> Date: Thu, 25 Jun 2026 12:00:19 +0400 Subject: [PATCH 1/7] chore: bump jackson to 2.22.0 (via #1300) --- .idea/vcs.xml | 3 +++ build.gradle.kts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 95443a122..d154cb226 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -10,4 +10,7 @@ + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 89433e24a..de3397b30 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -147,7 +147,7 @@ configure(libs) { dependencyManagement { imports { - mavenBom("com.fasterxml.jackson:jackson-bom:2.21.1") + mavenBom("com.fasterxml.jackson:jackson-bom:2.22.0") mavenBom("org.junit:junit-bom:5.10.3") } dependencies { From 983747ee5f97ce620bcc3f62696e28b63912f6df Mon Sep 17 00:00:00 2001 From: qameta-ci Date: Thu, 25 Jun 2026 08:08:55 +0000 Subject: [PATCH 2/7] release 2.35.3 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5c3b09087..b0819da9e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.35.2 +version=2.35.3 org.gradle.daemon=true org.gradle.parallel=true From c38740371039c17699832fd081cb0a668a576024 Mon Sep 17 00:00:00 2001 From: Pavel Ratushny <161594096+pratushnyi@users.noreply.github.com> Date: Thu, 23 Jul 2026 14:35:18 +0400 Subject: [PATCH 3/7] chore: bump jackson to 2.22.1 (via #1343) --- allure-grpc/build.gradle.kts | 2 +- build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/allure-grpc/build.gradle.kts b/allure-grpc/build.gradle.kts index 104a8e43f..bee1b6518 100644 --- a/allure-grpc/build.gradle.kts +++ b/allure-grpc/build.gradle.kts @@ -10,7 +10,7 @@ val agent: Configuration by configurations.creating val grpcVersion = "1.79.0" val protobufVersion = "4.33.5" -val jacksonVersion = "2.17.2" +val jacksonVersion = "2.22" dependencies { agent("org.aspectj:aspectjweaver") diff --git a/build.gradle.kts b/build.gradle.kts index de3397b30..16676cfdc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -147,7 +147,7 @@ configure(libs) { dependencyManagement { imports { - mavenBom("com.fasterxml.jackson:jackson-bom:2.22.0") + mavenBom("com.fasterxml.jackson:jackson-bom:2.22.1") mavenBom("org.junit:junit-bom:5.10.3") } dependencies { From 5324352a330725a78a551d7094dc9d1c0fc70907 Mon Sep 17 00:00:00 2001 From: qameta-ci Date: Thu, 23 Jul 2026 10:37:38 +0000 Subject: [PATCH 4/7] release 2.35.4 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b0819da9e..5cb84fd2d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.35.3 +version=2.35.4 org.gradle.daemon=true org.gradle.parallel=true From e3bbe8b5a798f43017f24685cd85187b93c20450 Mon Sep 17 00:00:00 2001 From: Dmitry Baev Date: Thu, 3 Sep 2026 13:15:07 +0100 Subject: [PATCH 5/7] prevent assertion aspects from crashing on missing optional types (via #1415) --- .gitignore | 3 + allure-assertj/build.gradle.kts | 5 ++ .../qameta/allure/assertj/AllureAspectJ.java | 27 +++---- .../assertj/fixture/MissingOptionalType.java | 22 ++++++ .../allure/assertj/AllureAspectJTest.java | 28 +++++++ .../fixture/MissingOptionalTypeFixture.java | 73 +++++++++++++++++++ allure-jupiter-assert/build.gradle.kts | 5 ++ .../jupiterassert/AllureJupiterAssert.java | 4 +- .../fixture/MissingOptionalType.java | 22 ++++++ .../AllureJupiterAssertTest.java | 50 +++++++++++++ .../fixture/MissingOptionalTypeFixture.java | 73 +++++++++++++++++++ gradle.properties | 2 +- 12 files changed, 294 insertions(+), 20 deletions(-) create mode 100644 allure-assertj/src/missingDependency/java/io/qameta/allure/assertj/fixture/MissingOptionalType.java create mode 100644 allure-assertj/src/test/java/io/qameta/allure/assertj/fixture/MissingOptionalTypeFixture.java create mode 100644 allure-jupiter-assert/src/missingDependency/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalType.java create mode 100644 allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalTypeFixture.java diff --git a/.gitignore b/.gitignore index b85107a90..fc9f1bb0d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ build out .gradletasknamecache +#AspectJ crash dumps +ajcore.*.txt + #IDEA Files .idea/* !.idea/vcs.xml diff --git a/allure-assertj/build.gradle.kts b/allure-assertj/build.gradle.kts index e38cca0ea..7ee4768c7 100644 --- a/allure-assertj/build.gradle.kts +++ b/allure-assertj/build.gradle.kts @@ -1,12 +1,17 @@ description = "Allure AssertJ Integration" +// Compile the optional type used by the regression fixture without adding it to the test runtime. +val missingDependency by sourceSets.creating + dependencies { api(project(":allure-java-commons")) compileOnly("org.aspectj:aspectjrt") compileOnly("org.assertj:assertj-core") + testImplementation("org.aspectj:aspectjweaver") testImplementation("org.assertj:assertj-core") testImplementation("org.junit.jupiter:junit-jupiter-api") testImplementation("org.slf4j:slf4j-simple") + testCompileOnly(missingDependency.output) testImplementation(project(":allure-java-commons-test")) testImplementation(project(":allure-junit-platform")) testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") diff --git a/allure-assertj/src/main/java/io/qameta/allure/assertj/AllureAspectJ.java b/allure-assertj/src/main/java/io/qameta/allure/assertj/AllureAspectJ.java index 33e2a3de6..5e080ce3d 100644 --- a/allure-assertj/src/main/java/io/qameta/allure/assertj/AllureAspectJ.java +++ b/allure-assertj/src/main/java/io/qameta/allure/assertj/AllureAspectJ.java @@ -51,10 +51,10 @@ protected AllureLifecycle initialValue() { @Pointcut( "(" - + "call(public static * org.assertj.core.api.Assertions*.assertThat*(..))" - + " || call(public static * org.assertj.core.api.BDDAssertions*.then*(..))" - + " || call(public * org.assertj.core.api.*SoftAssertionsProvider+.assertThat*(..))" - + " || call(public * org.assertj.core.api.*SoftAssertionsProvider+.then*(..))" + + "execution(public static * org.assertj.core.api.Assertions*.assertThat*(..))" + + " || execution(public static * org.assertj.core.api.BDDAssertions*.then*(..))" + + " || execution(public * org.assertj.core.api.*SoftAssertionsProvider+.assertThat*(..))" + + " || execution(public * org.assertj.core.api.*SoftAssertionsProvider+.then*(..))" + ")" ) @@ -67,11 +67,12 @@ public void assertFactoryCall() { @Pointcut( "(" - + "call(public * org.assertj.core.api.AbstractAssert+.*(..))" - + " || call(public * org.assertj.core.api.Assert+.*(..))" - + " || call(public * org.assertj.core.api.Descriptable+.*(..))" + + "execution(public * org.assertj.core.api.AbstractAssert+.*(..))" + + " || execution(public * org.assertj.core.api.Assert+.*(..))" + + " || execution(public * org.assertj.core.api.Descriptable+.*(..))" + ")" + " && target(assertion)" + + " && !execution(* org.assertj.core.api.AssertJProxySetup.*(..))" ) /** @@ -83,16 +84,8 @@ public void assertOperationCall(final AbstractAssert assertion) { //pointcut body, should be empty } - /** - * Handles the user code call callback. - */ - @Pointcut("!within(org.assertj..*) && !within(io.qameta.allure.assertj.AllureAspectJ)") - public void userCodeCall() { - //pointcut body, should be empty - } - @AfterReturning( - pointcut = "assertFactoryCall() && userCodeCall()", + pointcut = "assertFactoryCall()", returning = "result" ) @@ -119,7 +112,7 @@ public void logAssertCreation(final JoinPoint joinPoint, final Object result) { * @return the log assert operation * @throws Throwable if the underlying framework operation fails */ - @Around("assertOperationCall(assertion) && userCodeCall()") + @Around("assertOperationCall(assertion)") public Object logAssertOperation(final ProceedingJoinPoint joinPoint, final AbstractAssert assertion) throws Throwable { diff --git a/allure-assertj/src/missingDependency/java/io/qameta/allure/assertj/fixture/MissingOptionalType.java b/allure-assertj/src/missingDependency/java/io/qameta/allure/assertj/fixture/MissingOptionalType.java new file mode 100644 index 000000000..ddd4209c5 --- /dev/null +++ b/allure-assertj/src/missingDependency/java/io/qameta/allure/assertj/fixture/MissingOptionalType.java @@ -0,0 +1,22 @@ +/* + * Copyright 2016-2026 Qameta Software Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.qameta.allure.assertj.fixture; + +public interface MissingOptionalType extends Runnable { + + String getValue(); + +} diff --git a/allure-assertj/src/test/java/io/qameta/allure/assertj/AllureAspectJTest.java b/allure-assertj/src/test/java/io/qameta/allure/assertj/AllureAspectJTest.java index 377e7a6b1..2c2d70ac8 100644 --- a/allure-assertj/src/test/java/io/qameta/allure/assertj/AllureAspectJTest.java +++ b/allure-assertj/src/test/java/io/qameta/allure/assertj/AllureAspectJTest.java @@ -15,6 +15,7 @@ */ package io.qameta.allure.assertj; +import io.qameta.allure.assertj.fixture.MissingOptionalTypeFixture; import io.qameta.allure.model.Parameter; import io.qameta.allure.model.Status; import io.qameta.allure.model.StatusDetails; @@ -22,6 +23,7 @@ import io.qameta.allure.model.TestResult; import io.qameta.allure.test.AllureFeatures; import io.qameta.allure.test.AllureResults; +import org.aspectj.weaver.Dump; import org.assertj.core.api.AbstractStringAssert; import org.assertj.core.api.InstanceOfAssertFactories; import org.assertj.core.api.SoftAssertions; @@ -35,9 +37,35 @@ import static io.qameta.allure.test.RunUtils.runWithinTestContext; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.tuple; class AllureAspectJTest { + @Test + void shouldNotInspectClassesWithMissingOptionalTypes() { + final ClassLoader classLoader = MissingOptionalTypeFixture.class.getClassLoader(); + assertThatExceptionOfType(ClassNotFoundException.class) + .isThrownBy( + () -> Class.forName( + MissingOptionalTypeFixture.MISSING_TYPE_NAME, + false, + classLoader + ) + ); + + final String dumpBefore = Dump.getLastDumpFileName(); + + final Class fixtureType = MissingOptionalTypeFixture.loadClassWithMissingTypeSignature(); + final String dumpAfter = Dump.getLastDumpFileName(); + + assertThatExceptionOfType(TypeNotPresentException.class) + .isThrownBy(fixtureType::getGenericSuperclass) + .withMessageContaining(MissingOptionalTypeFixture.MISSING_TYPE_NAME); + assertThat(dumpAfter) + .as("last AspectJ dump file") + .isEqualTo(dumpBefore); + } + @AllureFeatures.Steps @Test void shouldCreateSemanticChainForScalarAssert() { diff --git a/allure-assertj/src/test/java/io/qameta/allure/assertj/fixture/MissingOptionalTypeFixture.java b/allure-assertj/src/test/java/io/qameta/allure/assertj/fixture/MissingOptionalTypeFixture.java new file mode 100644 index 000000000..a39a9c164 --- /dev/null +++ b/allure-assertj/src/test/java/io/qameta/allure/assertj/fixture/MissingOptionalTypeFixture.java @@ -0,0 +1,73 @@ +/* + * Copyright 2016-2026 Qameta Software Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.qameta.allure.assertj.fixture; + +import java.util.function.Function; + +/** + * Loads a bounded generic subclass whose type argument is deliberately absent at runtime. + */ +public final class MissingOptionalTypeFixture { + + public static final String MISSING_TYPE_NAME = "io.qameta.allure.assertj.fixture.MissingOptionalType"; + + private MissingOptionalTypeFixture() { + } + + public static Class loadClassWithMissingTypeSignature() { + return MissingTypeProperties.class; + } + + private interface TypeProperties { + + Class getType(); + + String get(T instance); + + } + + private static class MappedProperties implements TypeProperties { + + @Override + public Class getType() { + return null; + } + + protected void add(final Function getter) { + //fixture method, should be empty + } + + @Override + public String get(final T instance) { + return null; + } + + } + + private static final class MissingTypeProperties extends MappedProperties { + + @Override + public Class getType() { + return null; + } + + private MissingTypeProperties() { + add(MissingOptionalType::getValue); + } + + } + +} diff --git a/allure-jupiter-assert/build.gradle.kts b/allure-jupiter-assert/build.gradle.kts index b0c9d6dd5..05981bc14 100644 --- a/allure-jupiter-assert/build.gradle.kts +++ b/allure-jupiter-assert/build.gradle.kts @@ -1,13 +1,18 @@ description = "Allure Jupiter Assertions Integration" +// Compile the optional type used by the regression fixture without adding it to the test runtime. +val missingDependency by sourceSets.creating + dependencies { api(project(":allure-jupiter")) compileOnly("org.aspectj:aspectjrt") compileOnly("org.junit.jupiter:junit-jupiter-api") testAnnotationProcessor(project(":allure-descriptions-javadoc")) + testImplementation("org.aspectj:aspectjweaver") testImplementation("org.assertj:assertj-core") testImplementation("org.junit.jupiter:junit-jupiter-api") testImplementation("org.slf4j:slf4j-simple") + testCompileOnly(missingDependency.output) testImplementation(project(":allure-java-commons-test")) testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") } diff --git a/allure-jupiter-assert/src/main/java/io/qameta/allure/jupiterassert/AllureJupiterAssert.java b/allure-jupiter-assert/src/main/java/io/qameta/allure/jupiterassert/AllureJupiterAssert.java index fbc0ba95e..afadc78ac 100644 --- a/allure-jupiter-assert/src/main/java/io/qameta/allure/jupiterassert/AllureJupiterAssert.java +++ b/allure-jupiter-assert/src/main/java/io/qameta/allure/jupiterassert/AllureJupiterAssert.java @@ -58,7 +58,7 @@ protected AllureLifecycle initialValue() { /** * Handles the any assert callback. */ - @Pointcut("call(void org.junit.jupiter.api.Assertions.*(..)) || throwable()") + @Pointcut("execution(void org.junit.jupiter.api.Assertions.*(..)) || throwable()") public void anyAssert() { } @@ -66,7 +66,7 @@ public void anyAssert() { /** * Handles the throwable callback. */ - @Pointcut("call(Throwable org.junit.jupiter.api.Assertions.*(..))") + @Pointcut("execution(Throwable org.junit.jupiter.api.Assertions.*(..))") public void throwable() { } diff --git a/allure-jupiter-assert/src/missingDependency/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalType.java b/allure-jupiter-assert/src/missingDependency/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalType.java new file mode 100644 index 000000000..105660f00 --- /dev/null +++ b/allure-jupiter-assert/src/missingDependency/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalType.java @@ -0,0 +1,22 @@ +/* + * Copyright 2016-2026 Qameta Software Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.qameta.allure.jupiterassert.fixture; + +public interface MissingOptionalType extends Runnable { + + String getValue(); + +} diff --git a/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/AllureJupiterAssertTest.java b/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/AllureJupiterAssertTest.java index 1da892a97..01a75219a 100644 --- a/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/AllureJupiterAssertTest.java +++ b/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/AllureJupiterAssertTest.java @@ -15,17 +15,47 @@ */ package io.qameta.allure.jupiterassert; +import io.qameta.allure.jupiterassert.fixture.MissingOptionalTypeFixture; +import io.qameta.allure.model.Status; import io.qameta.allure.model.StepResult; import io.qameta.allure.model.TestResult; import io.qameta.allure.test.AllureResults; +import org.aspectj.weaver.Dump; import org.junit.jupiter.api.Test; import static io.qameta.allure.test.RunUtils.runWithinTestContext; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; class AllureJupiterAssertTest { + @Test + void shouldNotInspectClassesWithMissingOptionalTypes() { + final ClassLoader classLoader = MissingOptionalTypeFixture.class.getClassLoader(); + assertThatExceptionOfType(ClassNotFoundException.class) + .isThrownBy( + () -> Class.forName( + MissingOptionalTypeFixture.MISSING_TYPE_NAME, + false, + classLoader + ) + ); + + final String dumpBefore = Dump.getLastDumpFileName(); + + final Class fixtureType = MissingOptionalTypeFixture.loadClassWithMissingTypeSignature(); + final String dumpAfter = Dump.getLastDumpFileName(); + + assertThatExceptionOfType(TypeNotPresentException.class) + .isThrownBy(fixtureType::getGenericSuperclass) + .withMessageContaining(MissingOptionalTypeFixture.MISSING_TYPE_NAME); + assertThat(dumpAfter) + .as("last AspectJ dump file") + .isEqualTo(dumpBefore); + } + @Test void shouldHandleAssertEquals() { final AllureResults results = runWithinTestContext( @@ -38,4 +68,24 @@ void shouldHandleAssertEquals() { .extracting(StepResult::getName) .containsExactly("assert 'expectedString' Equals 'actualString'"); } + + @Test + void shouldHandleAssertThrows() { + final AllureResults results = runWithinTestContext( + () -> assertThrows(IllegalStateException.class, () -> { + throw new IllegalStateException("expected"); + }), + AllureJupiterAssert::setLifecycle + ); + + assertThat(results.getTestResults()) + .flatExtracting(TestResult::getSteps) + .singleElement() + .satisfies(step -> { + assertThat(step.getName()) + .startsWith("assert 'class java.lang.IllegalStateException' Throws '"); + assertThat(step.getStatus()) + .isEqualTo(Status.PASSED); + }); + } } diff --git a/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalTypeFixture.java b/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalTypeFixture.java new file mode 100644 index 000000000..6008ba628 --- /dev/null +++ b/allure-jupiter-assert/src/test/java/io/qameta/allure/jupiterassert/fixture/MissingOptionalTypeFixture.java @@ -0,0 +1,73 @@ +/* + * Copyright 2016-2026 Qameta Software Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.qameta.allure.jupiterassert.fixture; + +import java.util.function.Function; + +/** + * Loads a bounded generic subclass whose type argument is deliberately absent at runtime. + */ +public final class MissingOptionalTypeFixture { + + public static final String MISSING_TYPE_NAME = "io.qameta.allure.jupiterassert.fixture.MissingOptionalType"; + + private MissingOptionalTypeFixture() { + } + + public static Class loadClassWithMissingTypeSignature() { + return MissingTypeProperties.class; + } + + private interface TypeProperties { + + Class getType(); + + String get(T instance); + + } + + private static class MappedProperties implements TypeProperties { + + @Override + public Class getType() { + return null; + } + + protected void add(final Function getter) { + //fixture method, should be empty + } + + @Override + public String get(final T instance) { + return null; + } + + } + + private static final class MissingTypeProperties extends MappedProperties { + + @Override + public Class getType() { + return null; + } + + private MissingTypeProperties() { + add(MissingOptionalType::getValue); + } + + } + +} diff --git a/gradle.properties b/gradle.properties index 5cb84fd2d..2668e71ce 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.35.4 +version=2.35.5-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true From 8fc77b601516c7447a51b048ffad8fed5c7936cd Mon Sep 17 00:00:00 2001 From: qameta-ci Date: Fri, 4 Sep 2026 16:52:20 +0000 Subject: [PATCH 6/7] release 2.35.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2668e71ce..87318df67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.35.5-SNAPSHOT +version=2.35.5 org.gradle.daemon=true org.gradle.parallel=true From 9492d27c9cb8dc5866c0dd219bea38d8f7b9dd30 Mon Sep 17 00:00:00 2001 From: qameta-ci Date: Fri, 4 Sep 2026 16:52:22 +0000 Subject: [PATCH 7/7] set next development version 2.36 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 87318df67..b1ff4bb13 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.35.5 +version=2.36-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true