Add simple/demo client unit test using GSettings.
* test/client/application/geary-configuration-test.vala: New unit test for Configuration class. * test/main.vala: Add new unit test to the client suite, ensure the memory GSettings backend is used as the default so we get default setting values, and never save any changes made. * test/CMakeLists.txt: Add new unit test source. * src/client/application/geary-config.vala: Tidy up code a bit to adhere to code conventions.
This commit is contained in:
parent
325232bad7
commit
50120c67ff
4 changed files with 66 additions and 13 deletions
|
|
@ -4,8 +4,11 @@
|
||||||
* (version 2.1 or later). See the COPYING file in this distribution.
|
* (version 2.1 or later). See the COPYING file in this distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Wrapper class for GSettings.
|
/**
|
||||||
|
* Provides convenience properties to current Geary GSettings values.
|
||||||
|
*/
|
||||||
public class Configuration {
|
public class Configuration {
|
||||||
|
|
||||||
public const string WINDOW_WIDTH_KEY = "window-width";
|
public const string WINDOW_WIDTH_KEY = "window-width";
|
||||||
public const string WINDOW_HEIGHT_KEY = "window-height";
|
public const string WINDOW_HEIGHT_KEY = "window-height";
|
||||||
public const string WINDOW_MAXIMIZE_KEY = "window-maximize";
|
public const string WINDOW_MAXIMIZE_KEY = "window-maximize";
|
||||||
|
|
@ -27,13 +30,27 @@ public class Configuration {
|
||||||
public const string SEARCH_STRATEGY_KEY = "search-strategy";
|
public const string SEARCH_STRATEGY_KEY = "search-strategy";
|
||||||
public const string CONVERSATION_VIEWER_ZOOM_KEY = "conversation-viewer-zoom";
|
public const string CONVERSATION_VIEWER_ZOOM_KEY = "conversation-viewer-zoom";
|
||||||
|
|
||||||
|
|
||||||
public enum DesktopEnvironment {
|
public enum DesktopEnvironment {
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
UNITY;
|
UNITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// is_installed: set to true if installed, else false.
|
||||||
|
// schema_dir: MUST be set if not installed. Directory where GSettings schema is located.
|
||||||
|
public static void init(bool is_installed, string? schema_dir = null) {
|
||||||
|
if (!is_installed) {
|
||||||
|
assert(schema_dir != null);
|
||||||
|
// If not installed, set an environment variable pointing to where the GSettings schema
|
||||||
|
// is to be found.
|
||||||
|
GLib.Environment.set_variable("GSETTINGS_SCHEMA_DIR", schema_dir, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Settings settings { get; private set; }
|
public Settings settings { get; private set; }
|
||||||
public Settings gnome_interface;
|
public Settings gnome_interface { get; private set; }
|
||||||
|
|
||||||
public DesktopEnvironment desktop_environment {
|
public DesktopEnvironment desktop_environment {
|
||||||
get {
|
get {
|
||||||
|
|
@ -158,17 +175,6 @@ public class Configuration {
|
||||||
Migrate.old_app_config(settings);
|
Migrate.old_app_config(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// is_installed: set to true if installed, else false.
|
|
||||||
// schema_dir: MUST be set if not installed. Directory where GSettings schema is located.
|
|
||||||
public static void init(bool is_installed, string? schema_dir = null) {
|
|
||||||
if (!is_installed) {
|
|
||||||
assert(schema_dir != null);
|
|
||||||
// If not installed, set an environment variable pointing to where the GSettings schema
|
|
||||||
// is to be found.
|
|
||||||
GLib.Environment.set_variable("GSETTINGS_SCHEMA_DIR", schema_dir, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void bind(string key, Object object, string property,
|
public void bind(string key, Object object, string property,
|
||||||
SettingsBindFlags flags = GLib.SettingsBindFlags.DEFAULT) {
|
SettingsBindFlags flags = GLib.SettingsBindFlags.DEFAULT) {
|
||||||
settings.bind(key, object, property, flags);
|
settings.bind(key, object, property, flags);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ set(TEST_SRC
|
||||||
engine/rfc822-message-data-test.vala
|
engine/rfc822-message-data-test.vala
|
||||||
engine/rfc822-utils-test.vala
|
engine/rfc822-utils-test.vala
|
||||||
engine/util-html-test.vala
|
engine/util-html-test.vala
|
||||||
|
|
||||||
|
client/application/geary-configuration-test.vala
|
||||||
)
|
)
|
||||||
|
|
||||||
# Vala
|
# Vala
|
||||||
|
|
|
||||||
35
test/client/application/geary-configuration-test.vala
Normal file
35
test/client/application/geary-configuration-test.vala
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2016 Michael Gratton <mike@vee.net>
|
||||||
|
*
|
||||||
|
* This software is licensed under the GNU Lesser General Public License
|
||||||
|
* (version 2.1 or later). See the COPYING file in this distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ConfigurationTest : Gee.TestCase {
|
||||||
|
|
||||||
|
private Configuration test_config = null;
|
||||||
|
|
||||||
|
public ConfigurationTest() {
|
||||||
|
base("ConfigurationTest");
|
||||||
|
add_test("desktop_environment", desktop_environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void set_up() {
|
||||||
|
Environment.unset_variable("XDG_CURRENT_DESKTOP");
|
||||||
|
this.test_config = new Configuration(GearyApplication.APP_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void desktop_environment() {
|
||||||
|
assert(this.test_config.desktop_environment ==
|
||||||
|
Configuration.DesktopEnvironment.UNKNOWN);
|
||||||
|
|
||||||
|
Environment.set_variable("XDG_CURRENT_DESKTOP", "BLARG", true);
|
||||||
|
assert(this.test_config.desktop_environment ==
|
||||||
|
Configuration.DesktopEnvironment.UNKNOWN);
|
||||||
|
|
||||||
|
Environment.set_variable("XDG_CURRENT_DESKTOP", "Unity", true);
|
||||||
|
assert(this.test_config.desktop_environment ==
|
||||||
|
Configuration.DesktopEnvironment.UNITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int main(string[] args) {
|
int main(string[] args) {
|
||||||
|
/*
|
||||||
|
* Set env vars right up front to avoid weird bugs
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Use the memory GSettings DB so we a) always start with default
|
||||||
|
// values, and b) don't persist any changes made during a test
|
||||||
|
Environment.set_variable("GSETTINGS_BACKEND", "memory", true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise all the things.
|
* Initialise all the things.
|
||||||
*/
|
*/
|
||||||
|
|
@ -29,6 +37,8 @@ int main(string[] args) {
|
||||||
|
|
||||||
TestSuite client = new TestSuite("client");
|
TestSuite client = new TestSuite("client");
|
||||||
|
|
||||||
|
client.add_suite(new ConfigurationTest().get_suite());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Run the tests
|
* Run the tests
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue