From 355e4d37c1b9ff6bae3a9f4bfc3eb611c080136a Mon Sep 17 00:00:00 2001 From: Michael James Gratton Date: Mon, 30 Jan 2017 23:09:02 +1100 Subject: [PATCH] Make ClientWebView-based tests execute a bit faster. * test/client/components/client-web-view-test.vala: New explicit tests for init'ing the WebContext and loading default resources. * test/client/components/client-web-view-test-case.vala: Init the WebContext and load resources in the constructor rather than fixture setup, so it only happens once per suite, not once per test. Update subclasses to do same. * test/client/composer/composer-web-view-test.vala: Add an explicit test for loading ComposerWebView resources. --- test/CMakeLists.txt | 1 + .../components/client-web-view-test-case.vala | 6 ++-- .../components/client-web-view-test.vala | 34 +++++++++++++++++++ .../composer/composer-web-view-test.vala | 14 +++++--- test/js/composer-page-state-test.vala | 11 +++--- test/js/conversation-page-state-test.vala | 11 +++--- test/main.vala | 4 +++ 7 files changed, 63 insertions(+), 18 deletions(-) create mode 100644 test/client/components/client-web-view-test.vala diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index db10c537..3980e589 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,6 +15,7 @@ set(TEST_SRC engine/util-timeout-manager-test.vala client/application/geary-configuration-test.vala + client/components/client-web-view-test.vala client/components/client-web-view-test-case.vala client/composer/composer-web-view-test.vala diff --git a/test/client/components/client-web-view-test-case.vala b/test/client/components/client-web-view-test-case.vala index da44e4f6..68b2b1c5 100644 --- a/test/client/components/client-web-view-test-case.vala +++ b/test/client/components/client-web-view-test-case.vala @@ -15,9 +15,6 @@ public abstract class ClientWebViewTestCase : Gee.TestCase { public ClientWebViewTestCase(string name) { base(name); - } - - public override void set_up() { this.config = new Configuration(GearyApplication.APP_ID); ClientWebView.init_web_context( this.config, @@ -30,6 +27,9 @@ public abstract class ClientWebViewTestCase : Gee.TestCase { } catch (Error err) { assert_not_reached(); } + } + + public override void set_up() { this.test_view = set_up_test_view(); } diff --git a/test/client/components/client-web-view-test.vala b/test/client/components/client-web-view-test.vala new file mode 100644 index 00000000..f2225085 --- /dev/null +++ b/test/client/components/client-web-view-test.vala @@ -0,0 +1,34 @@ +/* + * Copyright 2016 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +public class ClientWebViewTest : Gee.TestCase { + + public ClientWebViewTest() { + base("ClientWebViewTest"); + add_test("init_web_context", init_web_context); + add_test("load_resources", load_resources); + } + + public void init_web_context() { + Configuration config = new Configuration(GearyApplication.APP_ID); + ClientWebView.init_web_context( + config, + File.new_for_path(_BUILD_ROOT_DIR).get_child("src"), + File.new_for_path("/tmp"), // XXX use something better here + true + ); + } + + public void load_resources() { + try { + ClientWebView.load_scripts(); + } catch (Error err) { + assert_not_reached(); + } + } + +} diff --git a/test/client/composer/composer-web-view-test.vala b/test/client/composer/composer-web-view-test.vala index 7b887bc5..6fe7e79a 100644 --- a/test/client/composer/composer-web-view-test.vala +++ b/test/client/composer/composer-web-view-test.vala @@ -9,6 +9,7 @@ public class ComposerWebViewTest : ClientWebViewTestCase { public ComposerWebViewTest() { base("ComposerWebViewTest"); + add_test("load_resources", load_resources); add_test("edit_context", edit_context); add_test("get_html", get_html); add_test("get_text", get_text); @@ -19,6 +20,14 @@ public class ComposerWebViewTest : ClientWebViewTestCase { add_test("get_text_with_nbsp", get_text_with_nbsp); } + public void load_resources() { + try { + ComposerWebView.load_resources(); + } catch (Error err) { + assert_not_reached(); + } + } + public void edit_context() { assert(!(new ComposerWebView.EditContext("0,,,").is_link)); assert(new ComposerWebView.EditContext("1,,,").is_link); @@ -160,11 +169,6 @@ long, long, long, long, long, long, long, long, long, long, } protected override ComposerWebView set_up_test_view() { - try { - ComposerWebView.load_resources(); - } catch (Error err) { - assert_not_reached(); - } return new ComposerWebView(this.config); } diff --git a/test/js/composer-page-state-test.vala b/test/js/composer-page-state-test.vala index debb7397..9e345912 100644 --- a/test/js/composer-page-state-test.vala +++ b/test/js/composer-page-state-test.vala @@ -23,6 +23,12 @@ class ComposerPageStateTest : ClientWebViewTestCase { add_test("quote_lines", quote_lines); add_test("resolve_nesting", resolve_nesting); add_test("replace_non_breaking_space", replace_non_breaking_space); + + try { + ComposerWebView.load_resources(); + } catch (Error err) { + assert_not_reached(); + } } public void edit_context_link() { @@ -334,11 +340,6 @@ unknown://example6.com } protected override ComposerWebView set_up_test_view() { - try { - ComposerWebView.load_resources(); - } catch (Error err) { - assert_not_reached(); - } return new ComposerWebView(this.config); } diff --git a/test/js/conversation-page-state-test.vala b/test/js/conversation-page-state-test.vala index 48a1016a..a8471633 100644 --- a/test/js/conversation-page-state-test.vala +++ b/test/js/conversation-page-state-test.vala @@ -17,6 +17,12 @@ class ConversationPageStateTest : ClientWebViewTestCase { add_test("is_deceptive_text_deceptive_href", is_deceptive_text_deceptive_href); add_test("is_deceptive_text_non_matching_subdomain", is_deceptive_text_non_matching_subdomain); add_test("is_deceptive_text_different_domain", is_deceptive_text_different_domain); + + try { + ConversationWebView.load_resources(File.new_for_path("")); + } catch (Error err) { + assert_not_reached(); + } } public void is_deceptive_text_not_url() { @@ -68,11 +74,6 @@ class ConversationPageStateTest : ClientWebViewTestCase { } protected override ConversationWebView set_up_test_view() { - try { - ConversationWebView.load_resources(File.new_for_path("")); - } catch (Error err) { - assert_not_reached(); - } return new ConversationWebView(this.config); } diff --git a/test/main.vala b/test/main.vala index d1415161..4cd12560 100644 --- a/test/main.vala +++ b/test/main.vala @@ -47,6 +47,10 @@ int main(string[] args) { TestSuite client = new TestSuite("client"); + // Keep this before other ClientWebView based tests since it tests + // WebContext init + client.add_suite(new ClientWebViewTest().get_suite()); + client.add_suite(new ComposerWebViewTest().get_suite()); client.add_suite(new ConfigurationTest().get_suite());