Adapt test environment for Plasmoid

Apparently just setting HOME does not work anymore. At least in my Plasma
setup XDG_DATA_HOME and XDG_CONFIG_HOME are now interfering. This change
introduced an extra helper script to take care of the environment variables
which unsets the XDG_… variables and also takes care of QT_PLUGIN_PATH by
the way.
This commit is contained in:
Martchus 2020-08-18 01:20:06 +02:00
parent 4711d8f91c
commit 80704e0028
5 changed files with 48 additions and 15 deletions

View File

@ -65,7 +65,7 @@ endforeach ()
plasma_install_package("${PLASMOID_PACKAGE_DIR}" "${META_ID}")
# add target to ease testing the plasmoid (see testing.md)
set(PLASMOID_TESTDIR "${CMAKE_CURRENT_BINARY_DIR}/testdir" CACHE STRING "specifies the Plasmoid test directory")
set(PLASMOID_TESTDIR "${CMAKE_BINARY_DIR}" CACHE STRING "specifies the Plasmoid test directory")
file(MAKE_DIRECTORY "${PLASMOID_TESTDIR}")
add_custom_target(init_plasmoid_testing
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/scripts/inittesting.sh" "${PLASMOID_CONFIG_TARGET_FILE_ABSOLUTE_PATH}"

View File

@ -1,16 +1,17 @@
#!/bin/bash
set -e
script_dir=$(dirname "${BASH_SOURCE[0]}")
source "$script_dir/settestenv.sh"
# use the package dir within the source-tree so one does not need to run CMake again for updating
# build-tree copy all the time
package_dir=$(dirname $0)/../package
package_dir=$script_dir/../package
# copy the generated desktop file back into the source-tree package dir so it can actually be used
meta_data_file=$1
cp --target-directory="$package_dir" "$meta_data_file"
# install or update the package into the working directory
export HOME="$PWD"
if ! plasmapkg2 --install "$package_dir"; then
plasmapkg2 --upgrade "$package_dir"
fi

22
plasmoid/scripts/settestenv.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
set -e
# use a sub directory within the build directory which is supposed to be $PWD
echo $PWD
export HOME=${TEST_HOME:-$PWD/plasmoid-testing}
echo "HOME directory used for Plasmoid testing: $HOME"
mkdir -p "$HOME"
# unset XDG_DATA_HOME and XDG_CONFIG_HOME to use Qt's default relying on just HOME (see qtbase/src/corelib/io/qstandardpaths_unix.cpp for defaults)
export XDG_DATA_HOME=
export XDG_CONFIG_HOME=
# set QT_PLUGIN_PATH if it has not already been set
if ! [[ $QT_PLUGIN_PATH ]]; then
if [[ -f $PWD/syncthingtray/plasmoid/lib/plasma/applets/libsyncthingplasmoid.so ]]; then
export QT_PLUGIN_PATH=$PWD/syncthingtray/plasmoid/lib
elif [[ -f $PWD/plasmoid/lib/plasma/applets/libsyncthingplasmoid.so ]]; then
export QT_PLUGIN_PATH=$PWD/plasmoid/lib
fi
echo "QT_PLUGIN_PATH used for Plasmoid testing: $QT_PLUGIN_PATH"
fi

View File

@ -0,0 +1,5 @@
#!/bin/bash
set -e
script_dir=$(dirname "${BASH_SOURCE[0]}")
source "$script_dir/settestenv.sh"
exec "$@"

View File

@ -4,19 +4,24 @@ The following instructions allow to test the Plasmoid by installing it in a test
rather than the regular home to separate testing from production.
1. Build as usual, ensure `NO_PLASMOID` is turned off
2. Add build step to execute custom target `init_plasmoid_testing` which
will install the Plasmoid in a test directory which is "$BUILD_DIR/plasmoid/testdir"
2. Add build step to execute the custom target `init_plasmoid_testing` which
will install the Plasmoid in a test directory which is `$CMAKE_BUILD_DIR/plasmoid-testing`
by default
3. Add new config for run in Qt Creator and set `plasmoidviewer` (or `plasmawindowed`)
as executable
4. In execution environment, set
* `QT_PLUGIN_PATH` to `$BUILD_DIR/plasmoid/lib` which should be containing the plugin
for the Plasmoid under `plasma/applets/libsyncthingplasmoid.so`
3. Add new config for run in Qt Creator and set `bash` as executable
4. Set `%{sourceDir}/../../syncthingtray/plasmoid/scripts/starttesting.sh plasmoidviewer --applet martchus.syncthingplasmoid`
as CLI argument
* It is also possible to use `plasmawindowed` or `plasmashell`, see sections below.
* This usage of `%{sourceDir}` assumes one used the "Building this straight" instructions
from the main README.md.
5. Keep `%{buildDir}` as working directory.
6. In execution environment there's nothing mandatory to be set because `starttesting.sh` should
already take care of setting the environment.
* The home directory is set in accordance with the directory used in step 2. but can be overridden
by setting `TEST_HOME`
* If not already set, `QT_PLUGIN_PATH` is set to `$CMAKE_CURRENT_BINARY_DIR/plasmoid/lib` which
should contain the plugin for the Plasmoid under `plasma/applets/libsyncthingplasmoid.so`
* `QT_DEBUG_PLUGINS` to 1 for verbose plugin detection
* `HOME` to the test directory from step 2 so plasmoidviewer finds the Plasmoid
in the test directory
5. Set `--applet martchus.syncthingplasmoid` as CLI argument
6. Ignore warning that executable is no debug build, it is sufficiant when
7. Ignore warning that executable is no debug build, it is sufficiant when
the plugin is a debug build (see next section for QML debugging)
## Saving/restoring settings