Summary:
KDesktopFile::sortOrder() returns the value of SortOrder key
as a string whithout parsing it as a list.
But according to Desktop Entry Specification
https://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
it's type is "string(s)", i.e. the same type as the type of
Actions and MimeType keys, and thus it should be read the same way.
Reviewers: #frameworks, dfaure
Reviewed By: dfaure
Subscribers: dfaure, #frameworks
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D8689
Summary:
The CI has $HOME=/home/jenkins/ with a trailing slash, which leads to
FAIL! : KConfigTest::testPath() Compared values are not the same
Actual (sc3.readPathEntry("homepath", QString())): "/home/jenkins//foo"
Expected (HOMEPATH): "/home/jenkins/foo"
QDir::homePath() is too clean for our purposes, use $HOME on Unix.
Test Plan:
kconfigtest now passes with HOME=/home/dfaure/
Summary: We will be using an external version of it in practice
Reviewers: #frameworks, davidedmundson
Reviewed By: davidedmundson
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D8457
As per the Desktop Entry spec, we strip trailing whitespace from the key
when we split an entry into a key/value pair at the '='. Now we also
strip leading whitespace from the resulting value like we should.
CCBUG:310674
Differential Revision: https://phabricator.kde.org/D7169
Summary:
This is particularly useful for cross-compilation, where we only need the
kconfig_compiler on the host system.
Reviewers: #frameworks, apol, aacid
Reviewed By: aacid
Subscribers: aacid
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D6994
1) some of them can't run in parallel
2) kconfigskeletontest failed due to KSharedConfig being used under the
scene (for a year now), and there's probably some QPA or widget style
holding a ref (here, not in the CI). Indirectly, simply setting
QStandardPaths::setTestModeEnabled(true) fixes this since KSharedConfig
will then not share the instance with the non-test-mode-enabled instance.
Use the QProcess::start() variant with explicit (empty, in this case)
arguments, so the program string is not parsed as shell command, thus
preserving paths with spaces as such.
The "dir" and "path" variables were obviously swapped here by mistake.
This resulted in the relativePath always being empty, and made the
function return "~/.local/share/" (or "~/.config/") instead of the
correct path.
BUG: 345100
FIXED-IN: 5.34.0
Differential Revision: https://phabricator.kde.org/D5502
Summary:
In case a kcfg with arg="true" was used and singleton the static
instance method only accepted a QString config name. This made it
impossible to combine a singleton config with an already existing and
open KSharedConfig::Ptr.
With this change an overloaded instance method is added which takes a
KSharedConfig::Ptr as argument. The private ctor, though, only takes a
KSharedConfig::Ptr and the instance method taking a QString argument
uses KSharedConfig::openConfig on the config file name.
The change is source-incompatible in the following situation:
* kcfgfile arg="true"
* Singleton = true
* Inherits is specified
In this situation the previous revision created an instance method with
a QString argument and passed that to the parent constructor. This is
not in accordance with the documentation. Any user of this behavior was
relying on a bug. With this change now the call to the parent
constructor carries a KSharedConfigPtr.
Test Plan:
kconfigcompiler tests still pass and a config with singleton
and arg="true" generates the code as I need it
Reviewers: #frameworks, dfaure, mdawson
Differential Revision: https://phabricator.kde.org/D3690
Summary:
In case a kcfg with arg="true" was used and singleton the static
instance method only accepted a QString config name. This made it
impossible to combine a singleton config with an already existing and
open KSharedConfig::Ptr.
With this change an overloaded instance method is added which takes a
KSharedConfig::Ptr as argument. The private ctor, though, only takes a
KSharedConfig::Ptr and the instance method taking a QString argument
uses KSharedConfig::openConfig on the config file name.
This provides full API compatibility and at the same time allows to use
KSharedConfig in addition to the arg name based variant.
Test Plan:
kconfigcompiler tests still pass and a config with singleton
and arg="true" generates the code as I need it
Reviewers: #frameworks
Differential Revision: https://phabricator.kde.org/D3386
Summary:
Instead of having an odd fake of it. Will help some required
refactorings and already showed some issues, fixed by this patch,
namely:
- don't use string(regex replace) to extract a string from another
string. in case it doesn't match it will offer the whole content which
is never what we want.
- messages(ERROR), the correct parameter is FATAL_ERROR, cmake
understands "ERROR" as mere output string
- turn the macro into a function, otherwise 2 calls in the same
subdirectory are dangerous.
CCBUG: 371562
Test Plan: tests still pass, projects that use the macro still build
Reviewers: #frameworks, dfaure
Reviewed By: dfaure
Subscribers: dfaure
Differential Revision: https://phabricator.kde.org/D3178
The test checks that saving a read-only config file fails. But because root can write into read-only files, the test is failing when running by root. Check for uid when running the test and make it XFAIL if we are running as root.
REVIEW: 128916
Inside desktop files we want to reach also data, cache and config home
to create files inside these directories.
REVIEW: 127462
CHANGELOG: Add support for get QStandardPaths locations inside desktop files.
During a kconf_update run, an invalid group name may be treated as correct
even though the name failed to unescape. This leads the group name to be
a null character, which will fail.
If the unescape failed, return that failure status instead. This should have
no impact, as the previous result would have been wrong anyways. Now a
more useful diagnostic will be returned instead.
Update the unit tests to ensure this issue is tested in the future.
Found in Coverity issue 258087.
REVIEW: 126556
Due to https://codereview.qt-project.org/#/c/106473/, Qt 5.6 keeps null
characters in QByteArray -> QString conversions, which breaks this test as
one QByteArray contains nulls. Instead, convert the QByteArray to const
char * first, so QString stops at the first null.
The actual behaviour of KConfig is unchanged, as internally the conversion
always went through a const char *, which avoids creating QStrings with
null characters.
REVIEW: 126001
In applications translations can be looked up in the globally set
translation domain, but in libraries it is necessary to link every
i18n call to the library's own translation domain. A new code
generation option TranslationDomain= is added to enable this.
It has effect only if TranslationSystem=kde is set.
Added unit tests to check generated translation calls.
CHANGELOG: New code generation option TranslationDomain=, for use with TranslationSystem=kde; normally needed in libraries.
REVIEW: 123872