#!/bin/sh
# -*- Mode: sh; indent-tabs-mode: nil; tab-width: 2 -*-
#
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: Michael Terry

# Note that you need to be running under X11 for these tests to work

EXISTING=$(ps x -o pid,cmd | grep deja-dup | sed 's/^ *\([0-9]\+\).*/\1/')
if [ -n "$EXISTING" ]; then
  kill -9 $EXISTING 2>/dev/null
fi

export LANG=C.UTF
export TZ=HST # hawaii time zone
export DEJA_DUP_TEST_FAST_FAIL=1

if [ "$1" = "--snap" ]; then
  shift
  export GSETTINGS_SCHEMA_DIR=/snap/deja-dup/current/usr/share/glib-2.0/schemas
  export DD_MODE="snap"
  export DD_EXEC="snap run deja-dup"
  export DD_MONITOR_EXEC="snap run deja-dup.monitor"
  export DD_CACHE_DIR=$HOME/.cache/deja-dup
  export DD_APPID=org.gnome.DejaDup
  export DD_DESKTOP="X-SnapInstanceName=deja-dup"

elif [ "$1" = "--flatpak" ]; then
  shift
  export GSETTINGS_BACKEND=keyfile
  export XDG_CONFIG_HOME=$HOME/.var/app/org.gnome.DejaDup/config
  export GSETTINGS_SCHEMA_DIR="$(flatpak info org.gnome.DejaDup -l)/files/share/glib-2.0/schemas"
  export DD_MODE="flatpak"
  export DD_EXEC="flatpak run --filesystem=/tmp -p org.gnome.DejaDup"
  export DD_MONITOR_EXEC="flatpak run -p --command=/app/libexec/deja-dup/deja-dup-monitor org.gnome.DejaDup"
  export DD_CACHE_DIR=$HOME/.var/app/org.gnome.DejaDup/cache/deja-dup
  export DD_APPID=org.gnome.DejaDup
  export DD_DESKTOP="X-Flatpak=org.gnome.DejaDup"
  export DD_KEYFILE=$XDG_CONFIG_HOME/glib-2.0/settings/keyfile
  export DD_KEYFILE_GROUPNAME="deja-dup"

  cp -a ~/.config/user-dirs.dirs "$XDG_CONFIG_HOME"

  # Here's how to set up flatpak for French and English:
  #  flatpak config --set languages "en;fr"
  #  flatpak update -y --subpath=/en --subpath=/fr org.gnome.DejaDup.Locale
  #  flatpak update -y --subpath=/en --subpath=/fr org.gnome.Platform.Locale

elif [ "$1" = "--flatpak-dev" ]; then
  shift
  export GSETTINGS_BACKEND=keyfile
  export XDG_CONFIG_HOME=$HOME/.var/app/org.gnome.DejaDupDevel/config
  export GSETTINGS_SCHEMA_DIR="$(flatpak info --user org.gnome.DejaDupDevel -l)/files/share/glib-2.0/schemas"
  export DD_MODE="flatpak"
  export DD_EXEC="flatpak run --user --filesystem=/tmp -p org.gnome.DejaDupDevel"
  export DD_MONITOR_EXEC="flatpak run --user -p --command=/app/libexec/deja-dup/deja-dup-monitor org.gnome.DejaDupDevel"
  export DD_CACHE_DIR=$HOME/.var/app/org.gnome.DejaDupDevel/cache/deja-dup
  export DD_APPID=org.gnome.DejaDupDevel
  export DD_DESKTOP="X-Flatpak=org.gnome.DejaDupDevel"
  export DD_KEYFILE=$XDG_CONFIG_HOME/glib-2.0/settings/keyfile
  export DD_KEYFILE_GROUPNAME="deja-dup-devel"

  cp -a ~/.config/user-dirs.dirs "$XDG_CONFIG_HOME"

  # Here's how to set up flatpak for French and English:
  #  flatpak config --user --set languages "en;fr"
  #  flatpak update --user -y --subpath=/en --subpath=/fr org.gnome.DejaDupDevel.Locale
  #  flatpak update -y --subpath=/en --subpath=/fr org.gnome.Platform.Locale

elif [ "$1" = "--dev" ]; then
  shift
  export DD_MODE="dev"
  export DD_EXEC="meson devenv -C _build deja-dup"
  export DD_MONITOR_EXEC="meson devenv -C _build deja-dup-monitor"
  export DD_CACHE_DIR=$HOME/.cache/deja-dup
  export DD_APPID=org.gnome.DejaDupDevel

else
  echo "Must provide a mode"
  exit 1
fi

# Dogtail requires this
gsettings set org.gnome.desktop.interface toolkit-accessibility true

exec python3 -m pytest $*
