From 46e15f21dc1c5773417b604591881b71ee0a9116 Mon Sep 17 00:00:00 2001 From: yongsuk44 Date: Thu, 5 Sep 2024 20:56:07 +0900 Subject: [PATCH 01/15] Fix duplicate composition trace markers in composable --- .../samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt index 0f345aa80..658d412b5 100644 --- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt +++ b/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt @@ -320,7 +320,7 @@ private fun TopicSelection( onboardingUiState: OnboardingUiState.Shown, onTopicCheckedChanged: (String, Boolean) -> Unit, modifier: Modifier = Modifier, -) = trace("TopicSelection") { +) { val lazyGridState = rememberLazyGridState() val topicSelectionTestTag = "forYou:topicSelection" @@ -381,7 +381,7 @@ private fun SingleTopicButton( imageUrl: String, isSelected: Boolean, onClick: (String, Boolean) -> Unit, -) = trace("SingleTopicButton") { +) { Surface( modifier = Modifier .width(312.dp) From f0434e52a4a6ffb747145d737e28d38e623ffa9a Mon Sep 17 00:00:00 2001 From: yongsuk44 Date: Fri, 6 Sep 2024 03:01:42 +0900 Subject: [PATCH 02/15] Spotless Apply --- .../samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt index 658d412b5..1a3325996 100644 --- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt +++ b/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt @@ -82,7 +82,6 @@ import androidx.compose.ui.unit.max import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.tracing.trace import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.PermissionStatus.Denied import com.google.accompanist.permissions.rememberPermissionState From 0356b873e93e2381cf17bc23caf52a7020ebd230 Mon Sep 17 00:00:00 2001 From: saeedishayan76 Date: Mon, 2 Sep 2024 21:57:24 +0330 Subject: [PATCH 03/15] change collectJob to backgroundScope coroutine --- .../bookmarks/BookmarksViewModelTest.kt | 6 +- .../feature/foryou/ForYouViewModelTest.kt | 70 ++++++------------- .../interests/InterestsViewModelTest.kt | 11 +-- .../feature/search/SearchViewModelTest.kt | 19 ++--- .../feature/settings/SettingsViewModelTest.kt | 4 +- .../feature/topic/TopicViewModelTest.kt | 15 ++-- 6 files changed, 36 insertions(+), 89 deletions(-) diff --git a/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt b/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt index 037e9db64..ff8e6946f 100644 --- a/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt +++ b/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt @@ -64,7 +64,7 @@ class BookmarksViewModelTest { @Test fun oneBookmark_showsInFeed() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() } newsRepository.sendNewsResources(newsResourcesTestData) userDataRepository.setNewsResourceBookmarked(newsResourcesTestData[0].id, true) @@ -72,12 +72,11 @@ class BookmarksViewModelTest { assertIs(item) assertEquals(item.feed.size, 1) - collectJob.cancel() } @Test fun oneBookmark_whenRemoving_removesFromFeed() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() } // Set the news resources to be used by this test newsRepository.sendNewsResources(newsResourcesTestData) // Start with the resource saved @@ -89,6 +88,5 @@ class BookmarksViewModelTest { assertIs(item) assertEquals(item.feed.size, 0) - collectJob.cancel() } } diff --git a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt b/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt index eece140ac..5db2a76f9 100644 --- a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt +++ b/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt @@ -98,9 +98,8 @@ class ForYouViewModelTest { @Test fun stateIsLoadingWhenFollowedTopicsAreLoading() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } topicsRepository.sendTopics(sampleTopics) @@ -110,30 +109,25 @@ class ForYouViewModelTest { ) assertEquals(NewsFeedUiState.Loading, viewModel.feedState.value) - collectJob1.cancel() - collectJob2.cancel() } @Test fun stateIsLoadingWhenAppIsSyncingWithNoInterests() = runTest { syncManager.setSyncing(true) - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.isSyncing.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.isSyncing.collect() } assertEquals( true, viewModel.isSyncing.value, ) - collectJob.cancel() } @Test fun onboardingStateIsLoadingWhenTopicsAreLoading() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } userDataRepository.setFollowedTopicIds(emptySet()) @@ -142,16 +136,13 @@ class ForYouViewModelTest { viewModel.onboardingUiState.value, ) assertEquals(NewsFeedUiState.Success(emptyList()), viewModel.feedState.value) - - collectJob1.cancel() - collectJob2.cancel() } @Test fun onboardingIsShownWhenNewsResourcesAreLoading() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } topicsRepository.sendTopics(sampleTopics) userDataRepository.setFollowedTopicIds(emptySet()) @@ -202,16 +193,12 @@ class ForYouViewModelTest { ), viewModel.feedState.value, ) - - collectJob1.cancel() - collectJob2.cancel() } @Test fun onboardingIsShownAfterLoadingEmptyFollowedTopics() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } topicsRepository.sendTopics(sampleTopics) userDataRepository.setFollowedTopicIds(emptySet()) @@ -264,15 +251,12 @@ class ForYouViewModelTest { viewModel.feedState.value, ) - collectJob1.cancel() - collectJob2.cancel() } @Test fun onboardingIsNotShownAfterUserDismissesOnboarding() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } topicsRepository.sendTopics(sampleTopics) @@ -300,15 +284,13 @@ class ForYouViewModelTest { viewModel.feedState.value, ) - collectJob1.cancel() - collectJob2.cancel() + } @Test fun topicSelectionUpdatesAfterSelectingTopic() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } topicsRepository.sendTopics(sampleTopics) userDataRepository.setFollowedTopicIds(emptySet()) @@ -352,16 +334,12 @@ class ForYouViewModelTest { ), viewModel.feedState.value, ) - - collectJob1.cancel() - collectJob2.cancel() } @Test fun topicSelectionUpdatesAfterUnselectingTopic() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } topicsRepository.sendTopics(sampleTopics) userDataRepository.setFollowedTopicIds(emptySet()) @@ -416,16 +394,12 @@ class ForYouViewModelTest { ), viewModel.feedState.value, ) - - collectJob1.cancel() - collectJob2.cancel() } @Test fun newsResourceSelectionUpdatesAfterLoadingFollowedTopics() = runTest { - val collectJob1 = - launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } - val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } val followedTopicIds = setOf("1") val userData = emptyUserData.copy( @@ -461,14 +435,11 @@ class ForYouViewModelTest { viewModel.feedState.value, ) - collectJob1.cancel() - collectJob2.cancel() } @Test fun deepLinkedNewsResourceIsFetchedAndResetAfterViewing() = runTest { - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.deepLinkedNewsResource.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.deepLinkedNewsResource.collect() } newsRepository.sendNewsResources(sampleNewsResources) userDataRepository.setUserData(emptyUserData) @@ -504,7 +475,6 @@ class ForYouViewModelTest { ), ) - collectJob.cancel() } @Test diff --git a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt index 987a5bc01..e1a8ce0db 100644 --- a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt +++ b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt @@ -80,17 +80,15 @@ class InterestsViewModelTest { @Test fun uiState_whenFollowedTopicsAreLoading_thenShowLoading() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } userDataRepository.setFollowedTopicIds(emptySet()) assertEquals(InterestsUiState.Loading, viewModel.uiState.value) - - collectJob.cancel() } @Test fun uiState_whenFollowingNewTopic_thenShowUpdatedTopics() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } val toggleTopicId = testOutputTopics[1].topic.id topicsRepository.sendTopics(testInputTopics.map { it.topic }) @@ -115,12 +113,11 @@ class InterestsViewModelTest { viewModel.uiState.value, ) - collectJob.cancel() } @Test fun uiState_whenUnfollowingTopics_thenShowUpdatedTopics() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } val toggleTopicId = testOutputTopics[1].topic.id @@ -147,8 +144,6 @@ class InterestsViewModelTest { ), viewModel.uiState.value, ) - - collectJob.cancel() } } diff --git a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt b/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt index c832401de..13b0b4496 100644 --- a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt +++ b/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt @@ -85,20 +85,16 @@ class SearchViewModelTest { fun stateIsEmptyQuery_withEmptySearchQuery() = runTest { searchContentsRepository.addNewsResources(newsResourcesTestData) searchContentsRepository.addTopics(topicsTestData) - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() } viewModel.onSearchQueryChanged("") assertEquals(EmptyQuery, viewModel.searchResultUiState.value) - - collectJob.cancel() } @Test fun emptyResultIsReturned_withNotMatchingQuery() = runTest { - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() } viewModel.onSearchQueryChanged("XXX") searchContentsRepository.addNewsResources(newsResourcesTestData) @@ -106,32 +102,27 @@ class SearchViewModelTest { val result = viewModel.searchResultUiState.value assertIs(result) - - collectJob.cancel() } @Test fun recentSearches_verifyUiStateIsSuccess() = runTest { - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.recentSearchQueriesUiState.collect() } + + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.recentSearchQueriesUiState.collect() } viewModel.onSearchTriggered("kotlin") val result = viewModel.recentSearchQueriesUiState.value assertIs(result) - collectJob.cancel() } @Test fun searchNotReady_withNoFtsTableEntity() = runTest { - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() } viewModel.onSearchQueryChanged("") assertEquals(SearchNotReady, viewModel.searchResultUiState.value) - collectJob.cancel() } @Test diff --git a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt b/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt index 9062abee6..1c36650dd 100644 --- a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt +++ b/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt @@ -52,8 +52,7 @@ class SettingsViewModelTest { @Test fun stateIsSuccessAfterUserDataLoaded() = runTest { - val collectJob = - launch(UnconfinedTestDispatcher()) { viewModel.settingsUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.settingsUiState.collect() } userDataRepository.setThemeBrand(ANDROID) userDataRepository.setDarkThemeConfig(DARK) @@ -69,6 +68,5 @@ class SettingsViewModelTest { viewModel.settingsUiState.value, ) - collectJob.cancel() } } diff --git a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt b/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt index c14e62e31..d6c2b7381 100644 --- a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt +++ b/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt @@ -85,7 +85,7 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenSuccess_matchesTopicFromRepository() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } topicsRepository.sendTopics(testInputTopics.map(FollowableTopic::topic)) userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) @@ -98,7 +98,6 @@ class TopicViewModelTest { assertEquals(topicFromRepository, item.followableTopic.topic) - collectJob.cancel() } @Test @@ -113,18 +112,17 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenFollowedIdsSuccessAndTopicLoading_thenShowLoading() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) assertEquals(TopicUiState.Loading, viewModel.topicUiState.value) - collectJob.cancel() } @Test fun uiStateTopic_whenFollowedIdsSuccessAndTopicSuccess_thenTopicSuccessAndNewsLoading() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } topicsRepository.sendTopics(testInputTopics.map { it.topic }) userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) @@ -134,13 +132,12 @@ class TopicViewModelTest { assertIs(topicUiState) assertIs(newsUiState) - collectJob.cancel() } @Test fun uiStateTopic_whenFollowedIdsSuccessAndTopicSuccessAndNewsIsSuccess_thenAllSuccess() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { + backgroundScope.launch(UnconfinedTestDispatcher()) { combine( viewModel.topicUiState, viewModel.newsUiState, @@ -156,12 +153,11 @@ class TopicViewModelTest { assertIs(topicUiState) assertIs(newsUiState) - collectJob.cancel() } @Test fun uiStateTopic_whenFollowingTopic_thenShowUpdatedTopic() = runTest { - val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } topicsRepository.sendTopics(testInputTopics.map { it.topic }) // Set which topic IDs are followed, not including 0. @@ -174,7 +170,6 @@ class TopicViewModelTest { viewModel.topicUiState.value, ) - collectJob.cancel() } } From 26dd4424f6b507f05936a7ecc5db33ed4d1e830b Mon Sep 17 00:00:00 2001 From: saeedishayan76 Date: Fri, 6 Sep 2024 00:54:22 +0330 Subject: [PATCH 04/15] remove blank lines for resolve spotless error --- .../feature/bookmarks/BookmarksViewModelTest.kt | 2 -- .../nowinandroid/feature/foryou/ForYouViewModelTest.kt | 8 -------- .../apps/nowinandroid/interests/InterestsViewModelTest.kt | 1 - .../nowinandroid/feature/search/SearchViewModelTest.kt | 3 --- .../feature/settings/SettingsViewModelTest.kt | 1 - .../apps/nowinandroid/feature/topic/TopicViewModelTest.kt | 5 ----- 6 files changed, 20 deletions(-) diff --git a/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt b/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt index ff8e6946f..19ab0ad85 100644 --- a/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt +++ b/feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt @@ -71,7 +71,6 @@ class BookmarksViewModelTest { val item = viewModel.feedUiState.value assertIs(item) assertEquals(item.feed.size, 1) - } @Test @@ -87,6 +86,5 @@ class BookmarksViewModelTest { val item = viewModel.feedUiState.value assertIs(item) assertEquals(item.feed.size, 0) - } } diff --git a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt b/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt index 5db2a76f9..812544c0c 100644 --- a/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt +++ b/feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt @@ -108,7 +108,6 @@ class ForYouViewModelTest { viewModel.onboardingUiState.value, ) assertEquals(NewsFeedUiState.Loading, viewModel.feedState.value) - } @Test @@ -121,7 +120,6 @@ class ForYouViewModelTest { true, viewModel.isSyncing.value, ) - } @Test @@ -140,7 +138,6 @@ class ForYouViewModelTest { @Test fun onboardingIsShownWhenNewsResourcesAreLoading() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() } backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() } @@ -250,7 +247,6 @@ class ForYouViewModelTest { ), viewModel.feedState.value, ) - } @Test @@ -283,8 +279,6 @@ class ForYouViewModelTest { ), viewModel.feedState.value, ) - - } @Test @@ -434,7 +428,6 @@ class ForYouViewModelTest { ), viewModel.feedState.value, ) - } @Test @@ -474,7 +467,6 @@ class ForYouViewModelTest { ), ), ) - } @Test diff --git a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt index e1a8ce0db..3cf8d825b 100644 --- a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt +++ b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt @@ -112,7 +112,6 @@ class InterestsViewModelTest { ), viewModel.uiState.value, ) - } @Test diff --git a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt b/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt index 13b0b4496..a62965b52 100644 --- a/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt +++ b/feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt @@ -106,13 +106,11 @@ class SearchViewModelTest { @Test fun recentSearches_verifyUiStateIsSuccess() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.recentSearchQueriesUiState.collect() } viewModel.onSearchTriggered("kotlin") val result = viewModel.recentSearchQueriesUiState.value assertIs(result) - } @Test @@ -122,7 +120,6 @@ class SearchViewModelTest { viewModel.onSearchQueryChanged("") assertEquals(SearchNotReady, viewModel.searchResultUiState.value) - } @Test diff --git a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt b/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt index 1c36650dd..f977612a1 100644 --- a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt +++ b/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt @@ -67,6 +67,5 @@ class SettingsViewModelTest { ), viewModel.settingsUiState.value, ) - } } diff --git a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt b/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt index d6c2b7381..9d0b8eb71 100644 --- a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt +++ b/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt @@ -97,7 +97,6 @@ class TopicViewModelTest { ).first() assertEquals(topicFromRepository, item.followableTopic.topic) - } @Test @@ -116,7 +115,6 @@ class TopicViewModelTest { userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) assertEquals(TopicUiState.Loading, viewModel.topicUiState.value) - } @Test @@ -131,7 +129,6 @@ class TopicViewModelTest { assertIs(topicUiState) assertIs(newsUiState) - } @Test @@ -152,7 +149,6 @@ class TopicViewModelTest { assertIs(topicUiState) assertIs(newsUiState) - } @Test @@ -169,7 +165,6 @@ class TopicViewModelTest { TopicUiState.Success(followableTopic = testOutputTopics[0]), viewModel.topicUiState.value, ) - } } From 6f40606c5488bc559ce01f5a668a315505a85e4f Mon Sep 17 00:00:00 2001 From: saeedishayan76 Date: Sat, 7 Sep 2024 03:07:25 +0330 Subject: [PATCH 05/15] InterstsViewModelTest fix spotless Issue --- .../apps/nowinandroid/interests/InterestsViewModelTest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt index 3cf8d825b..cdf21f325 100644 --- a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt +++ b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt @@ -80,7 +80,7 @@ class InterestsViewModelTest { @Test fun uiState_whenFollowedTopicsAreLoading_thenShowLoading() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } userDataRepository.setFollowedTopicIds(emptySet()) assertEquals(InterestsUiState.Loading, viewModel.uiState.value) @@ -88,7 +88,7 @@ class InterestsViewModelTest { @Test fun uiState_whenFollowingNewTopic_thenShowUpdatedTopics() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } val toggleTopicId = testOutputTopics[1].topic.id topicsRepository.sendTopics(testInputTopics.map { it.topic }) @@ -116,7 +116,7 @@ class InterestsViewModelTest { @Test fun uiState_whenUnfollowingTopics_thenShowUpdatedTopics() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() } val toggleTopicId = testOutputTopics[1].topic.id From 987e87f4edf76045ad9036dd7eb0fb3f15e8310e Mon Sep 17 00:00:00 2001 From: saeedishayan76 Date: Sat, 7 Sep 2024 15:18:23 +0330 Subject: [PATCH 06/15] Check topicViewModelTest for spotless --- .../nowinandroid/feature/topic/TopicViewModelTest.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt b/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt index 9d0b8eb71..34f21a59a 100644 --- a/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt +++ b/feature/topic/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt @@ -85,7 +85,7 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenSuccess_matchesTopicFromRepository() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } topicsRepository.sendTopics(testInputTopics.map(FollowableTopic::topic)) userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) @@ -111,7 +111,7 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenFollowedIdsSuccessAndTopicLoading_thenShowLoading() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) assertEquals(TopicUiState.Loading, viewModel.topicUiState.value) @@ -120,7 +120,7 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenFollowedIdsSuccessAndTopicSuccess_thenTopicSuccessAndNewsLoading() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } topicsRepository.sendTopics(testInputTopics.map { it.topic }) userDataRepository.setFollowedTopicIds(setOf(testInputTopics[1].topic.id)) @@ -134,7 +134,7 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenFollowedIdsSuccessAndTopicSuccessAndNewsIsSuccess_thenAllSuccess() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { + backgroundScope.launch(UnconfinedTestDispatcher()) { combine( viewModel.topicUiState, viewModel.newsUiState, @@ -153,7 +153,7 @@ class TopicViewModelTest { @Test fun uiStateTopic_whenFollowingTopic_thenShowUpdatedTopic() = runTest { - backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } + backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.topicUiState.collect() } topicsRepository.sendTopics(testInputTopics.map { it.topic }) // Set which topic IDs are followed, not including 0. From a2ee0ec75dc61a9e671c110f2300aeecc317df65 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Thu, 19 Sep 2024 22:52:29 -0700 Subject: [PATCH 07/15] Kick the build --- .google/BUILDME | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.google/BUILDME b/.google/BUILDME index 5295ed188..6d57608d7 100644 --- a/.google/BUILDME +++ b/.google/BUILDME @@ -1,2 +1,2 @@ # This file can be used to trigger an internal build by changing the number below -3 +1 From ca6f34bea71a9bde8fe6440a368ac6cff59b8615 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Thu, 19 Sep 2024 22:53:17 -0700 Subject: [PATCH 08/15] Kick the build --- .google/BUILDME | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.google/BUILDME b/.google/BUILDME index 5295ed188..6d57608d7 100644 --- a/.google/BUILDME +++ b/.google/BUILDME @@ -1,2 +1,2 @@ # This file can be used to trigger an internal build by changing the number below -3 +1 From 6c8952183c5836e17b6873ebf795ab94febcb70a Mon Sep 17 00:00:00 2001 From: Don Turner Date: Fri, 20 Sep 2024 10:52:19 -0700 Subject: [PATCH 09/15] Kick the build --- .google/BUILDME | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.google/BUILDME b/.google/BUILDME index 6d57608d7..d6b23eab3 100644 --- a/.google/BUILDME +++ b/.google/BUILDME @@ -1,2 +1,2 @@ # This file can be used to trigger an internal build by changing the number below -1 +2 From dc144614901a084af09e4b2a54d266b015ac1195 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Sat, 13 Jul 2024 09:01:53 +0000 Subject: [PATCH 10/15] Update retrofit from 2.9.0 to 2.11.0 - Replace Jake Wharton's Kotlinx Serialization converter with new retrofit's `converter-kotlinx-serialization`. - Remove custom Proguard rules that are now part of the dependency: https://github.com/square/retrofit/tree/trunk/retrofit-response-type-keeper#readme Changelog: https://github.com/square/retrofit/blob/trunk/CHANGELOG.md --- app/build.gradle.kts | 2 +- app/dependencies/prodReleaseRuntimeClasspath.txt | 4 ++-- app/proguard-rules.pro | 9 --------- .../core/network/retrofit/RetrofitNiaNetwork.kt | 2 +- gradle/libs.versions.toml | 4 ++-- 5 files changed, 6 insertions(+), 15 deletions(-) delete mode 100644 app/proguard-rules.pro diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 92f3f549b..4fc2ea36c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -48,7 +48,7 @@ android { release { isMinifyEnabled = true applicationIdSuffix = NiaBuildType.RELEASE.applicationIdSuffix - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) // To publish on the Play store a private signing key is required, but to allow anyone // who clones the code to sign and run the release variant, use the debug signing key. diff --git a/app/dependencies/prodReleaseRuntimeClasspath.txt b/app/dependencies/prodReleaseRuntimeClasspath.txt index e1c0a6f60..96f888117 100644 --- a/app/dependencies/prodReleaseRuntimeClasspath.txt +++ b/app/dependencies/prodReleaseRuntimeClasspath.txt @@ -190,12 +190,12 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.j2objc:j2objc-annotations:1.3 com.google.protobuf:protobuf-javalite:4.26.1 com.google.protobuf:protobuf-kotlin-lite:4.26.1 -com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0 +com.squareup.retrofit2:converter-kotlinx-serialization:2.11.0 com.squareup.okhttp3:logging-interceptor:4.12.0 com.squareup.okhttp3:okhttp:4.12.0 com.squareup.okio:okio-jvm:3.9.0 com.squareup.okio:okio:3.9.0 -com.squareup.retrofit2:retrofit:2.9.0 +com.squareup.retrofit2:retrofit:2.10.0 io.coil-kt:coil-base:2.7.0 io.coil-kt:coil-compose-base:2.7.0 io.coil-kt:coil-compose:2.7.0 diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro deleted file mode 100644 index 5f4922bce..000000000 --- a/app/proguard-rules.pro +++ /dev/null @@ -1,9 +0,0 @@ -# Fix for Retrofit issue https://github.com/square/retrofit/issues/3751 -# Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items). --keep,allowobfuscation,allowshrinking interface retrofit2.Call --keep,allowobfuscation,allowshrinking class retrofit2.Response - -# With R8 full mode generic signatures are stripped for classes that are not -# kept. Suspend functions are wrapped in continuations where the type argument -# is used. --keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation diff --git a/core/network/src/main/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt b/core/network/src/main/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt index e9fe99d9e..bdd852f8b 100644 --- a/core/network/src/main/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt +++ b/core/network/src/main/kotlin/com/google/samples/apps/nowinandroid/core/network/retrofit/RetrofitNiaNetwork.kt @@ -22,12 +22,12 @@ import com.google.samples.apps.nowinandroid.core.network.NiaNetworkDataSource import com.google.samples.apps.nowinandroid.core.network.model.NetworkChangeList import com.google.samples.apps.nowinandroid.core.network.model.NetworkNewsResource import com.google.samples.apps.nowinandroid.core.network.model.NetworkTopic -import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import okhttp3.Call import okhttp3.MediaType.Companion.toMediaType import retrofit2.Retrofit +import retrofit2.converter.kotlinx.serialization.asConverterFactory import retrofit2.http.GET import retrofit2.http.Query import javax.inject.Inject diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 128a4af05..062150292 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -48,7 +48,7 @@ moduleGraph = "2.5.0" okhttp = "4.12.0" protobuf = "4.26.1" protobufPlugin = "0.9.4" -retrofit = "2.9.0" +retrofit = "2.11.0" retrofitKotlinxSerializationJson = "1.0.0" robolectric = "4.12.2" roborazzi = "1.7.0" @@ -139,7 +139,7 @@ okhttp-logging = { group = "com.squareup.okhttp3", name = "logging-interceptor", protobuf-kotlin-lite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "protobuf" } protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" } retrofit-core = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } -retrofit-kotlin-serialization = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "retrofitKotlinxSerializationJson" } +retrofit-kotlin-serialization = { group = "com.squareup.retrofit2", name = "converter-kotlinx-serialization", version.ref = "retrofit" } robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" } roborazzi = { group = "io.github.takahirom.roborazzi", name = "roborazzi", version.ref = "roborazzi" } room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } From 2b625cbb17b0ce50b29326b780d1712921ea2714 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Thu, 5 Sep 2024 19:08:07 +0100 Subject: [PATCH 11/15] Update app/dependencies/prodReleaseRuntimeClasspath.txt --- app/dependencies/prodReleaseRuntimeClasspath.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/dependencies/prodReleaseRuntimeClasspath.txt b/app/dependencies/prodReleaseRuntimeClasspath.txt index 96f888117..cb937de4e 100644 --- a/app/dependencies/prodReleaseRuntimeClasspath.txt +++ b/app/dependencies/prodReleaseRuntimeClasspath.txt @@ -195,7 +195,7 @@ com.squareup.okhttp3:logging-interceptor:4.12.0 com.squareup.okhttp3:okhttp:4.12.0 com.squareup.okio:okio-jvm:3.9.0 com.squareup.okio:okio:3.9.0 -com.squareup.retrofit2:retrofit:2.10.0 +com.squareup.retrofit2:retrofit:2.11.0 io.coil-kt:coil-base:2.7.0 io.coil-kt:coil-compose-base:2.7.0 io.coil-kt:coil-compose:2.7.0 From 4699fa9d6c1997f58ce5c3f0491d77215c82d5bb Mon Sep 17 00:00:00 2001 From: Momin Tahir Date: Sat, 21 Sep 2024 03:42:20 +0500 Subject: [PATCH 12/15] make view model instance as private in MainActivity (#1621) --- .../kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt index cffb13f34..599bd0b35 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt @@ -75,7 +75,7 @@ class MainActivity : ComponentActivity() { @Inject lateinit var userNewsResourceRepository: UserNewsResourceRepository - val viewModel: MainActivityViewModel by viewModels() + private val viewModel: MainActivityViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() From 15a6b583d44322d05cc7f1ac9458f77c69b68d8e Mon Sep 17 00:00:00 2001 From: Jason Pearson Date: Sat, 21 Sep 2024 17:31:26 -0400 Subject: [PATCH 13/15] tune jvm args for nowinandroid with links and reasoning --- gradle.properties | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 97f940e2e..e2d6e0903 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,23 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Ensure important default jvmargs aren't overwritten. See https://github.com/gradle/gradle/issues/19750 -org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g +# +# For more information about how Gradle memory options were chosen: +# - Metaspace See https://www.jasonpearson.dev/metaspace-in-jvm-builds/ +# - SoftRefLRUPolicyMSPerMB would default to 1000 which with a 4gb heap translates to ~51 minutes. +# A value of 1 means ~4 seconds before SoftRefs can be collected, which means its realistic to +# collect them as needed during a build that should take seconds to minutes. +# - CodeCache normally defaults to a very small size. Increasing it from platform defaults of 32-48m +# because of how many classes can be loaded into memory and then cached as native compiled code +# for a small speed boost. +org.gradle.jvmargs=-Dfile.encoding=UTF-8 -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:ReservedCodeCacheSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xmx4g -Xms4g + +# For more information about how Kotlin Daemon memory options were chosen: +# - Kotlin JVM args only inherit Xmx, ReservedCodeCache, and MaxMetaspace. Since we are specifying +# other args we need to specify all of them here. +# - We're using the Kotlin Gradle Plugin's default value for ReservedCodeCacheSize, if we do not then +# the Gradle JVM arg value for ReservedCodeCacheSize will be used. +kotlin.daemon.jvmargs=-Dfile.encoding=UTF-8 -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:ReservedCodeCacheSize=320m -XX:+HeapDumpOnOutOfMemoryError -Xmx4g -Xms4g # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit From 0b5425693f5bcc0d3860013752d0f663df5353c7 Mon Sep 17 00:00:00 2001 From: Ben Weiss Date: Tue, 24 Sep 2024 08:29:26 +0200 Subject: [PATCH 14/15] Add missing steps to Nightly BP generation (#1639) --- .../workflows/NightlyBaselineProfiles.yaml | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/NightlyBaselineProfiles.yaml b/.github/workflows/NightlyBaselineProfiles.yaml index b72e4ad19..288842ac7 100644 --- a/.github/workflows/NightlyBaselineProfiles.yaml +++ b/.github/workflows/NightlyBaselineProfiles.yaml @@ -18,8 +18,12 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + ls /dev/kvm - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties @@ -30,6 +34,18 @@ jobs: distribution: 'zulu' java-version: 17 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Accept licenses + run: yes | sdkmanager --licenses || true + + - name: Check build-logic + run: ./gradlew check -p build-logic + - name: Setup GMD run: ./gradlew :benchmarks:pixel6Api33Setup --info From 12b77d6a205c04e64e02474f429cf97269b5b7c2 Mon Sep 17 00:00:00 2001 From: Simon Marquis Date: Fri, 27 Sep 2024 15:39:08 +0200 Subject: [PATCH 15/15] Fix Gradle setup action --- .github/workflows/Build.yaml | 3 --- .github/workflows/Release.yml | 3 --- 2 files changed, 6 deletions(-) diff --git a/.github/workflows/Build.yaml b/.github/workflows/Build.yaml index b858a27d7..c67d3b3d8 100644 --- a/.github/workflows/Build.yaml +++ b/.github/workflows/Build.yaml @@ -43,9 +43,6 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - with: - validate-wrappers: true - gradle-home-cache-cleanup: true - name: Setup Android SDK uses: android-actions/setup-android@v3 diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 73ab89bfa..71ee060e1 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -33,9 +33,6 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - with: - validate-wrappers: true - gradle-home-cache-cleanup: true - name: Setup Android SDK uses: android-actions/setup-android@v3