From 6de9aca0a1dd2129af4a7c00de9aca97f8ef7453 Mon Sep 17 00:00:00 2001
From: Amine <amine.bouabdallaoui@pm.me>
Date: Thu, 27 Mar 2025 20:41:52 +0100
Subject: [PATCH] ci: Instrumentation tests coverage in ci.

---
 .gitea/workflows/common_build.yml        | 51 -------------------
 .gitea/workflows/on_merge_on_release.yml | 46 ++++++++++++++++-
 .gitea/workflows/on_pr.yml               | 64 +++++++++++-------------
 .gitea/workflows/on_push.yml             | 46 ++++++++++++++++-
 4 files changed, 118 insertions(+), 89 deletions(-)
 delete mode 100644 .gitea/workflows/common_build.yml

diff --git a/.gitea/workflows/common_build.yml b/.gitea/workflows/common_build.yml
deleted file mode 100644
index 2959684..0000000
--- a/.gitea/workflows/common_build.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-name: Build
-on:
-  workflow_call:
-
-jobs:
-  BuildAndTestAndCoverage:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository code
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: "Check android app changes"
-        id: check-android-changes
-        uses: tj-actions/changed-files@v45
-        with:
-          files: |
-            androidApp/src/**
-            shared/src/commonMain/**
-            shared/src/androidMain/**
-            shared/src/commonTest/**
-      - name: Fetch tags
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        run: git fetch --tags -p
-      - uses: actions/setup-java@v4
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        with:
-          distribution: 'temurin'
-          java-version: '17'
-      - uses: gradle/actions/setup-gradle@v3
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-      - uses: android-actions/setup-android@v3
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-      - name: Configure gradle...
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        run: mkdir -p ~/.gradle && echo "org.gradle.daemon=false\nignoreGitVersion=true" >> ~/.gradle/gradle.properties
-      - name: Build and test
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        run: ./gradlew build -x testReleaseUnitTest -x testDebugUnitTest -x testGithubConfigReleaseUnitTest -x testGithubConfigDebugUnitTest
-      - name: coverage
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        run: |
-          ./gradlew :koverHtmlReport
-      - uses: actions/upload-artifact@v3
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        with:
-          name: coverage
-          path: build/reports/kover/html
-          retention-days: 1
-          overwrite: true
-          include-hidden-files: true
diff --git a/.gitea/workflows/on_merge_on_release.yml b/.gitea/workflows/on_merge_on_release.yml
index 2ec912f..e59142d 100644
--- a/.gitea/workflows/on_merge_on_release.yml
+++ b/.gitea/workflows/on_merge_on_release.yml
@@ -7,7 +7,51 @@ on:
 
 jobs:
   build:
-    uses: ./.gitea/workflows/common_build.yml
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out repository code
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: "Check android app changes"
+        id: check-android-changes
+        uses: tj-actions/changed-files@v45
+        with:
+          files: |
+            androidApp/src/**
+            shared/src/commonMain/**
+            shared/src/androidMain/**
+            shared/src/commonTest/**
+      - name: Fetch tags
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: git fetch --tags -p
+      - uses: actions/setup-java@v4
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        with:
+          distribution: 'temurin'
+          java-version: '17'
+      - uses: gradle/actions/setup-gradle@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+      - uses: android-actions/setup-android@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+      - name: Configure gradle...
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: mkdir -p ~/.gradle && echo "org.gradle.daemon=false\nignoreGitVersion=true" >> ~/.gradle/gradle.properties
+      - name: Build and test
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: ./gradlew build -x testReleaseUnitTest -x testDebugUnitTest -x testGithubConfigReleaseUnitTest -x testGithubConfigDebugUnitTest
+      - name: coverage
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: |
+          ./gradlew :koverHtmlReport
+      - uses: actions/upload-artifact@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        with:
+          name: coverage
+          path: build/reports/kover/html
+          retention-days: 1
+          overwrite: true
+          include-hidden-files: true
   createTagAndChangelog:
     runs-on: ubuntu-latest
     needs: build
diff --git a/.gitea/workflows/on_pr.yml b/.gitea/workflows/on_pr.yml
index 7935296..481ed9b 100644
--- a/.gitea/workflows/on_pr.yml
+++ b/.gitea/workflows/on_pr.yml
@@ -5,7 +5,7 @@ on:
       - master
 
 jobs:
-  Lint:
+  PR:
     runs-on: ubuntu-latest
     steps:
       - name: Check out repository code
@@ -22,13 +22,6 @@ jobs:
         run: ktlint 'shared/**/*.kt' 'androidApp/**/*.kt' '!shared/build'
       - name: Detecting...
         run: ./detekt-cli-1.23.7/bin/detekt-cli -c detekt.yml --excludes '**/shared/build/**/*.kt'
-  translations:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository code
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
       - name: "Check translations changes"
         id: check-translations-changes
         uses: tj-actions/changed-files@v45
@@ -36,7 +29,7 @@ jobs:
           files: |
             androidApp/src/main/res/values/strings.xml
       - name: upload translation sources
-        if: steps.check-api-changes.outputs.any_modified == 'true'
+        if: steps.check-translations-changes.outputs.any_modified == 'true'
         uses: crowdin/github-action@v2
         with:
           config: './.gitea/workflows/assets/crowdin.yml'
@@ -49,10 +42,10 @@ jobs:
           CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
           CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
       - name: wait
-        if: steps.check-api-changes.outputs.any_modified == 'true'
+        if: steps.check-translations-changes.outputs.any_modified == 'true'
         run: sleep 10s
       - name: download translations
-        if: steps.check-api-changes.outputs.any_modified == 'true'
+        if: steps.check-translations-changes.outputs.any_modified == 'true'
         uses: crowdin/github-action@v2
         with:
           config: './.gitea/workflows/assets/crowdin.yml'
@@ -65,18 +58,18 @@ jobs:
           CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
           CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
       - name: Check for uncommitted changes
-        if: steps.check-api-changes.outputs.any_modified == 'true'
+        if: steps.check-translations-changes.outputs.any_modified == 'true'
         id: check-changes
         uses: mskri/check-uncommitted-changes-action@v1.0.1
       - name: Commit Changes
-        if: steps.check-api-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != ''
+        if: steps.check-translations-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != ''
         run: |
           git config --global user.email aminecmi+giteadrone@pm.me
           git config --global user.name giteadrone
           git add ./androidApp/src/main/res/*
           git commit -m "translation: translation files"
       - name: Push changes
-        if: steps.check-api-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != ''
+        if: steps.check-translations-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != ''
         uses: appleboy/git-push-action@v1.0.0
         with:
           author_name: giteadrone
@@ -84,17 +77,6 @@ jobs:
           remote: ${{ secrets.REMOTE_URL }}
           ssh_key: ${{ secrets.PRIVATE_KEY }}
           branch: ${{ github.head_ref || github.ref_name }}
-  build:
-    needs: Lint
-    uses: ./.gitea/workflows/common_build.yml
-  RunIntegrationTests:
-    needs: Lint
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out repository code
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
       - name: "Check android app changes"
         id: check-android-changes
         uses: tj-actions/changed-files@v45
@@ -107,18 +89,32 @@ jobs:
       - name: Fetch tags
         if: steps.check-android-changes.outputs.any_modified == 'true'
         run: git fetch --tags -p
-      - uses: actions/setup-java@v4
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        with:
-          distribution: 'temurin'
-          java-version: '17'
       - uses: gradle/actions/setup-gradle@v3
         if: steps.check-android-changes.outputs.any_modified == 'true'
       - uses: android-actions/setup-android@v3
         if: steps.check-android-changes.outputs.any_modified == 'true'
       - name: Configure gradle...
         if: steps.check-android-changes.outputs.any_modified == 'true'
-        run: mkdir -p ~/.gradle && echo "ignoreGitVersion=true" >> ~/.gradle/gradle.properties
+        run: mkdir -p ~/.gradle && echo "org.gradle.daemon=false\nignoreGitVersion=true" >> ~/.gradle/gradle.properties
+      - name: Change url until I find a better way to do it
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: |
+          sed -i "s/const DEFAULT_URL = \"http:\/\/10\.0\.2\.2\:8888\"/const DEFAULT_URL = \"http:\/\/172\.17\.0\.1\:8888\"/g" ./androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/CommonTests.kt
+      - name: Build and test
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: ./gradlew build -x testReleaseUnitTest -x testDebugUnitTest -x testGithubConfigReleaseUnitTest -x testGithubConfigDebugUnitTest
+      - name: coverage
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: |
+          ./gradlew :koverHtmlReport
+      - uses: actions/upload-artifact@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        with:
+          name: coverage
+          path: build/reports/kover/html
+          retention-days: 1
+          overwrite: true
+          include-hidden-files: true
       - uses: KengoTODA/actions-setup-docker-compose@v1
         if: steps.check-android-changes.outputs.any_modified == 'true'
         with:
@@ -127,10 +123,6 @@ jobs:
         if: steps.check-android-changes.outputs.any_modified == 'true'
         run: |
           docker compose -f .gitea/workflows/assets/docker-compose.yml up -d
-      - name: Change url until I find a better way to do it
-        if: steps.check-android-changes.outputs.any_modified == 'true'
-        run: |
-          sed -i "s/const DEFAULT_URL = \"http:\/\/10\.0\.2\.2\:8888\"/const DEFAULT_URL = \"http:\/\/172\.17\.0\.1\:8888\"/g" ./androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/CommonTests.kt
       - name: Tests
         if: steps.check-android-changes.outputs.any_modified == 'true'
         uses: reactivecircus/android-emulator-runner@v2
@@ -166,6 +158,6 @@ jobs:
           overwrite: true
           include-hidden-files: true
       - name: Clean
-        if: steps.check-android-changes.outputs.any_modified == 'true' || failure()
+        if: steps.check-android-changes.outputs.any_modified == 'true'
         run: |
           docker compose -f .gitea/workflows/assets/docker-compose.yml stop
diff --git a/.gitea/workflows/on_push.yml b/.gitea/workflows/on_push.yml
index 101d35b..3f1903e 100644
--- a/.gitea/workflows/on_push.yml
+++ b/.gitea/workflows/on_push.yml
@@ -6,4 +6,48 @@ on:
 
 jobs:
   build:
-    uses: ./.gitea/workflows/common_build.yml
\ No newline at end of file
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out repository code
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: "Check android app changes"
+        id: check-android-changes
+        uses: tj-actions/changed-files@v45
+        with:
+          files: |
+            androidApp/src/**
+            shared/src/commonMain/**
+            shared/src/androidMain/**
+            shared/src/commonTest/**
+      - name: Fetch tags
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: git fetch --tags -p
+      - uses: actions/setup-java@v4
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        with:
+          distribution: 'temurin'
+          java-version: '17'
+      - uses: gradle/actions/setup-gradle@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+      - uses: android-actions/setup-android@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+      - name: Configure gradle...
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: mkdir -p ~/.gradle && echo "org.gradle.daemon=false\nignoreGitVersion=true" >> ~/.gradle/gradle.properties
+      - name: Build and test
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: ./gradlew build -x testReleaseUnitTest -x testDebugUnitTest -x testGithubConfigReleaseUnitTest -x testGithubConfigDebugUnitTest
+      - name: coverage
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        run: |
+          ./gradlew :koverHtmlReport
+      - uses: actions/upload-artifact@v3
+        if: steps.check-android-changes.outputs.any_modified == 'true'
+        with:
+          name: coverage
+          path: build/reports/kover/html
+          retention-days: 1
+          overwrite: true
+          include-hidden-files: true