Merge lp:~compiz-team/compiz/compiz.gsettings_conformance_test into lp:compiz/0.9.8

Proposed by Sam Spilsbury
Status: Superseded
Proposed branch: lp:~compiz-team/compiz/compiz.gsettings_conformance_test
Merge into: lp:compiz/0.9.8
Prerequisite: lp:~compiz-team/compiz/compiz.split_gsettings_rw_funcs
Diff against target: 885 lines (+607/-69)
10 files modified
compizconfig/compizconfig-python/tests/compiz_config_test.py (+4/-1)
compizconfig/gsettings/gsettings_backend_shared/gsettings_util.c (+24/-9)
compizconfig/gsettings/gsettings_backend_shared/gsettings_util.h (+2/-3)
compizconfig/gsettings/src/gsettings.c (+3/-0)
compizconfig/gsettings/tests/CMakeLists.txt (+19/-3)
compizconfig/gsettings/tests/backend-conformance-config.h.in (+1/-0)
compizconfig/gsettings/tests/org.compiz.mock.gschema.xml (+0/-53)
compizconfig/gsettings/tests/test_gsettings_conformance.cpp (+548/-0)
compizconfig/libcompizconfig/config/CMakeLists.txt (+3/-0)
compizconfig/libcompizconfig/config/config_test (+3/-0)
To merge this branch: bzr merge lp:~compiz-team/compiz/compiz.gsettings_conformance_test
Reviewer Review Type Date Requested Status
Compiz Maintainers Pending
Review via email: mp+116132@code.launchpad.net

This proposal supersedes a proposal from 2012-07-12.

This proposal has been superseded by a proposal from 2012-08-07.

Description of the change

Instantiate the GSettings backend in a test harness and run the conformance tests on it.

This is not actually needing review, I've just got it marked as Needs Review so that the CI bot will run tests on it.

To post a comment you must log in.
3397. By Sam Spilsbury

Always assume that lists are copied - fix list leak (and use smart
pointers more effectively)

3398. By Sam Spilsbury

Fix leaked path in CCSGSettingsBackendEnv::SetUp

3399. By Sam Spilsbury

Fix memory leak in readListValue in gsettings.c - we must always
provide a valid CCSSetting object otherwise ccsFreeSettingValue will not
actually free the setting value

3400. By Sam Spilsbury

Fix various memory leaks due to not unreffing some variants

Revision history for this message
Sam Spilsbury (smspillaz) wrote :

CI doesn't seem to care ... WIP ...

3401. By Sam Spilsbury

Added debugging message

3402. By Sam Spilsbury

Put the expectation in the right place

3403. By Sam Spilsbury

Indirect the gconf client registration

3404. By Sam Spilsbury

Neuter gconf client connection

3405. By Sam Spilsbury

Lazy-register the gconf client

3406. By Sam Spilsbury

file (INSTALL ...) will respect DESTDIR by default, so no need to include
it again.

3407. By Sam Spilsbury

Fix some crashes in debian chroots

3408. By Sam Spilsbury

Make the profile general for tests

3409. By Sam Spilsbury

Added testing config backend

3410. By Sam Spilsbury

Merge lp:compiz

3411. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3412. By Sam Spilsbury

Merge

3413. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3414. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3415. By Sam Spilsbury

Merge

3416. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3417. By Sam Spilsbury

Merge

3418. By Sam Spilsbury

Added a quick TODO about the usage of sys.path

3419. By Sam Spilsbury

Just override sys.path[0] for now, need to prepend

3420. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3421. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3422. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3423. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3424. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3425. By Sam Spilsbury

Merge

3426. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3427. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3428. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3429. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3430. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3431. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3432. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3433. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3434. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3435. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3436. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3437. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3438. By Sam Spilsbury

Merge from previous. All the GSettings backend tests fail but that's fine

3439. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3440. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3441. By Sam Spilsbury

Fix crashing GSettings tests

3442. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3443. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3444. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3445. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3446. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3447. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3448. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3449. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3450. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3451. By Sam Spilsbury

Merge

3452. By Sam Spilsbury

Nuke unused function in header file

3453. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3454. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3455. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3456. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3457. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3458. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3459. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3460. By Sam Spilsbury

Merge

3461. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3462. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3463. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3464. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3465. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3466. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3467. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3468. By Sam Spilsbury

Moved CharacterWrapper definition into tests/shared/gtest_shared_characterwrapper.h

3469. By Sam Spilsbury

Merge

3470. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3471. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3472. By Sam Spilsbury

Merge

3473. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3474. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3475. By Sam Spilsbury

Fix merge marker

3476. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3477. By Sam Spilsbury

Add match-list-setting to the mock schema

3478. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3479. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3480. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3481. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3482. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3483. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3484. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3485. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3486. By Sam Spilsbury

Enable info tests for gsettigs

3487. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3488. By Sam Spilsbury

Use the much more sensible, law of demeter friendly version

3489. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3490. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3491. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3492. By Sam Spilsbury

Added expectation stubs and fix crash

3493. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3494. By Sam Spilsbury

Instantiate the tests and set the right expectations

3495. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3496. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3497. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3498. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3499. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3500. By Sam Spilsbury

Pass the object allocator too

3501. By Sam Spilsbury

First steps to getting the wrapper under test

3502. By Sam Spilsbury

Merge

3503. By Sam Spilsbury

Merge

3504. By Sam Spilsbury

Backend conformance config really belongs in gsettings

3505. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3506. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3507. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3508. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3509. By Sam Spilsbury

Update for API changes

3510. By Sam Spilsbury

Merge and remove redundant code

3511. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3512. By Sam Spilsbury

Test fixture for CCSGSettingsTestFindSettingAndPluginToUpdateFromPath

3513. By Sam Spilsbury

Comprehensive test coverage for FindSettingAndPluginToUpdateFromPath
and some cleanup, fix leaks etc

3514. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3515. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3516. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3517. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3518. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3519. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3520. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3521. By Sam Spilsbury

Added stubs for tests, fixed double unrefs due to GSettings' really
annoying stealing behaviour

3522. By Sam Spilsbury

Instantiate the CCSBackendConformanceTestProfileHandling suite for
the GSettings backend conformance test

3523. By Sam Spilsbury

Fix more double unref

3524. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3525. By Sam Spilsbury

Added AddProfile stub

3526. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3527. By Sam Spilsbury

Add default and current profiles correctly

3528. By Sam Spilsbury

Handle default and current profile cases in the tests a little better

3529. By Sam Spilsbury

Merge

3530. By Sam Spilsbury

Merge

3531. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3532. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3533. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3534. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3535. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3536. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3537. By Sam Spilsbury

Correct expectations

3538. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3539. By Sam Spilsbury

Merge

3540. By Sam Spilsbury

Fixed a set of memory leaks in the GSettings conformance tests - we must
be careful to unref the variants once they are read

3541. By Sam Spilsbury

Merge

3542. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3543. By Sam Spilsbury

Remove dupe file

3544. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3545. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3546. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

3547. By Sam Spilsbury

Merged compiz.split_gsettings_rw_funcs into compiz.gsettings_conformance_test.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'compizconfig/compizconfig-python/tests/compiz_config_test.py'
2--- compizconfig/compizconfig-python/tests/compiz_config_test.py 2012-07-07 05:53:00 +0000
3+++ compizconfig/compizconfig-python/tests/compiz_config_test.py 2012-08-06 14:57:34 +0000
4@@ -5,10 +5,13 @@
5 arch = subprocess.Popen (["uname", "-p"], stdout=subprocess.PIPE).communicate ()[0][:-1]
6
7 os.environ["COMPIZ_METADATA_PATH"] = "generated/"
8+os.environ["COMPIZ_CONFIG_PROFILE"] = ""
9+os.environ["XDG_CONFIG_HOME"] = "compizconfig/libcompizconfig/config"
10 os.environ["LIBCOMPIZCONFIG_BACKEND_PATH"] = "compizconfig/libcompizconfig/backend/"
11 os.environ["XDG_DATA_DIRS"] = "generated/"
12
13-sys.path.append ("compizconfig/compizconfig-python/build/lib.linux-" + arch + "-" + str (sys.version_info[0]) + "." + str (sys.version_info[1]) + "/")
14+# TODO: does this really work ?
15+sys.path[0] = "compizconfig/compizconfig-python/build/lib.linux-" + arch + "-" + str (sys.version_info[0]) + "." + str (sys.version_info[1]) + "/"
16
17 import unittest
18 import compizconfig
19
20=== modified file 'compizconfig/gsettings/gsettings_backend_shared/gsettings_util.c'
21--- compizconfig/gsettings/gsettings_backend_shared/gsettings_util.c 2012-08-06 14:57:33 +0000
22+++ compizconfig/gsettings/gsettings_backend_shared/gsettings_util.c 2012-08-06 14:57:34 +0000
23@@ -944,13 +944,21 @@
24 const char *item;
25 } FindItemInVariantData;
26
27+typedef struct _InsertIfNotEqualData
28+{
29+ gboolean skipped;
30+ const char *item;
31+} InsertIfNotEqualData;
32+
33 static void
34 insertIfNotEqual (GVariantBuilder *builder, const char *item, void *userData)
35 {
36- const char *cmp = (const char *) userData;
37+ InsertIfNotEqualData *data = (InsertIfNotEqualData *) userData;
38
39- if (g_strcmp0 (item, cmp))
40+ if (g_strcmp0 (item, data->item))
41 g_variant_builder_add (builder, "s", item);
42+ else
43+ data->skipped = TRUE;
44 }
45
46 static void
47@@ -1003,18 +1011,25 @@
48 return !findItemData.found;
49 }
50
51-void
52-removeItemFromVariant (GVariant **variant,
53- const char *string)
54+gboolean removeItemFromVariant (GVariant **variant,
55+ const char *string)
56 {
57 GVariantBuilder newVariantBuilder;
58
59+ InsertIfNotEqualData data =
60+ {
61+ FALSE,
62+ string
63+ };
64+
65 g_variant_builder_init (&newVariantBuilder, G_VARIANT_TYPE ("as"));
66
67- rebuildVariant (&newVariantBuilder, *variant, insertIfNotEqual, (void *) string);
68+ rebuildVariant (&newVariantBuilder, *variant, insertIfNotEqual, (void *) &data);
69
70 g_variant_unref (*variant);
71 *variant = g_variant_builder_end (&newVariantBuilder);
72+
73+ return data.skipped;
74 }
75
76 void
77@@ -1109,6 +1124,7 @@
78 GVariant *plugins;
79 GVariant *profiles;
80 const char *currentProfile = ccsGSettingsBackendGetCurrentProfile (backend);
81+ gboolean ret = FALSE;
82
83 plugins = ccsGSettingsBackendGetPluginsWithSetKeys (backend);
84 profiles = ccsGSettingsBackendGetExistingProfiles (backend);
85@@ -1116,18 +1132,17 @@
86 ccsGSettingsBackendUnsetAllChangedPluginKeysInProfile (backend, context, plugins, currentProfile);
87 ccsGSettingsBackendClearPluginsWithSetKeys (backend);
88
89- removeItemFromVariant (&profiles, profile);
90+ ret = removeItemFromVariant (&profiles, profile);
91
92 /* Remove the profile from existing-profiles */
93 ccsGSettingsBackendSetExistingProfiles (backend, profiles);
94-
95 ccsGSettingsBackendUpdateProfile (backend, context);
96
97 /* Since we do not call g_settings_set_value on
98 * plugins, we must also unref the variant */
99 g_variant_unref (plugins);
100
101- return TRUE;
102+ return ret;
103 }
104
105 void
106
107=== modified file 'compizconfig/gsettings/gsettings_backend_shared/gsettings_util.h'
108--- compizconfig/gsettings/gsettings_backend_shared/gsettings_util.h 2012-08-06 14:57:33 +0000
109+++ compizconfig/gsettings/gsettings_backend_shared/gsettings_util.h 2012-08-06 14:57:34 +0000
110@@ -203,9 +203,8 @@
111 appendStringToVariantIfUnique (GVariant **variant,
112 const char *string);
113
114-void
115-removeItemFromVariant (GVariant **variant,
116- const char *string);
117+gboolean removeItemFromVariant (GVariant **variant,
118+ const char *string);
119
120 CCSSettingValueList
121 readBoolListValue (GVariantIter *iter, guint nItems, CCSSetting *setting, CCSObjectAllocationInterface *allocator);
122
123=== modified file 'compizconfig/gsettings/src/gsettings.c'
124--- compizconfig/gsettings/src/gsettings.c 2012-08-06 14:57:33 +0000
125+++ compizconfig/gsettings/src/gsettings.c 2012-08-06 14:57:34 +0000
126@@ -776,6 +776,9 @@
127
128 CCSGSettingsBackendPrivate *priv = (CCSGSettingsBackendPrivate *) ccsObjectGetPrivate (backend);
129
130+ /* Update the current profile in case it was changed compizconfig side */
131+ ccsGSettingsBackendUpdateProfile (backend, context);
132+
133 value = ccsGSettingsWrapperGetValue (priv->compizconfigSettings, "existing-profiles");
134 g_variant_iter_init (&iter, value);
135 while (g_variant_iter_loop (&iter, "s", &profile))
136
137=== modified file 'compizconfig/gsettings/tests/CMakeLists.txt'
138--- compizconfig/gsettings/tests/CMakeLists.txt 2012-08-06 14:57:33 +0000
139+++ compizconfig/gsettings/tests/CMakeLists.txt 2012-08-06 14:57:34 +0000
140@@ -10,6 +10,8 @@
141
142 pkg_check_modules (COMPIZCONFIG_TEST_GSETTINGS libcompizconfig)
143
144+link_directories (${CMAKE_CURRENT_BINARY_DIR}/../../libcompizconfig/tests)
145+
146 add_library (compizconfig_ccs_gsettings_wrapper_mock STATIC
147 ${CMAKE_CURRENT_SOURCE_DIR}/ccs_gsettings_wrapper_mock.cpp
148 ${CMAKE_CURRENT_SOURCE_DIR}/ccs_gsettings_wrapper_mock.h)
149@@ -24,7 +26,8 @@
150 ${CMAKE_CURRENT_SOURCE_DIR}/test_gsettings.cpp
151 ${CMAKE_CURRENT_SOURCE_DIR}/test_gsettings_tests.h)
152
153-link_directories (${CMAKE_CURRENT_BINARY_DIR}/../../libcompizconfig/tests)
154+add_executable (compizconfig_test_gsettings_conformance
155+ ${CMAKE_CURRENT_SOURCE_DIR}/test_gsettings_conformance.cpp)
156
157 target_link_libraries (compizconfig_test_gsettings
158 gsettings_backend_shared
159@@ -37,6 +40,9 @@
160 ${GTEST_BOTH_LIBRARIES}
161 ${GMOCK_MAIN_LIBRARY})
162
163+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/gsettings-mock-schemas-config.h.in
164+ ${CMAKE_CURRENT_BINARY_DIR}/gsettings-mock-schemas-config.h)
165+
166 add_custom_command (OUTPUT ${CMAKE_BINARY_DIR}/generated/glib-2.0/schemas/org.compiz.mock.gschema.xml
167 COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/org.compiz.mock.gschema.xml ${CMAKE_BINARY_DIR}/generated/glib-2.0/schemas/org.compiz.mock.gschema.xml
168 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/org.compiz.mock.gschema.xml
169@@ -47,7 +53,17 @@
170
171 add_gsettings_schema_to_recompilation_list (compiz_gsettings_mock_schema)
172
173-configure_file (${CMAKE_CURRENT_SOURCE_DIR}/gsettings-mock-schemas-config.h.in
174- ${CMAKE_CURRENT_BINARY_DIR}/gsettings-mock-schemas-config.h)
175+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/backend-conformance-config.h.in
176+ ${CMAKE_CURRENT_BINARY_DIR}/backend-conformance-config.h)
177+
178+target_link_libraries (compizconfig_test_gsettings_conformance
179+ gsettings_backend_shared
180+ compizconfig_ccs_setting_mock
181+ compizconfig_ccs_plugin_mock
182+ compizconfig_ccs_context_mock
183+ ${COMPIZCONFIG_TEST_GSETTINGS_LIBRARIES}
184+ ${GTEST_BOTH_LIBRARIES}
185+ ${GMOCK_MAIN_LIBRARY})
186
187 compiz_discover_tests (compizconfig_test_gsettings COVERAGE gsettings_backend_shared)
188+compiz_discover_tests (compizconfig_test_gsettings_conformance COVERAGE gsettings_backend_shared gsettings)
189
190=== added file 'compizconfig/gsettings/tests/backend-conformance-config.h.in'
191--- compizconfig/gsettings/tests/backend-conformance-config.h.in 1970-01-01 00:00:00 +0000
192+++ compizconfig/gsettings/tests/backend-conformance-config.h.in 2012-08-06 14:57:34 +0000
193@@ -0,0 +1,1 @@
194+#define BACKEND_BINARY_PATH "@CMAKE_BINARY_DIR@/compizconfig/gsettings"
195
196=== added file 'compizconfig/gsettings/tests/org.compiz.mock.gschema.xml'
197--- compizconfig/gsettings/tests/org.compiz.mock.gschema.xml 1970-01-01 00:00:00 +0000
198+++ compizconfig/gsettings/tests/org.compiz.mock.gschema.xml 2012-08-06 14:57:34 +0000
199@@ -0,0 +1,53 @@
200+<?xml version="1.0"?>
201+<schemalist>
202+ <schema id="org.compiz.mock" gettext-domain="compiz">
203+ <key type="i" name="integer-setting">
204+ <default>0</default>
205+ </key>
206+ <key type="b" name="boolean-setting">
207+ <default>false</default>
208+ </key>
209+ <key type="d" name="float-setting">
210+ <default>0.0</default>
211+ </key>
212+ <key type="s" name="string-setting">
213+ <default>""</default>
214+ </key>
215+ <key type="s" name="match-setting">
216+ <default>""</default>
217+ </key>
218+ <key type="b" name="bell-setting">
219+ <default>false</default>
220+ </key>
221+ <key type="s" name="color-setting">
222+ <default>""</default>
223+ </key>
224+ <key type="s" name="key-setting">
225+ <default>""</default>
226+ </key>
227+ <key type="s" name="button-setting">
228+ <default>""</default>
229+ </key>
230+ <key type="s" name="edge-setting">
231+ <default>""</default>
232+ </key>
233+ <key type="ai" name="int-list-setting">
234+ <default>[0]</default>
235+ </key>
236+ <key type="ad" name="float-list-setting">
237+ <default>[0.0]</default>
238+ </key>
239+ <key type="ab" name="bool-list-setting">
240+ <default>[true]</default>
241+ </key>
242+ <key type="as" name="string-list-setting">
243+ <default>[""]</default>
244+ </key>
245+ <key type="as" name="match-list-setting">
246+ <default>[""]</default>
247+ </key>
248+ <key type="as" name="color-list-setting">
249+ <default>[""]</default>
250+ </key>
251+ </schema>
252+</schemalist>
253
254=== removed file 'compizconfig/gsettings/tests/org.compiz.mock.gschema.xml'
255--- compizconfig/gsettings/tests/org.compiz.mock.gschema.xml 2012-08-06 14:57:33 +0000
256+++ compizconfig/gsettings/tests/org.compiz.mock.gschema.xml 1970-01-01 00:00:00 +0000
257@@ -1,53 +0,0 @@
258-<?xml version="1.0"?>
259-<schemalist>
260- <schema id="org.compiz.mock" gettext-domain="compiz">
261- <key type="i" name="integer-setting">
262- <default>0</default>
263- </key>
264- <key type="b" name="boolean-setting">
265- <default>false</default>
266- </key>
267- <key type="d" name="float-setting">
268- <default>0.0</default>
269- </key>
270- <key type="s" name="string-setting">
271- <default>""</default>
272- </key>
273- <key type="s" name="match-setting">
274- <default>""</default>
275- </key>
276- <key type="b" name="bell-setting">
277- <default>false</default>
278- </key>
279- <key type="s" name="color-setting">
280- <default>""</default>
281- </key>
282- <key type="s" name="key-setting">
283- <default>""</default>
284- </key>
285- <key type="s" name="button-setting">
286- <default>""</default>
287- </key>
288- <key type="s" name="edge-setting">
289- <default>""</default>
290- </key>
291- <key type="ai" name="int-list-setting">
292- <default>[0]</default>
293- </key>
294- <key type="ad" name="float-list-setting">
295- <default>[0.0]</default>
296- </key>
297- <key type="ab" name="bool-list-setting">
298- <default>[true]</default>
299- </key>
300- <key type="as" name="string-list-setting">
301- <default>[""]</default>
302- </key>
303- <key type="as" name="match-list-setting">
304- <default>[""]</default>
305- </key>
306- <key type="as" name="color-list-setting">
307- <default>[""]</default>
308- </key>
309- </schema>
310-</schemalist>
311
312=== added file 'compizconfig/gsettings/tests/test_gsettings_conformance.cpp'
313--- compizconfig/gsettings/tests/test_gsettings_conformance.cpp 1970-01-01 00:00:00 +0000
314+++ compizconfig/gsettings/tests/test_gsettings_conformance.cpp 2012-08-06 14:57:34 +0000
315@@ -0,0 +1,548 @@
316+#include <gtest/gtest.h>
317+#include <gmock/gmock.h>
318+
319+#include <gsettings_util.h>
320+
321+#include <gio/gio.h>
322+
323+#include "backend-conformance-config.h"
324+#include "gsettings-mock-schemas-config.h"
325+
326+#include <ccs.h>
327+#include <compizconfig_backend_concept_test.h>
328+
329+#include <iostream>
330+
331+using ::testing::AtLeast;
332+using ::testing::Pointee;
333+using ::testing::ReturnNull;
334+
335+namespace
336+{
337+ template <typename T>
338+ class AutoDestroyHelper
339+ {
340+ public:
341+
342+ typedef void (*SimpleDestructor) (T *);
343+ typedef boost::shared_ptr <T> TPtr;
344+
345+ AutoDestroyHelper (T *t,
346+ SimpleDestructor d) :
347+ mShared (t, boost::bind (d, _1))
348+ {
349+ }
350+
351+ operator const TPtr & ()
352+ {
353+ return mShared;
354+ }
355+
356+ private:
357+
358+ TPtr mShared;
359+ };
360+}
361+
362+class CCSGSettingsBackendEnv :
363+ public CCSBackendConceptTestEnvironmentInterface
364+{
365+ public:
366+
367+ typedef boost::shared_ptr <GVariant> GVariantShared;
368+
369+ CCSGSettingsBackendEnv () :
370+ pluginToMatch ("mock")
371+ {
372+ g_type_init ();
373+ }
374+
375+ /* A wrapper to prevent signals from being added */
376+ static void connectToSignalWrapper (CCSBackend *backend, CCSGSettingsWrapper *wrapper)
377+ {
378+ };
379+
380+ static void registerGConfClientWrapper (CCSBackend *backend)
381+ {
382+ }
383+
384+ static void unregisterGConfClientWrapper (CCSBackend *backend)
385+ {
386+ }
387+
388+ const CCSBackendInfo * GetInfo ()
389+ {
390+ return &gsettingsBackendInfo;
391+ }
392+
393+ CCSBackend * SetUp (CCSContext *context, CCSContextGMock *gmockContext)
394+ {
395+ CCSGSettingsBackendInterface *overloadedInterface = NULL;
396+
397+ g_setenv ("GSETTINGS_SCHEMA_DIR", MOCK_PATH.c_str (), true);
398+ g_setenv ("GSETTINGS_BACKEND", "memory", true);
399+ g_setenv ("LIBCOMPIZCONFIG_BACKEND_PATH", BACKEND_BINARY_PATH, true);
400+
401+ mContext = context;
402+
403+ std::string path ("gsettings");
404+
405+ mBackend = reinterpret_cast <CCSDynamicBackend *> (ccsOpenBackend (&ccsDefaultInterfaceTable, mContext, path.c_str ()));
406+
407+ EXPECT_TRUE (mBackend);
408+
409+ mGSettingsBackend = ccsDynamicBackendGetRawBackend (mBackend);
410+
411+ CCSBackendInitFunc backendInit = (GET_INTERFACE (CCSBackendInterface, mBackend))->backendInit;
412+
413+ if (backendInit)
414+ (*backendInit) ((CCSBackend *) mBackend, mContext);
415+
416+ overloadedInterface = GET_INTERFACE (CCSGSettingsBackendInterface, mGSettingsBackend);
417+ overloadedInterface->gsettingsBackendConnectToChangedSignal = CCSGSettingsBackendEnv::connectToSignalWrapper;
418+ overloadedInterface->gsettingsBackendRegisterGConfClient = CCSGSettingsBackendEnv::registerGConfClientWrapper;
419+ overloadedInterface->gsettingsBackendUnregisterGConfClient = CCSGSettingsBackendEnv::unregisterGConfClientWrapper;
420+
421+ mSettings = ccsGSettingsGetSettingsObjectForPluginWithPath (mGSettingsBackend, "mock",
422+ CharacterWrapper (makeCompizPluginPath (profileName.c_str (), "mock")),
423+ mContext);
424+
425+ ON_CALL (*gmockContext, getProfile ()).WillByDefault (Return (profileName.c_str ()));
426+
427+ return (CCSBackend *) mBackend;
428+ }
429+
430+ void TearDown (CCSBackend *)
431+ {
432+ g_unsetenv ("GSETTINGS_SCHEMA_DIR");
433+ g_unsetenv ("GSETTINGS_BACKEND");
434+ g_unsetenv ("LIBCOMPIZCONFIG_BACKEND_PATH");
435+
436+ GVariantBuilder noProfilesBuilder;
437+ g_variant_builder_init (&noProfilesBuilder, G_VARIANT_TYPE ("as"));
438+ g_variant_builder_add (&noProfilesBuilder, "s", "Default");
439+ GVariant *noProfiles = g_variant_builder_end (&noProfilesBuilder);
440+
441+ GVariantBuilder pluginKeysBuilder;
442+ g_variant_builder_init (&pluginKeysBuilder, G_VARIANT_TYPE ("as"));
443+ g_variant_builder_add (&pluginKeysBuilder, "s", "mock");
444+ GVariant *pluginKeys = g_variant_builder_end (&pluginKeysBuilder);
445+
446+ ccsGSettingsBackendUnsetAllChangedPluginKeysInProfile (mGSettingsBackend,
447+ mContext,
448+ pluginKeys,
449+ ccsGSettingsBackendGetCurrentProfile (
450+ mGSettingsBackend));
451+ ccsGSettingsBackendClearPluginsWithSetKeys (mGSettingsBackend);
452+ ccsGSettingsBackendSetExistingProfiles (mGSettingsBackend, noProfiles);
453+ ccsGSettingsBackendSetCurrentProfile (mGSettingsBackend, "Default");
454+
455+ ccsFreeDynamicBackend (mBackend);
456+
457+ g_variant_unref (pluginKeys);
458+ }
459+
460+ void AddProfile (const std::string &profile)
461+ {
462+ ccsGSettingsBackendAddProfile (mGSettingsBackend, profile.c_str ());
463+ }
464+
465+ void SetGetExistingProfilesExpectation (CCSContext *context,
466+ CCSContextGMock *gmockContext)
467+ {
468+ EXPECT_CALL (*gmockContext, getProfile ()).Times (AtLeast (1));
469+ }
470+
471+ void SetDeleteProfileExpectation (const std::string &profileToDelete,
472+ CCSContext *context,
473+ CCSContextGMock *gmockContext)
474+ {
475+ EXPECT_CALL (*gmockContext, getProfile ()).Times (AtLeast (1));
476+ }
477+
478+ void SetReadInitExpectation (CCSContext *context,
479+ CCSContextGMock *gmockContext)
480+ {
481+ EXPECT_CALL (*gmockContext, getProfile ()).WillOnce (Return (profileName.c_str ()));
482+ }
483+
484+ void SetReadDoneExpectation (CCSContext *context,
485+ CCSContextGMock *gmockContext)
486+ {
487+ }
488+
489+ void SetWriteInitExpectation (CCSContext *context,
490+ CCSContextGMock *gmockContext)
491+ {
492+ EXPECT_CALL (*gmockContext, getProfile ()).WillOnce (Return (profileName.c_str ()));
493+ }
494+
495+ void SetWriteDoneExpectation (CCSContext *context,
496+ CCSContextGMock *gmockContext)
497+ {
498+ }
499+
500+ void PreWrite (CCSContextGMock *gmockContext,
501+ CCSPluginGMock *gmockPlugin,
502+ CCSSettingGMock *gmockSetting,
503+ CCSSettingType type)
504+ {
505+ EXPECT_CALL (*gmockContext, getIntegrationEnabled ()).WillRepeatedly (Return (FALSE));
506+ EXPECT_CALL (*gmockPlugin, getContext ()).Times (AtLeast (1));
507+ EXPECT_CALL (*gmockPlugin, getName ()).Times (AtLeast (1));
508+ EXPECT_CALL (*gmockSetting, getType ()).Times (AtLeast (1));
509+ EXPECT_CALL (*gmockSetting, getName ()).Times (AtLeast (1));
510+ EXPECT_CALL (*gmockSetting, getParent ()).Times (AtLeast (1));
511+ EXPECT_CALL (*gmockSetting, getIsDefault ()).WillRepeatedly (Return (FALSE));
512+
513+ if (type == TypeList)
514+ EXPECT_CALL (*gmockSetting, getDefaultValue ()).WillRepeatedly (ReturnNull ());
515+ }
516+
517+ void PostWrite (CCSContextGMock *gmockContext,
518+ CCSPluginGMock *gmockPlugin,
519+ CCSSettingGMock *gmockSetting,
520+ CCSSettingType type) {}
521+
522+ void WriteBoolAtKey (const std::string &plugin,
523+ const std::string &key,
524+ const VariantTypes &value)
525+ {
526+ GVariant *variant = NULL;
527+ if (writeBoolToVariant (boolToBool (boost::get <bool> (value)), &variant))
528+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
529+ else
530+ throw std::exception ();
531+ }
532+
533+ void WriteIntegerAtKey (const std::string &plugin,
534+ const std::string &key,
535+ const VariantTypes &value)
536+ {
537+ GVariant *variant = NULL;
538+ if (writeIntToVariant (boost::get <int> (value), &variant))
539+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
540+ else
541+ throw std::exception ();
542+ }
543+
544+ void WriteFloatAtKey (const std::string &plugin,
545+ const std::string &key,
546+ const VariantTypes &value)
547+ {
548+ GVariant *variant = NULL;
549+ if (writeFloatToVariant (boost::get <float> (value), &variant))
550+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
551+ else
552+ throw std::exception ();
553+ }
554+
555+ void WriteStringAtKey (const std::string &plugin,
556+ const std::string &key,
557+ const VariantTypes &value)
558+ {
559+ GVariant *variant = NULL;
560+ if (writeStringToVariant (boost::get <const char *> (value), &variant))
561+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
562+ else
563+ throw std::exception ();
564+ }
565+
566+ void WriteColorAtKey (const std::string &plugin,
567+ const std::string &key,
568+ const VariantTypes &value)
569+ {
570+ GVariant *variant = NULL;
571+ if (writeColorToVariant (boost::get <CCSSettingColorValue> (value), &variant))
572+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
573+ else
574+ throw std::exception ();
575+ }
576+
577+ void WriteKeyAtKey (const std::string &plugin,
578+ const std::string &key,
579+ const VariantTypes &value)
580+ {
581+ GVariant *variant = NULL;
582+ if (writeKeyToVariant (boost::get <CCSSettingKeyValue> (value), &variant))
583+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
584+ else
585+ throw std::exception ();
586+ }
587+
588+ void WriteButtonAtKey (const std::string &plugin,
589+ const std::string &key,
590+ const VariantTypes &value)
591+ {
592+ GVariant *variant = NULL;
593+ if (writeButtonToVariant (boost::get <CCSSettingButtonValue> (value), &variant))
594+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
595+ else
596+ throw std::exception ();
597+ }
598+
599+ void WriteEdgeAtKey (const std::string &plugin,
600+ const std::string &key,
601+ const VariantTypes &value)
602+ {
603+ GVariant *variant = NULL;
604+ if (writeEdgeToVariant (boost::get <unsigned int> (value), &variant))
605+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
606+ else
607+ throw std::exception ();
608+ }
609+
610+ void WriteMatchAtKey (const std::string &plugin,
611+ const std::string &key,
612+ const VariantTypes &value)
613+ {
614+ GVariant *variant = NULL;
615+ if (writeStringToVariant (boost::get <const char *> (value), &variant))
616+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
617+ else
618+ throw std::exception ();
619+ }
620+
621+ void WriteBellAtKey (const std::string &plugin,
622+ const std::string &key,
623+ const VariantTypes &value)
624+ {
625+ GVariant *variant = NULL;
626+ if (writeBoolToVariant (boolToBool (boost::get <bool> (value)), &variant))
627+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
628+ else
629+ throw std::exception ();
630+ }
631+
632+ void WriteListAtKey (const std::string &plugin,
633+ const std::string &key,
634+ const VariantTypes &value)
635+ {
636+ GVariant *variant = NULL;
637+
638+ const CCSListWrapper::Ptr &lw (boost::get <CCSListWrapper::Ptr> (value));
639+
640+ if (writeListValue (*lw, lw->type (), &variant))
641+ writeVariantToKey (mSettings, CharacterWrapper (translateKeyForGSettings (key.c_str ())), variant);
642+ else
643+ throw std::exception ();
644+ }
645+
646+ void PreRead (CCSContextGMock *gmockContext,
647+ CCSPluginGMock *gmockPlugin,
648+ CCSSettingGMock *gmockSetting,
649+ CCSSettingType type)
650+ {
651+ EXPECT_CALL (*gmockContext, getIntegrationEnabled ()).WillOnce (Return (FALSE));
652+ EXPECT_CALL (*gmockPlugin, getContext ()).Times (AtLeast (1));
653+ EXPECT_CALL (*gmockPlugin, getName ()).Times (AtLeast (1));
654+ EXPECT_CALL (*gmockSetting, getType ()).Times (AtLeast (1));
655+ EXPECT_CALL (*gmockSetting, getName ()).Times (AtLeast (1));
656+ EXPECT_CALL (*gmockSetting, getParent ()).Times (AtLeast (1));
657+ EXPECT_CALL (*gmockSetting, isReadOnly ()).WillRepeatedly (Return (FALSE));
658+
659+ if (type == TypeList)
660+ {
661+ EXPECT_CALL (*gmockSetting, getInfo ()).Times (AtLeast (1));
662+ EXPECT_CALL (*gmockSetting, getDefaultValue ()).WillRepeatedly (ReturnNull ());
663+ }
664+ }
665+
666+ void PostRead (CCSContextGMock *gmockContext,
667+ CCSPluginGMock *gmockPlugin,
668+ CCSSettingGMock *gmockSetting,
669+ CCSSettingType type) {}
670+
671+ Bool ReadBoolAtKey (const std::string &plugin,
672+ const std::string &key)
673+ {
674+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
675+ key,
676+ TypeBool));
677+ return readBoolFromVariant (variant.get ());
678+ }
679+
680+ int ReadIntegerAtKey (const std::string &plugin,
681+ const std::string &key)
682+ {
683+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
684+ key,
685+ TypeInt));
686+ return readIntFromVariant (variant.get ());
687+ }
688+
689+ float ReadFloatAtKey (const std::string &plugin,
690+ const std::string &key)
691+ {
692+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
693+ key,
694+ TypeFloat));
695+ return readFloatFromVariant (variant.get ());
696+ }
697+
698+ const char * ReadStringAtKey (const std::string &plugin,
699+ const std::string &key)
700+ {
701+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
702+ key,
703+ TypeString));
704+ return readStringFromVariant (variant.get ());
705+ }
706+
707+ CCSSettingColorValue ReadColorAtKey (const std::string &plugin,
708+ const std::string &key)
709+ {
710+ Bool success = FALSE;
711+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
712+ key,
713+ TypeColor));
714+ CCSSettingColorValue value = readColorFromVariant (variant.get (), &success);
715+ EXPECT_TRUE (success);
716+ return value;
717+ }
718+
719+ CCSSettingKeyValue ReadKeyAtKey (const std::string &plugin,
720+ const std::string &key)
721+ {
722+ Bool success = FALSE;
723+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
724+ key,
725+ TypeKey));
726+ CCSSettingKeyValue value = readKeyFromVariant (variant.get (), &success);
727+ EXPECT_TRUE (success);
728+ return value;
729+ }
730+
731+ CCSSettingButtonValue ReadButtonAtKey (const std::string &plugin,
732+ const std::string &key)
733+ {
734+ Bool success = FALSE;
735+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
736+ key,
737+ TypeButton));
738+ CCSSettingButtonValue value = readButtonFromVariant (variant.get (), &success);
739+ EXPECT_TRUE (success);
740+ return value;
741+ }
742+
743+ unsigned int ReadEdgeAtKey (const std::string &plugin,
744+ const std::string &key)
745+ {
746+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
747+ key,
748+ TypeEdge));
749+ return readEdgeFromVariant (variant.get ());
750+ }
751+
752+ const char * ReadMatchAtKey (const std::string &plugin,
753+ const std::string &key)
754+ {
755+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
756+ key,
757+ TypeMatch));
758+ return readStringFromVariant (variant.get ());
759+ }
760+
761+ Bool ReadBellAtKey (const std::string &plugin,
762+ const std::string &key)
763+ {
764+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
765+ key,
766+ TypeBell));
767+ return readBoolFromVariant (variant.get ());
768+ }
769+
770+ CCSSettingValueList ReadListAtKey (const std::string &plugin,
771+ const std::string &key,
772+ CCSSetting *setting)
773+ {
774+ GVariantShared variant (ReadVariantAtKeyToShared (plugin,
775+ key,
776+ TypeList));
777+ return readListValue (variant.get (), setting, &ccsDefaultObjectAllocator);
778+ }
779+
780+ void PreUpdate (CCSContextGMock *gmockContext,
781+ CCSPluginGMock *gmockPlugin,
782+ CCSSettingGMock *gmockSetting,
783+ CCSSettingType type)
784+ {
785+ EXPECT_CALL (*gmockContext, getIntegrationEnabled ()).WillOnce (Return (FALSE));
786+ EXPECT_CALL (*gmockPlugin, getContext ()).Times (AtLeast (1));
787+ EXPECT_CALL (*gmockPlugin, getName ()).Times (AtLeast (1));
788+ EXPECT_CALL (*gmockSetting, getType ()).Times (AtLeast (1));
789+ EXPECT_CALL (*gmockSetting, getName ()).Times (AtLeast (1));
790+ EXPECT_CALL (*gmockSetting, getParent ()).Times (AtLeast (1));
791+ EXPECT_CALL (*gmockSetting, isReadOnly ()).WillRepeatedly (Return (FALSE));
792+
793+ if (type == TypeList)
794+ {
795+ EXPECT_CALL (*gmockSetting, getInfo ()).Times (AtLeast (1));
796+ EXPECT_CALL (*gmockSetting, getDefaultValue ()).WillRepeatedly (ReturnNull ());
797+ }
798+
799+ EXPECT_CALL (*gmockContext, getProfile ());
800+ }
801+
802+ void PostUpdate (CCSContextGMock *gmockContext,
803+ CCSPluginGMock *gmockPlugin,
804+ CCSSettingGMock *gmockSetting,
805+ CCSSettingType type) {}
806+
807+ bool UpdateSettingAtKey (const std::string &plugin,
808+ const std::string &setting)
809+ {
810+ CharacterWrapper keyName (translateKeyForGSettings (setting.c_str ()));
811+
812+ if (updateSettingWithGSettingsKeyName (reinterpret_cast <CCSBackend *> (mGSettingsBackend), mSettings, keyName, ccsBackendUpdateSetting))
813+ return true;
814+
815+ return false;
816+ }
817+
818+ private:
819+
820+ GVariantShared
821+ ReadVariantAtKeyToShared (const std::string &plugin,
822+ const std::string &key,
823+ CCSSettingType type)
824+ {
825+ CharacterWrapper translatedKey (translateKeyForGSettings (key.c_str ()));
826+ CharacterWrapper pluginPath (makeCompizPluginPath (profileName.c_str (),
827+ plugin.c_str ()));
828+
829+ GVariant *rawVariant = getVariantAtKey (mSettings,
830+ translatedKey,
831+ pluginPath,
832+ type);
833+
834+ GVariantShared shared (AutoDestroyHelper <GVariant> (rawVariant,
835+ g_variant_unref));
836+
837+
838+
839+ return shared;
840+ }
841+
842+ CCSGSettingsWrapper *mSettings;
843+ CCSContext *mContext;
844+ CCSDynamicBackend *mBackend;
845+ CCSBackend *mGSettingsBackend;
846+ std::string pluginToMatch;
847+
848+ static const std::string profileName;
849+};
850+
851+const std::string CCSGSettingsBackendEnv::profileName = "mock";
852+
853+INSTANTIATE_TEST_CASE_P (CCSGSettingsBackendConcept, CCSBackendConformanceTestReadWrite,
854+ compizconfig::test::GenerateTestingParametersForBackendInterface <CCSGSettingsBackendEnv> ());
855+
856+INSTANTIATE_TEST_CASE_P (CCSGSettingsBackendConcept, CCSBackendConformanceTestInfo,
857+ compizconfig::test::GenerateTestingEnvFactoryBackendInterface <CCSGSettingsBackendEnv> ());
858+
859+INSTANTIATE_TEST_CASE_P (CCSGSettingsBackendConcept, CCSBackendConformanceTestInitFiniFuncs,
860+ compizconfig::test::GenerateTestingEnvFactoryBackendInterface <CCSGSettingsBackendEnv> ());
861+
862+INSTANTIATE_TEST_CASE_P (CCSGSettingsBackendConcept, CCSBackendConformanceTestProfileHandling,
863+ compizconfig::test::GenerateTestingEnvFactoryBackendInterface <CCSGSettingsBackendEnv> ());
864
865=== modified file 'compizconfig/libcompizconfig/config/CMakeLists.txt'
866--- compizconfig/libcompizconfig/config/CMakeLists.txt 2012-05-24 06:48:55 +0000
867+++ compizconfig/libcompizconfig/config/CMakeLists.txt 2012-08-06 14:57:34 +0000
868@@ -1,6 +1,9 @@
869 set (_config_file
870 config)
871
872+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config_test
873+ ${CMAKE_CURRENT_BINARY_DIR}/compiz-1/compizconfig/config)
874+
875 compiz_opt_install_file (${CMAKE_CURRENT_SOURCE_DIR}/${_config_file} ${COMPIZ_SYSCONFDIR}/compizconfig/${_config_file})
876
877 add_custom_target (
878
879=== added file 'compizconfig/libcompizconfig/config/config_test'
880--- compizconfig/libcompizconfig/config/config_test 1970-01-01 00:00:00 +0000
881+++ compizconfig/libcompizconfig/config/config_test 2012-08-06 14:57:34 +0000
882@@ -0,0 +1,3 @@
883+[general]
884+backend = ini
885+plugin_list_autosort = true

Subscribers

People subscribed via source and target branches