Merge pull request #5638 from element-hq/feature/bma/upgradeKtLint
Upgrade ktlint to 1.7.1 and ensure Renovate will upgrade the version
This commit is contained in:
@@ -26,7 +26,11 @@ ktlint_standard_annotation = disabled
|
||||
ktlint_standard_parameter-list-wrapping = disabled
|
||||
ktlint_standard_indent = disabled
|
||||
ktlint_standard_blank-line-before-declaration = disabled
|
||||
ktlint_function_naming_ignore_when_annotated_with=Composable
|
||||
ktlint_function_naming_ignore_when_annotated_with = Composable
|
||||
# Added when upgrading to 1.7.1
|
||||
ktlint_standard_function-expression-body = disabled
|
||||
ktlint_standard_chain-method-continuation = disabled
|
||||
ktlint_standard_class-signature = disabled
|
||||
|
||||
[*.java]
|
||||
ij_java_align_consecutive_assignments = false
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import org.gradle.accessors.dm.LibrariesForLibs
|
||||
|
||||
/*
|
||||
* Copyright 2022-2024 New Vector Ltd.
|
||||
*
|
||||
@@ -27,6 +29,8 @@ tasks.register<Delete>("clean").configure {
|
||||
delete(rootProject.layout.buildDirectory)
|
||||
}
|
||||
|
||||
private val ktLintVersion = the<LibrariesForLibs>().versions.ktlint.get()
|
||||
|
||||
allprojects {
|
||||
// Detekt
|
||||
apply {
|
||||
@@ -56,14 +60,12 @@ allprojects {
|
||||
|
||||
// See https://github.com/JLLeitschuh/ktlint-gradle#configuration
|
||||
configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {
|
||||
// See https://github.com/pinterest/ktlint/releases/
|
||||
// TODO Regularly check for new version here ^
|
||||
version.set("1.1.1")
|
||||
android.set(true)
|
||||
ignoreFailures.set(false)
|
||||
enableExperimentalRules.set(true)
|
||||
version = ktLintVersion
|
||||
android = true
|
||||
ignoreFailures = false
|
||||
enableExperimentalRules = true
|
||||
// display the corresponding rule
|
||||
verbose.set(true)
|
||||
verbose = true
|
||||
reporters {
|
||||
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.PLAIN)
|
||||
// To have XML report for Danger
|
||||
|
||||
@@ -87,8 +87,10 @@ class HomeFlowNode(
|
||||
analyticsService.screen(MobileScreen(screenName = MobileScreen.ScreenName.Home))
|
||||
}
|
||||
)
|
||||
whenChildAttached { commonLifecycle: Lifecycle,
|
||||
changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy ->
|
||||
whenChildAttached {
|
||||
commonLifecycle: Lifecycle,
|
||||
changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy,
|
||||
->
|
||||
commonLifecycle.coroutineScope.launch {
|
||||
changeRoomMemberRolesNode.waitForRoleChanged()
|
||||
withContext(NonCancellable) {
|
||||
|
||||
@@ -34,14 +34,14 @@ class DefaultDeclineInviteTest {
|
||||
private val notificationCleaner =
|
||||
FakeNotificationCleaner(clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda)
|
||||
|
||||
private val successLeaveRoomLambda = lambdaRecorder<Result<Unit>> { -> Result.success(Unit) }
|
||||
private val successLeaveRoomLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
|
||||
private val successIgnoreUserLambda =
|
||||
lambdaRecorder<UserId, Result<Unit>> { _ -> Result.success(Unit) }
|
||||
private val successReportRoomLambda =
|
||||
lambdaRecorder<String?, Result<Unit>> { _ -> Result.success(Unit) }
|
||||
|
||||
private val failureLeaveRoomLambda =
|
||||
lambdaRecorder<Result<Unit>> { -> Result.failure(Exception("Leave room error")) }
|
||||
lambdaRecorder<Result<Unit>> { Result.failure(Exception("Leave room error")) }
|
||||
private val failureIgnoreUserLambda =
|
||||
lambdaRecorder<UserId, Result<Unit>> { _ -> Result.failure(Exception("Ignore user error")) }
|
||||
private val failureReportRoomLambda =
|
||||
|
||||
@@ -19,12 +19,12 @@ import org.junit.Test
|
||||
|
||||
class DefaultReportRoomTest {
|
||||
private val roomId = A_ROOM_ID
|
||||
private val successLeaveRoomLambda = lambdaRecorder<Result<Unit>> { -> Result.success(Unit) }
|
||||
private val successLeaveRoomLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
|
||||
private val successReportRoomLambda =
|
||||
lambdaRecorder<String?, Result<Unit>> { _ -> Result.success(Unit) }
|
||||
|
||||
private val failureLeaveRoomLambda =
|
||||
lambdaRecorder<Result<Unit>> { -> Result.failure(Exception("Leave room error")) }
|
||||
lambdaRecorder<Result<Unit>> { Result.failure(Exception("Leave room error")) }
|
||||
private val failureReportRoomLambda =
|
||||
lambdaRecorder<String?, Result<Unit>> { _ -> Result.failure(Exception("Report room error")) }
|
||||
|
||||
|
||||
@@ -148,9 +148,11 @@ class RoomDetailsFlowNode(
|
||||
|
||||
override fun onBuilt() {
|
||||
super.onBuilt()
|
||||
whenChildrenAttached { commonLifecycle: Lifecycle,
|
||||
roomDetailsNode: RoomDetailsNode,
|
||||
changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy ->
|
||||
whenChildrenAttached {
|
||||
commonLifecycle: Lifecycle,
|
||||
roomDetailsNode: RoomDetailsNode,
|
||||
changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy,
|
||||
->
|
||||
commonLifecycle.coroutineScope.launch {
|
||||
changeRoomMemberRolesNode.waitForRoleChanged()
|
||||
withContext(NonCancellable) {
|
||||
|
||||
@@ -105,9 +105,7 @@ class RoomDirectoryPresenterTest {
|
||||
|
||||
@Test
|
||||
fun `present - emit load more event`() = runTest {
|
||||
val loadMoreLambda = lambdaRecorder { ->
|
||||
Result.success(Unit)
|
||||
}
|
||||
val loadMoreLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
|
||||
val roomDirectoryList = FakeRoomDirectoryList(loadMoreLambda = loadMoreLambda)
|
||||
val roomDirectoryService = FakeRoomDirectoryService { roomDirectoryList }
|
||||
val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService)
|
||||
|
||||
@@ -40,7 +40,6 @@ datetime = "0.7.1"
|
||||
serialization_json = "1.9.0"
|
||||
|
||||
#other
|
||||
detekt = "1.23.8"
|
||||
coil = "3.3.0"
|
||||
showkase = "1.0.5"
|
||||
appyx = "1.7.1"
|
||||
@@ -59,6 +58,9 @@ metro = "0.7.2"
|
||||
autoservice = "1.1.1"
|
||||
|
||||
# quality
|
||||
detekt = "1.23.8"
|
||||
# See https://github.com/pinterest/ktlint/releases/
|
||||
ktlint = "1.7.1"
|
||||
androidx-test-ext-junit = "1.3.0"
|
||||
kover = "0.9.1"
|
||||
|
||||
@@ -148,6 +150,10 @@ network_retrofit_bom = "com.squareup.retrofit2:retrofit-bom:3.0.0"
|
||||
network_retrofit = { module = "com.squareup.retrofit2:retrofit" }
|
||||
network_retrofit_converter_serialization = { module = "com.squareup.retrofit2:converter-kotlinx-serialization" }
|
||||
|
||||
# Quality
|
||||
# Reference ktlint-cli so that Renovate can check if a new version is available.
|
||||
ktlint-cli = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" }
|
||||
|
||||
# Test
|
||||
test_core = { module = "androidx.test:core", version.ref = "test_core" }
|
||||
test_corektx = { module = "androidx.test:core-ktx", version.ref = "test_core" }
|
||||
|
||||
@@ -75,22 +75,21 @@ class AsyncDataKtTest {
|
||||
private class TestableMutableState<T>(
|
||||
value: T
|
||||
) : MutableState<T> {
|
||||
@Suppress("ktlint:standard:property-naming")
|
||||
private val _deque = ArrayDeque<T>(listOf(value))
|
||||
private val deque = ArrayDeque(listOf(value))
|
||||
|
||||
override var value: T
|
||||
get() = _deque.last()
|
||||
get() = deque.last()
|
||||
set(value) {
|
||||
_deque.addLast(value)
|
||||
deque.addLast(value)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the states that were set in the order they were set.
|
||||
*/
|
||||
fun popFirst(): T = _deque.removeFirst()
|
||||
fun popFirst(): T = deque.removeFirst()
|
||||
|
||||
fun assertNoMoreValues() {
|
||||
assertThat(_deque).isEmpty()
|
||||
assertThat(deque).isEmpty()
|
||||
}
|
||||
|
||||
override operator fun component1(): T = value
|
||||
|
||||
@@ -14,6 +14,7 @@ import kotlinx.collections.immutable.toPersistentList
|
||||
object WaveFormSamples {
|
||||
val allRangeWaveForm = List(100) { it.toFloat() / 100 }.toImmutableList()
|
||||
|
||||
@Suppress("ktlint:standard:argument-list-wrapping")
|
||||
val realisticWaveForm = persistentListOf(
|
||||
0.000f, 0.000f, 0.000f, 0.003f, 0.354f,
|
||||
0.353f, 0.365f, 0.790f, 0.787f, 0.167f,
|
||||
|
||||
@@ -71,10 +71,7 @@ public fun MapLibreMap(
|
||||
uiSettings: MapUiSettings = DefaultMapUiSettings,
|
||||
symbolManagerSettings: MapSymbolManagerSettings = DefaultMapSymbolManagerSettings,
|
||||
locationSettings: MapLocationSettings = DefaultMapLocationSettings,
|
||||
content: (
|
||||
@Composable @MapLibreMapComposable
|
||||
() -> Unit
|
||||
)? = null,
|
||||
content: (@Composable @MapLibreMapComposable () -> Unit)? = null,
|
||||
) {
|
||||
// When in preview, early return a Box with the received modifier preserving layout
|
||||
if (LocalInspectionMode.current) {
|
||||
|
||||
@@ -207,10 +207,12 @@ class RustTimeline(
|
||||
backwardPaginationStatus,
|
||||
forwardPaginationStatus,
|
||||
joinedRoom.roomInfoFlow.map { it.creators to it.isDm }.distinctUntilChanged(),
|
||||
) { timelineItems,
|
||||
) {
|
||||
timelineItems,
|
||||
backwardPaginationStatus,
|
||||
forwardPaginationStatus,
|
||||
(roomCreators, isDm) ->
|
||||
(roomCreators, isDm),
|
||||
->
|
||||
withContext(dispatcher) {
|
||||
timelineItems
|
||||
.let { items ->
|
||||
|
||||
@@ -34,7 +34,7 @@ class FakeNotificationCreator(
|
||||
var createFallbackNotificationResult: LambdaOneParamRecorder<FallbackNotifiableEvent, Notification> = lambdaRecorder { _ -> A_NOTIFICATION },
|
||||
var createSummaryListNotificationResult: LambdaFourParamsRecorder<MatrixUser, String, Boolean, Long, Notification> =
|
||||
lambdaRecorder { _, _, _, _ -> A_NOTIFICATION },
|
||||
var createDiagnosticNotificationResult: LambdaNoParamRecorder<Notification> = lambdaRecorder { -> A_NOTIFICATION },
|
||||
var createDiagnosticNotificationResult: LambdaNoParamRecorder<Notification> = lambdaRecorder<Notification> { A_NOTIFICATION },
|
||||
) : NotificationCreator {
|
||||
override suspend fun createMessagesListNotification(
|
||||
roomInfo: RoomEventGroupInfo,
|
||||
|
||||
@@ -19,13 +19,3 @@ dependencies {
|
||||
implementation(libs.test.core)
|
||||
implementation(libs.test.turbine)
|
||||
}
|
||||
|
||||
ktlint {
|
||||
filter {
|
||||
exclude { element ->
|
||||
val path = element.file.path
|
||||
// Exclude this file, that ktlint cannot parse.
|
||||
path.contains("libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,8 @@ class DefaultVoiceMessagePlayerTest {
|
||||
assertThat(player1.prepare().isSuccess).isTrue()
|
||||
matchReadyState(1_000L)
|
||||
player1.play()
|
||||
awaitItem().let { // it plays until the end.
|
||||
awaitItem().let {
|
||||
// it plays until the end.
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isTrue()
|
||||
@@ -127,14 +128,16 @@ class DefaultVoiceMessagePlayerTest {
|
||||
player2.state.test {
|
||||
matchInitialState()
|
||||
assertThat(player2.prepare().isSuccess).isTrue()
|
||||
awaitItem().let { // Additional spurious state due to MediaPlayer owner change.
|
||||
awaitItem().let {
|
||||
// Additional spurious state due to MediaPlayer owner change.
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isTrue()
|
||||
assertThat(it.currentPosition).isEqualTo(1000)
|
||||
assertThat(it.duration).isEqualTo(1000)
|
||||
}
|
||||
awaitItem().let { // Additional spurious state due to MediaPlayer owner change.
|
||||
awaitItem().let {
|
||||
// Additional spurious state due to MediaPlayer owner change.
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isFalse()
|
||||
@@ -143,7 +146,8 @@ class DefaultVoiceMessagePlayerTest {
|
||||
}
|
||||
matchReadyState(1_000L)
|
||||
player2.play()
|
||||
awaitItem().let { // it plays until the end.
|
||||
awaitItem().let {
|
||||
// it plays until the end.
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isTrue()
|
||||
@@ -154,7 +158,8 @@ class DefaultVoiceMessagePlayerTest {
|
||||
|
||||
// Play player1 again.
|
||||
player1.state.test {
|
||||
awaitItem().let { // Last previous state/
|
||||
awaitItem().let {
|
||||
// Last previous state/
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isTrue()
|
||||
@@ -162,7 +167,8 @@ class DefaultVoiceMessagePlayerTest {
|
||||
assertThat(it.duration).isEqualTo(1000)
|
||||
}
|
||||
assertThat(player1.prepare().isSuccess).isTrue()
|
||||
awaitItem().let { // Additional spurious state due to MediaPlayer owner change.
|
||||
awaitItem().let {
|
||||
// Additional spurious state due to MediaPlayer owner change.
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isFalse()
|
||||
@@ -171,7 +177,8 @@ class DefaultVoiceMessagePlayerTest {
|
||||
}
|
||||
matchReadyState(1_000L)
|
||||
player1.play()
|
||||
awaitItem().let { // it played again until the end.
|
||||
awaitItem().let {
|
||||
// it played again until the end.
|
||||
assertThat(it.isReady).isFalse()
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
assertThat(it.isEnded).isTrue()
|
||||
@@ -189,7 +196,8 @@ class DefaultVoiceMessagePlayerTest {
|
||||
assertThat(player.prepare().isSuccess).isTrue()
|
||||
matchReadyState()
|
||||
player.play()
|
||||
skipItems(1) // skip play state
|
||||
// skip play state
|
||||
skipItems(1)
|
||||
player.pause()
|
||||
awaitItem().let {
|
||||
assertThat(it.isPlaying).isFalse()
|
||||
@@ -206,9 +214,11 @@ class DefaultVoiceMessagePlayerTest {
|
||||
assertThat(player.prepare().isSuccess).isTrue()
|
||||
matchReadyState()
|
||||
player.play()
|
||||
skipItems(1) // skip play state
|
||||
// skip play state
|
||||
skipItems(1)
|
||||
player.pause()
|
||||
skipItems(1) // skip pause state
|
||||
// skip pause state
|
||||
skipItems(1)
|
||||
player.play()
|
||||
awaitItem().let {
|
||||
assertThat(it.isPlaying).isTrue()
|
||||
|
||||
Reference in New Issue
Block a user