Web lists-archives.com

Re: How to temporarily change KConfig-data for a unit test?




Am 2018-02-13 15:42, schrieb Aleix Pol:
On Tue, Feb 13, 2018 at 1:14 PM, Michael Heidelbach <ottwolt@xxxxxxxxx> wrote:
Hi!

Currently I'm working on baloo-widgets. For a unit test I need to
temporarily change KConfig data.

My approach would be like this:

initTestCase()

    KConfig config("baloofileinformationrc", KConfig::NoGlobals);
    KConfigGroup settings = config.group("Show");

        set everything to true here.

Revert the changes incleanupTestCase();

How is this done most efficiently and without messing too much with
baloofileinformationrc?

Ideally you should QStandardPaths::setTestModeEnabled(true), then you
can do as you please with config files which should end up in
~/.qttest.

A different approach could be to use a
KSharedConfig::openConfig(QString(), KConfig::SimpleConfig)

This creates an in-memory KConfig not backed by a file. That's what I use in KWin to mock config. All the objects interacting with config have a setConfig(KSharedConfigPtr) method which I can use to inject the mocked config.

Cheers
Martin