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`
* `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
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
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