From 0b0a4464fb3d1145eb612b1ab7edacfa9581c8c9 Mon Sep 17 00:00:00 2001 From: Alexander Lohnau Date: Tue, 14 Sep 2021 07:30:32 +0200 Subject: Allow KConfigXT to use KSharedConfig::openStateConfig Otherwise we force consumers to use the config location for state data, which is what we are trying to avoid. Task: https://phabricator.kde.org/T12549 --- autotests/kconfig_compiler/CMakeLists.txt | 9 +++++ autotests/kconfig_compiler/test_state_config.kcfg | 14 ++++++++ autotests/kconfig_compiler/test_state_config.kcfgc | 6 ++++ .../kconfig_compiler/test_state_config_main.cpp | 41 ++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 autotests/kconfig_compiler/test_state_config.kcfg create mode 100644 autotests/kconfig_compiler/test_state_config.kcfgc create mode 100644 autotests/kconfig_compiler/test_state_config_main.cpp (limited to 'autotests/kconfig_compiler') diff --git a/autotests/kconfig_compiler/CMakeLists.txt b/autotests/kconfig_compiler/CMakeLists.txt index 2a4b343b..4641c0e0 100644 --- a/autotests/kconfig_compiler/CMakeLists.txt +++ b/autotests/kconfig_compiler/CMakeLists.txt @@ -172,6 +172,15 @@ target_link_libraries(test13 KF5::ConfigGui) ########### next target ############### +set(test_state_config_SRCS test_state_config_main.cpp) + +gen_kcfg_test_source(test_state_config test_state_config_SRCS GENERATE_MOC) + +ecm_add_test(TEST_NAME test_state_config ${test_state_config_SRCS}) +target_link_libraries(test_state_config KF5::ConfigGui Qt5::Test) + +########### next target ############### + set(test_emptyentries_SRCS test_emptyentries_main.cpp ) gen_kcfg_test_source(test_emptyentries test_emptyentries_SRCS GENERATE_MOC) diff --git a/autotests/kconfig_compiler/test_state_config.kcfg b/autotests/kconfig_compiler/test_state_config.kcfg new file mode 100644 index 00000000..9c9e96c3 --- /dev/null +++ b/autotests/kconfig_compiler/test_state_config.kcfg @@ -0,0 +1,14 @@ + + + + + + + 0 + + + + diff --git a/autotests/kconfig_compiler/test_state_config.kcfgc b/autotests/kconfig_compiler/test_state_config.kcfgc new file mode 100644 index 00000000..35e2de7d --- /dev/null +++ b/autotests/kconfig_compiler/test_state_config.kcfgc @@ -0,0 +1,6 @@ +# Code generation options for kconfig_compiler_kf5 +File=test_state_config.kcfg +ClassName=MyStateConfig +Singleton=false +Mutators=true +ItemAccessors=true diff --git a/autotests/kconfig_compiler/test_state_config_main.cpp b/autotests/kconfig_compiler/test_state_config_main.cpp new file mode 100644 index 00000000..07044bb5 --- /dev/null +++ b/autotests/kconfig_compiler/test_state_config_main.cpp @@ -0,0 +1,41 @@ +/* + SPDX-FileCopyrightText: 2021 Alexander Lohnau + + SPDX-License-Identifier: MIT +*/ + +#include "test_state_config.h" +#include + +class TestStateConfig : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + void testStateConfig() + { + auto stateConfig = KSharedConfig::openStateConfig(QStringLiteral("test_statedatarc")); + + // Clean the group at every start + stateConfig->deleteGroup("General"); + stateConfig->sync(); + + // It should have the default value + QCOMPARE(MyStateConfig().someStateData(), 0); + + // the updated value should be read from the generated config class + stateConfig->group("General").writeEntry("SomeStateData", 1); + QCOMPARE(MyStateConfig().someStateData(), 1); + + // Make sure writing the value works as expected + MyStateConfig cfg; + cfg.setSomeStateData(2); + QVERIFY(cfg.isSaveNeeded()); + cfg.save(); + stateConfig->reparseConfiguration(); + QCOMPARE(stateConfig->group("General").readEntry("SomeStateData", -1), 2); + } +}; +QTEST_MAIN(TestStateConfig) + +#include "test_state_config_main.moc" -- cgit v1.2.1