From e1d3a54ebfb0eb33d6da1e33666f06b21c9cd561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Wed, 17 Jul 2024 20:11:44 +0200 Subject: [PATCH] ci: basic sonarqube action --- {.gitea => .forgejo}/ISSUE_TEMPLATE/bug.md | 0 .../ISSUE_TEMPLATE/feature.md | 0 .forgejo/workflows/sq_analyze.yml | 45 +++++++++++++++++++ integration_test/app_test.dart | 6 ++- lib/api/wallet_manager.dart | 1 - lib/views/initialization_screen.dart | 2 +- sonar-project.properties | 7 +++ test_driver/integration_test.dart | 3 ++ 8 files changed, 61 insertions(+), 3 deletions(-) rename {.gitea => .forgejo}/ISSUE_TEMPLATE/bug.md (100%) rename {.gitea => .forgejo}/ISSUE_TEMPLATE/feature.md (100%) create mode 100644 .forgejo/workflows/sq_analyze.yml create mode 100644 sonar-project.properties create mode 100644 test_driver/integration_test.dart diff --git a/.gitea/ISSUE_TEMPLATE/bug.md b/.forgejo/ISSUE_TEMPLATE/bug.md similarity index 100% rename from .gitea/ISSUE_TEMPLATE/bug.md rename to .forgejo/ISSUE_TEMPLATE/bug.md diff --git a/.gitea/ISSUE_TEMPLATE/feature.md b/.forgejo/ISSUE_TEMPLATE/feature.md similarity index 100% rename from .gitea/ISSUE_TEMPLATE/feature.md rename to .forgejo/ISSUE_TEMPLATE/feature.md diff --git a/.forgejo/workflows/sq_analyze.yml b/.forgejo/workflows/sq_analyze.yml new file mode 100644 index 0000000..c851907 --- /dev/null +++ b/.forgejo/workflows/sq_analyze.yml @@ -0,0 +1,45 @@ +on: + push: + branches: + - 'dev' +env: + SONAR_TOKEN: ${{ secrets.SQ_KEY }} +jobs: + build: + runs-on: flutter-beta + steps: + - name: Initialize scanner + run: | + export SONAR_SCANNER_VERSION=6.0.0.4432 + export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux + curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip + unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ + export PATH=$SONAR_SCANNER_HOME/bin:$PATH + export SONAR_SCANNER_OPTS="-server" + + - name: Initialize AVD + run: | + sdkmanager "platform-tools" "platforms;android-${{ vars.ANDROID_API }}" + sdkmanager --install "system-images;android-${apiLevel};${{ vars.ANDROID_TARGET }}${{ vars.ANDROID_ARCH }}" + sdkmanager --update + echo "y" | sdkmanager --licenses + sdkmanager --list + echo "no" | avdmanager -v create avd --force --name "android_emulator" --package "system-images;android-${apiLevel};${target};${arch}" --tag "${target}" --sdcard 128M --device "${{ vars.ANDROID_DEVICE }}" + emulator -avd "android_emulator" -no-audio -no-window -no-snapstorage -no-snapshot -gpu swiftshader_indirect -no-boot-anim -no-accel -wipe-data -skip-adb-auth & + adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82' + flutter doctor -v + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + flutter pub get + + - name: Run tests + run: | + flutter test integration_test/app_test.dart --coverage --reporter json > tests.output + + - name: Run scanner + run: | + sonar-scanner \ No newline at end of file diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index 851e093..a7a8299 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:logger/logger.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:prasule/api/category.dart'; import 'package:prasule/api/entry_data.dart'; import 'package:prasule/api/wallet.dart'; @@ -18,7 +19,10 @@ import 'package:prasule/pw/platformfield.dart'; void main() { final logger = Logger(); IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - + setUp(() async { + WalletManager.walletPath = + "${(await getApplicationDocumentsDirectory()).path}/wallets"; + }); group("Test classes and API", () { test("Test wallet operations", () async { expect( diff --git a/lib/api/wallet_manager.dart b/lib/api/wallet_manager.dart index a23da8e..e9d39c7 100644 --- a/lib/api/wallet_manager.dart +++ b/lib/api/wallet_manager.dart @@ -33,7 +33,6 @@ class WalletManager { for (final w in path .listSync() .whereType() - .where((e) => e.path.endsWith(".json")) .map((e) => e.path.split("/").last) .toList()) { try { diff --git a/lib/views/initialization_screen.dart b/lib/views/initialization_screen.dart index f8f1fc7..dc186a5 100644 --- a/lib/views/initialization_screen.dart +++ b/lib/views/initialization_screen.dart @@ -23,7 +23,7 @@ class _InitializationScreenState extends State { void initState() { super.initState(); getApplicationDocumentsDirectory().then((v) { - WalletManager.walletPath = v.path; + WalletManager.walletPath = "${v.path}/wallets"; if (!mounted) return; final wallets = WalletManager.listWallets(); if (wallets.isEmpty && mounted) { diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..1994cb5 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,7 @@ +sonar.projectKey=prasule +sonar.sources=lib,pubspec.yaml +sonar.tests=test +sonar.dart.analyzer.mode=MANUAL +sonar.dart.analyzer.report.path= +sonar.dart.analyzer.options.override=true +sonar.host.url=https://sq.mnau.xyz \ No newline at end of file diff --git a/test_driver/integration_test.dart b/test_driver/integration_test.dart new file mode 100644 index 0000000..b38629c --- /dev/null +++ b/test_driver/integration_test.dart @@ -0,0 +1,3 @@ +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver();