Emoji markers, markdown bold inside code comments, and em-dashes are gone from source comments, string literals, scripts, Gradle files and the markdown docs. Counted before and after: emoji markers 2680 -> 1 (the emoji picker's own list, which is the feature) em-dashes 2490 -> 9 (table placeholders and fenced code) Two warning glyphs in user-facing strings in ChatScreens.kt are removed as well; the sentences say the same thing without them. Two backtick test names carried an em-dash and now carry a comma. Nothing else changed. 1208 tests pass, counted from the result XML. The three obfs4 interop tests are opted out with OBFS4_INTEROP_OPTOUT=1 for this run, as their own message instructs when no bridge is set up. CONTRIBUTING gets a four-line rule so it does not grow back. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
52 lines
1.9 KiB
Kotlin
52 lines
1.9 KiB
Kotlin
plugins {
|
|
kotlin("jvm")
|
|
jacoco
|
|
}
|
|
|
|
repositories { mavenCentral() }
|
|
|
|
dependencies {
|
|
// The whole reason this port is small. The Swift implementation had
|
|
// to hand-write SipHash-2-4, XSalsa20 and Poly1305 because CryptoKit
|
|
// exposes none of them, and its own field arithmetic because Apple gives
|
|
// nothing below X25519. BouncyCastle has all four, vetted and
|
|
// constant-time where it matters: `X25519Field` (including `sqrtRatioVar`,
|
|
// exactly the primitive Elligator2 needs), `XSalsa20Engine`, `Poly1305`.
|
|
//
|
|
// That means the two clients do NOT share an implementation. They share
|
|
// the vectors and the live interop harness, which is what actually keeps
|
|
// them honest, see `Obfs4VectorTest`.
|
|
//
|
|
// Already a dependency of `:engine`, for the same class of reason: taking a
|
|
// vetted constant-time implementation over hand-rolling arithmetic on a
|
|
// secret scalar.
|
|
implementation("org.bouncycastle:bcprov-jdk18on:1.79")
|
|
|
|
// compileOnly: the transport must not drag OkHttp into anything that
|
|
// does not already have it. `:client` supplies the real one.
|
|
compileOnly("com.squareup.okhttp3:okhttp:4.12.0")
|
|
testImplementation("com.squareup.okhttp3:okhttp:4.12.0")
|
|
testImplementation(kotlin("test"))
|
|
testImplementation("org.json:json:20240303")
|
|
}
|
|
|
|
kotlin {
|
|
compilerOptions {
|
|
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
|
|
}
|
|
}
|
|
java {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
tasks.test {
|
|
useJUnitPlatform()
|
|
testLogging { events("passed", "failed", "skipped"); showStandardStreams = true }
|
|
}
|
|
tasks.withType<Test>().configureEach { finalizedBy(tasks.named("jacocoTestReport")) }
|
|
tasks.named<JacocoReport>("jacocoTestReport") {
|
|
dependsOn(tasks.named("test"))
|
|
reports { xml.required.set(true); html.required.set(true) }
|
|
}
|