[geary/bug/728002-webkit2: 135/140] Make ClientWebView-based tests execute a bit faster.



commit 355e4d37c1b9ff6bae3a9f4bfc3eb611c080136a
Author: Michael James Gratton <mike vee net>
Date:   Mon Jan 30 23:09:02 2017 +1100

    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 ++--
 test/client/components/client-web-view-test.vala   |   34 ++++++++++++++++++++
 test/client/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(-)
---
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index db10c53..3980e58 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 da44e4f..68b2b1c 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<V> : 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<V> : 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 0000000..f222508
--- /dev/null
+++ b/test/client/components/client-web-view-test.vala
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+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 7b887bc..6fe7e79 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<ComposerWebView> {
 
     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<ComposerWebView> {
         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 debb739..9e34591 100644
--- a/test/js/composer-page-state-test.vala
+++ b/test/js/composer-page-state-test.vala
@@ -23,6 +23,12 @@ class ComposerPageStateTest : ClientWebViewTestCase<ComposerWebView> {
         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 48a1016..a847163 100644
--- a/test/js/conversation-page-state-test.vala
+++ b/test/js/conversation-page-state-test.vala
@@ -17,6 +17,12 @@ class ConversationPageStateTest : ClientWebViewTestCase<ConversationWebView> {
         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<ConversationWebView> {
     }
 
     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 d141516..4cd1256 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());
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]