diff --git a/.github/workflows/build-contributor-pr.yml b/.github/workflows/build-contributor-pr.yml index 05af84eab..ac3440b99 100644 --- a/.github/workflows/build-contributor-pr.yml +++ b/.github/workflows/build-contributor-pr.yml @@ -10,7 +10,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: "Clean & Assemble Debug" uses: eskatos/gradle-command-action@v1 with: @@ -29,7 +29,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: "Test Debug Unit Tests" uses: eskatos/gradle-command-action@v1 with: @@ -48,7 +48,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: "Detekt" uses: eskatos/gradle-command-action@v1 with: @@ -72,7 +72,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: "Ktlint" uses: eskatos/gradle-command-action@v1 with: @@ -91,7 +91,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: "Lint Debug" uses: eskatos/gradle-command-action@v1 with: diff --git a/app/build.gradle b/app/build.gradle index a4e3b7648..0bbeb05b6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -582,6 +582,7 @@ dependencies { if (project.hasProperty("coverage")) { tasks.withType(Test).configureEach { jacoco.includeNoLocationClasses = true + jacoco.excludes = ['jdk.internal.*'] } jacoco { diff --git a/app/src/test/java/org/mozilla/fenix/historymetadata/HistoryMetadataMiddlewareTest.kt b/app/src/test/java/org/mozilla/fenix/historymetadata/HistoryMetadataMiddlewareTest.kt index 8105a1df2..d67a26d69 100644 --- a/app/src/test/java/org/mozilla/fenix/historymetadata/HistoryMetadataMiddlewareTest.kt +++ b/app/src/test/java/org/mozilla/fenix/historymetadata/HistoryMetadataMiddlewareTest.kt @@ -73,9 +73,16 @@ class HistoryMetadataMiddlewareTest { // Now, test that we'll record metadata for the same tab after url is changed. store.dispatch(ContentAction.UpdateUrlAction(tab.id, "https://firefox.com")).joinBlocking() store.dispatch(ContentAction.UpdateHistoryStateAction(tab.id, emptyList(), currentIndex = 0)).joinBlocking() - verify(exactly = 2) { service.createMetadata(capture(capturedTab)) } - assertEquals(tab.id, capturedTab.captured.id) + val capturedTabs = mutableListOf() + verify(exactly = 2) { service.createMetadata(capture(capturedTabs)) } + + assertEquals(2, capturedTabs.size) + + capturedTabs[0].apply() { + assertEquals(tab.id, id) + } + assertEquals(expectedKey, store.state.findTab(tab.id)?.historyMetadata) } diff --git a/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleViewHoldersTest.kt b/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleViewHoldersTest.kt index b1d005b89..8b3b6d8a4 100644 --- a/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleViewHoldersTest.kt +++ b/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleViewHoldersTest.kt @@ -75,7 +75,7 @@ class LocaleViewHoldersTest { localeViewHolder.bind(otherLocale) assertEquals("Vèneto", view.locale_title_text.text) - assertEquals("Venitian", view.locale_subtitle_text.text) + assertEquals("Venetian", view.locale_subtitle_text.text) } @Test diff --git a/app/src/test/java/org/mozilla/fenix/sync/SyncedTabsTitleDecorationTest.kt b/app/src/test/java/org/mozilla/fenix/sync/SyncedTabsTitleDecorationTest.kt index e773426fe..46a129eb6 100644 --- a/app/src/test/java/org/mozilla/fenix/sync/SyncedTabsTitleDecorationTest.kt +++ b/app/src/test/java/org/mozilla/fenix/sync/SyncedTabsTitleDecorationTest.kt @@ -63,7 +63,7 @@ class SyncedTabsTitleDecorationTest { every { viewHolder.itemViewType }.answers { ErrorViewHolder.LAYOUT_ID } every { viewHolder.bindingAdapterPosition } .answers { 1 } - .andThen { 0 } + .andThenAnswer { 0 } decoration.getItemOffsets(rect, mockk(), recyclerView, state) @@ -92,7 +92,7 @@ class SyncedTabsTitleDecorationTest { every { viewHolder.itemViewType }.answers { ErrorViewHolder.LAYOUT_ID } every { viewHolder.bindingAdapterPosition } .answers { 1 } - .andThen { 0 } + .andThenAnswer { 0 } decoration.onDraw(canvas, recyclerView, state) diff --git a/app/src/test/java/org/mozilla/fenix/trackingprotection/TrackingProtectionPanelInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/trackingprotection/TrackingProtectionPanelInteractorTest.kt index 5bfac924b..50725b094 100644 --- a/app/src/test/java/org/mozilla/fenix/trackingprotection/TrackingProtectionPanelInteractorTest.kt +++ b/app/src/test/java/org/mozilla/fenix/trackingprotection/TrackingProtectionPanelInteractorTest.kt @@ -62,7 +62,7 @@ class TrackingProtectionPanelInteractorTest { val interactor = TrackingProtectionPanelInteractor( mockk(), { trackingProtectionNewValue = it }, - mockk() + { } ) interactor.trackingProtectionToggled(true) assertEquals(true, trackingProtectionNewValue) diff --git a/app/src/test/java/org/mozilla/fenix/utils/ManufacturerCodesTest.kt b/app/src/test/java/org/mozilla/fenix/utils/ManufacturerCodesTest.kt index f277af239..3b67c4d9f 100644 --- a/app/src/test/java/org/mozilla/fenix/utils/ManufacturerCodesTest.kt +++ b/app/src/test/java/org/mozilla/fenix/utils/ManufacturerCodesTest.kt @@ -30,6 +30,7 @@ class ManufacturerCodesTest { private fun enableManufacturerModifications() { // Mocking, which might be simpler, doesn't seem to work so we use reflection. // Methodology via https://stackoverflow.com/a/3301720/2219998 + manufacturerField.isAccessible = true val modifiers = manufacturerField.javaClass.getDeclaredField("modifiers") modifiers.isAccessible = true modifiers.setInt(manufacturerField, manufacturerField.modifiers and Modifier.FINAL.inv()) diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index e6cbb58a4..106f09a5d 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -41,7 +41,7 @@ object Versions { const val installreferrer = "1.0" const val junit = "5.5.2" - const val mockk = "1.10.0" + const val mockk = "1.10.6" const val mockwebserver = "4.9.0" const val uiautomator = "2.2.0" diff --git a/taskcluster/docker/base/Dockerfile b/taskcluster/docker/base/Dockerfile index 98c4e3fd9..01fafaca1 100644 --- a/taskcluster/docker/base/Dockerfile +++ b/taskcluster/docker/base/Dockerfile @@ -33,6 +33,7 @@ RUN apt-get update -qq \ # we cannot navigate while building the Docker image. && apt-get install -y tzdata \ && apt-get install -y openjdk-8-jdk \ + openjdk-11-jdk \ wget \ expect \ git \ diff --git a/taskcluster/docker/ui-tests/Dockerfile b/taskcluster/docker/ui-tests/Dockerfile index 2bb16e314..f05853d82 100644 --- a/taskcluster/docker/ui-tests/Dockerfile +++ b/taskcluster/docker/ui-tests/Dockerfile @@ -33,6 +33,5 @@ RUN URL_FLANK_BIN="$($CURL --silent 'https://api.github.com/repos/Flank/flank/re && $CURL --output "${TEST_TOOLS}/flank.jar" "${URL_FLANK_BIN}" \ && chmod +x "${TEST_TOOLS}/flank.jar" - # run-task expects to run as root USER root diff --git a/taskcluster/scripts/decision-install-sdk.sh b/taskcluster/scripts/decision-install-sdk.sh index 6632076d5..0d2afac6a 100755 --- a/taskcluster/scripts/decision-install-sdk.sh +++ b/taskcluster/scripts/decision-install-sdk.sh @@ -8,10 +8,13 @@ ANDROID_SDK_VERSION='3859397' ANDROID_SDK_SHA256='444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0' SDK_ZIP_LOCATION="$HOME/sdk-tools-linux.zip" +# For the Android build system we want Java 11. However this version of sdkmanager requires Java 8. +JAVA8PATH="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/:$PATH" + $CURL --output "$SDK_ZIP_LOCATION" "https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip" echo "$ANDROID_SDK_SHA256 $SDK_ZIP_LOCATION" | sha256sum --check unzip -d "$ANDROID_SDK_ROOT" "$SDK_ZIP_LOCATION" rm "$SDK_ZIP_LOCATION" -export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64" -yes | "${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" --licenses +yes | PATH=$JAVA8PATH "${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" --licenses + diff --git a/taskcluster/scripts/toolchain/android-gradle-dependencies/before.sh b/taskcluster/scripts/toolchain/android-gradle-dependencies/before.sh index 57290cab0..4e8606982 100644 --- a/taskcluster/scripts/toolchain/android-gradle-dependencies/before.sh +++ b/taskcluster/scripts/toolchain/android-gradle-dependencies/before.sh @@ -20,7 +20,7 @@ set -v mkdir -p ${NEXUS_WORK}/conf cp /builds/worker/checkouts/src/taskcluster/scripts/toolchain/android-gradle-dependencies/nexus.xml ${NEXUS_WORK}/conf/nexus.xml -RUN_AS_USER=worker /opt/sonatype/nexus/bin/nexus restart +PATH="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/:$PATH" RUN_AS_USER=worker /opt/sonatype/nexus/bin/nexus restart # Wait "a while" for Nexus to actually start. Don't fail if this fails. wget --quiet --retry-connrefused --waitretry=2 --tries=100 \ diff --git a/taskcluster/scripts/toolchain/repack-android-sdk-linux.sh b/taskcluster/scripts/toolchain/repack-android-sdk-linux.sh index 9eb108709..760574157 100755 --- a/taskcluster/scripts/toolchain/repack-android-sdk-linux.sh +++ b/taskcluster/scripts/toolchain/repack-android-sdk-linux.sh @@ -2,9 +2,12 @@ export ANDROID_SDK_ROOT=$MOZ_FETCHES_DIR -yes | "${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" --licenses +# For the Android build system we want Java 11. However this version of sdkmanager requires Java 8. +JAVA8PATH="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/:$PATH" + +yes | PATH=$JAVA8PATH "${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" --licenses # It's nice to have the build logs include the state of the world upon completion. -"${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" --list +PATH=$JAVA8PATH "${ANDROID_SDK_ROOT}/tools/bin/sdkmanager" --list tar cf - -C "$ANDROID_SDK_ROOT" . --transform 's,^\./,android-sdk-linux/,' | xz > "$UPLOAD_DIR/android-sdk-linux.tar.xz"