container:
  image: ghcr.io/cirruslabs/android-sdk:34
  kvm: true
  cpu: 8
  memory: 16G

instrumentation_tests_task:
  name: "Cirrus CI Instrumentation Tests"
  start_avd_background_script:
    sdkmanager --install "system-images;android-34;default;x86_64" "emulator";
    echo no | avdmanager create avd -n seedvault -k "system-images;android-34;default;x86_64";
    $ANDROID_HOME/emulator/emulator
    -avd seedvault
    -no-audio
    -no-boot-anim
    -gpu swiftshader_indirect
    -no-snapshot
    -no-window
    -writable-system;
  provision_avd_background_script:
    wget https://github.com/seedvault-app/seedvault-test-data/releases/download/3/backup.tar.gz;

    adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
    adb root;
    sleep 5;
    adb remount;
    adb reboot;
    adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
    adb root;
    sleep 5;
    adb remount;
    sleep 5;
  assemble_script:
    ./gradlew :app:assembleRelease :contacts:assembleRelease assembleAndroidTest
  install_app_script:
    timeout 180s bash -c 'while [[ -z $(adb shell mount | grep "/system " | grep "(rw,") ]]; do sleep 1; done;';
    adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';

    adb shell mkdir -p /sdcard/seedvault_baseline;
    adb push backup.tar.gz /sdcard/seedvault_baseline/backup.tar.gz;
    adb shell tar xzf /sdcard/seedvault_baseline/backup.tar.gz --directory=/sdcard/seedvault_baseline;

    adb shell mkdir -p /system/priv-app/Seedvault;
    adb push app/build/outputs/apk/release/app-release.apk /system/priv-app/Seedvault/Seedvault.apk;
    adb push permissions_com.stevesoltys.seedvault.xml /system/etc/permissions/privapp-permissions-seedvault.xml;
    adb push allowlist_com.stevesoltys.seedvault.xml /system/etc/sysconfig/allowlist-seedvault.xml;

    adb shell mkdir -p /system/priv-app/ContactsBackup;
    adb push contactsbackup/build/outputs/apk/release/contactsbackup-release.apk /system/priv-app/ContactsBackup/contactsbackup.apk;
    adb push contactsbackup/default-permissions_org.calyxos.backup.contacts.xml /system/etc/default-permissions/default-permissions_org.calyxos.backup.contacts.xml;

    adb shell bmgr enable true;
    adb reboot;
    adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
    adb shell bmgr transport com.stevesoltys.seedvault.transport.ConfigurableBackupTransport;
    adb reboot;
    adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
  run_large_tests_script: ./gradlew -Pandroid.testInstrumentationRunnerArguments.size=large :app:connectedAndroidTest
  run_other_tests_script: ./gradlew -Pandroid.testInstrumentationRunnerArguments.notAnnotation=androidx.test.filters.LargeTest connectedAndroidTest
  always:
    pull_screenshots_script:
      adb pull /sdcard/seedvault_test_results
    screenshots_artifacts:
      path: "seedvault_test_results/**/*.mp4"
    logcat_artifacts:
      path: "seedvault_test_results/**/*.log"