From d6732a5b75db5eb650ba7fd0a9733eef4549217b Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Tue, 28 Jul 2026 19:50:25 +0300 Subject: [PATCH 1/3] ci: require code owner review Signed-off-by: kriptoburak --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..78d77bb --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @kriptoburak @furkanerday From 9fd45bd56f0a3f1f9bffb7d6ede300415e199d78 Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Tue, 28 Jul 2026 19:55:40 +0300 Subject: [PATCH 2/3] docs: license code owner policy Signed-off-by: kriptoburak --- .github/CODEOWNERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 78d77bb..cfb638b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,4 @@ +# SPDX-FileCopyrightText: 2026 Xquik Contributors +# SPDX-License-Identifier: Apache-2.0 + * @kriptoburak @furkanerday From aae608f0941469ba5f3a0ae7f65042055b7d9bdb Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Tue, 28 Jul 2026 20:52:03 +0300 Subject: [PATCH 3/3] test: expose Jazzer fuzzing to Scorecard Signed-off-by: kriptoburak --- .../kotlin/x-twitter-scraper.java.gradle.kts | 5 +++++ .../kotlin/x-twitter-scraper.kotlin.gradle.kts | 8 ++++++++ .../api/core/http/RetryAfterFuzzInput.java | 16 ++++++++++++++++ .../api/core/http/RetryAfterFuzzTest.kt | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 x-twitter-scraper-java-core/src/test/java/com/x_twitter_scraper/api/core/http/RetryAfterFuzzInput.java diff --git a/buildSrc/src/main/kotlin/x-twitter-scraper.java.gradle.kts b/buildSrc/src/main/kotlin/x-twitter-scraper.java.gradle.kts index c4b6193..45e9f2a 100644 --- a/buildSrc/src/main/kotlin/x-twitter-scraper.java.gradle.kts +++ b/buildSrc/src/main/kotlin/x-twitter-scraper.java.gradle.kts @@ -32,6 +32,11 @@ tasks.withType().configureEach { options.release.set(8) } +tasks.named("compileTestJava") { + // Tests use Java 26 dependencies and never enter published artifacts. + options.release.set(26) +} + tasks.withType().configureEach { isPreserveFileTimestamps = false isReproducibleFileOrder = true diff --git a/buildSrc/src/main/kotlin/x-twitter-scraper.kotlin.gradle.kts b/buildSrc/src/main/kotlin/x-twitter-scraper.kotlin.gradle.kts index 8164f82..803ee7e 100644 --- a/buildSrc/src/main/kotlin/x-twitter-scraper.kotlin.gradle.kts +++ b/buildSrc/src/main/kotlin/x-twitter-scraper.kotlin.gradle.kts @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.JvmDefaultMode import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("x-twitter-scraper.java") @@ -42,6 +43,13 @@ tasks.withType().configureEach { inputs.property("skipMockTests", System.getenv("SKIP_MOCK_TESTS")).optional(true) } +tasks.named("compileTestKotlin") { + compilerOptions { + freeCompilerArgs.set(emptyList()) + jvmTarget.set(JvmTarget.JVM_26) + } +} + val ktfmt = configurations.create("ktfmt") dependencies { ktfmt("com.facebook:ktfmt:0.64") diff --git a/x-twitter-scraper-java-core/src/test/java/com/x_twitter_scraper/api/core/http/RetryAfterFuzzInput.java b/x-twitter-scraper-java-core/src/test/java/com/x_twitter_scraper/api/core/http/RetryAfterFuzzInput.java new file mode 100644 index 0000000..bac2ccf --- /dev/null +++ b/x-twitter-scraper-java-core/src/test/java/com/x_twitter_scraper/api/core/http/RetryAfterFuzzInput.java @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2026 Xquik contributors +// +// SPDX-License-Identifier: Apache-2.0 + +package com.x_twitter_scraper.api.core.http; + +import com.code_intelligence.jazzer.api.FuzzedDataProvider; + +final class RetryAfterFuzzInput { + + private RetryAfterFuzzInput() {} + + static String consume(FuzzedDataProvider data) { + return data.consumeRemainingAsString(); + } +} diff --git a/x-twitter-scraper-java-core/src/test/kotlin/com/x_twitter_scraper/api/core/http/RetryAfterFuzzTest.kt b/x-twitter-scraper-java-core/src/test/kotlin/com/x_twitter_scraper/api/core/http/RetryAfterFuzzTest.kt index 9e9de98..682b5e7 100644 --- a/x-twitter-scraper-java-core/src/test/kotlin/com/x_twitter_scraper/api/core/http/RetryAfterFuzzTest.kt +++ b/x-twitter-scraper-java-core/src/test/kotlin/com/x_twitter_scraper/api/core/http/RetryAfterFuzzTest.kt @@ -16,7 +16,7 @@ internal class RetryAfterFuzzTest { @FuzzTest(maxDuration = "30s") fun retryAfterDelayRemainsBounded(data: FuzzedDataProvider) { - val retryAfter = data.consumeRemainingAsString() + val retryAfter = RetryAfterFuzzInput.consume(data) val sleeper = RecordingRetrySleeper() val transport = SequenceHttpClient(