summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Wilmet <swilmet@informatique-libre.be>2022-07-14 11:26:19 +0000
committerSébastien Wilmet <swilmet@informatique-libre.be>2022-07-14 11:26:19 +0000
commit8992e95adb0d2de7c620947c4a3cecb15a939eae (patch)
tree38926b2658639a3af27da830eb6d2b766dc5d34c
parentc8dd470f313d3c3656091a000852c7435fc44eae (diff)
parent1a1d406b2984c7a99925d593509d2ece4cfaaf0c (diff)
downloadgtksourceview-8992e95adb0d2de7c620947c4a3cecb15a939eae.tar.gz
Merge branch 'wip/chergert/test-specs-4-8' into 'gtksourceview-4-8'
testsuite: backport test-language-specs See merge request GNOME/gtksourceview!273
-rw-r--r--data/language-specs/cuda.lang2
-rw-r--r--data/language-specs/def.lang3
-rw-r--r--testsuite/meson.build1
-rw-r--r--testsuite/test-language-specs.c97
4 files changed, 102 insertions, 1 deletions
diff --git a/data/language-specs/cuda.lang b/data/language-specs/cuda.lang
index 88c95e0a..b74d1313 100644
--- a/data/language-specs/cuda.lang
+++ b/data/language-specs/cuda.lang
@@ -84,7 +84,7 @@
<keyword>threadIdx</keyword>
</context>
- <context id="kernel-call" style-ref="latex:display-math">
+ <context id="kernel-call" style-ref="def:string">
<start>&lt;&lt;&lt;</start>
<end>&gt;&gt;&gt;</end>
</context>
diff --git a/data/language-specs/def.lang b/data/language-specs/def.lang
index 4a07444c..5f92b938 100644
--- a/data/language-specs/def.lang
+++ b/data/language-specs/def.lang
@@ -34,6 +34,9 @@
Finally a style scheme may also define language
specific styles. -->
+ <!-- General text, only currently used by Latex -->
+ <style id="text" name="Text"/>
+
<!-- Comment group -->
<!-- Any comment -->
<style id="comment" name="Comment"/>
diff --git a/testsuite/meson.build b/testsuite/meson.build
index 08d0a7e5..02e248e1 100644
--- a/testsuite/meson.build
+++ b/testsuite/meson.build
@@ -26,6 +26,7 @@ testsuite_sources = [
['test-iter'],
['test-language'],
['test-languagemanager'],
+ ['test-language-specs'],
['test-mark'],
['test-printcompositor'],
['test-regex'],
diff --git a/testsuite/test-language-specs.c b/testsuite/test-language-specs.c
new file mode 100644
index 00000000..4e4cf9da
--- /dev/null
+++ b/testsuite/test-language-specs.c
@@ -0,0 +1,97 @@
+#include <gtksourceview/gtksource.h>
+
+static GHashTable *skipped;
+
+static void
+test_func (gconstpointer data)
+{
+ GtkSourceLanguageManager *lm = gtk_source_language_manager_get_default ();
+ const char *language_id = data;
+ GtkSourceLanguage *l;
+ GtkSourceBuffer *buffer;
+
+ g_assert_true (GTK_SOURCE_IS_LANGUAGE_MANAGER (lm));
+ g_assert_nonnull (data);
+
+ if (g_hash_table_contains (skipped, language_id))
+ {
+ char *message = g_strdup_printf ("skipping known failure for %s", language_id);
+ g_test_skip (message);
+ g_free (message);
+ return;
+ }
+
+ l = gtk_source_language_manager_get_language (lm, language_id);
+ g_assert_nonnull (l);
+
+ buffer = g_object_new (GTK_SOURCE_TYPE_BUFFER,
+ "language", l,
+ "highlight-syntax", TRUE,
+ NULL);
+
+ g_object_unref (buffer);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ GtkSourceLanguageManager *lm;
+ const char * const *ids;
+ char *language_specs;
+ char *search_path[2];
+ const char *srcdir = g_getenv ("G_TEST_SRCDIR");
+ GPtrArray *strings;
+ int ret;
+
+ g_assert_nonnull (srcdir);
+
+ language_specs = g_build_filename (srcdir, "..", "data", "language-specs", NULL);
+ search_path[0] = language_specs;
+ search_path[1] = 0;
+
+ g_test_init (&argc, &argv, NULL);
+ gtk_source_init ();
+
+ skipped = g_hash_table_new (g_str_hash, g_str_equal);
+
+ g_hash_table_add (skipped, (char *)"gdb-log");
+ g_hash_table_add (skipped, (char *)"jsdoc");
+ g_hash_table_add (skipped, (char *)"js-expr");
+ g_hash_table_add (skipped, (char *)"js-fn");
+ g_hash_table_add (skipped, (char *)"js-lit");
+ g_hash_table_add (skipped, (char *)"js-mod");
+ g_hash_table_add (skipped, (char *)"js-st");
+ g_hash_table_add (skipped, (char *)"js-val");
+ g_hash_table_add (skipped, (char *)"typescript-js-expr");
+ g_hash_table_add (skipped, (char *)"typescript-js-fn");
+ g_hash_table_add (skipped, (char *)"typescript-js-lit");
+ g_hash_table_add (skipped, (char *)"typescript-js-mod");
+ g_hash_table_add (skipped, (char *)"typescript-js-st");
+ g_hash_table_add (skipped, (char *)"typescript-type-expr");
+ g_hash_table_add (skipped, (char *)"typescript-type-gen");
+ g_hash_table_add (skipped, (char *)"typescript-type-lit");
+ g_hash_table_add (skipped, (char *)"gtk-doc");
+ g_hash_table_add (skipped, (char *)"testv1");
+
+ strings = g_ptr_array_new_with_free_func (g_free);
+ lm = gtk_source_language_manager_get_default ();
+ gtk_source_language_manager_set_search_path (lm, search_path);
+
+ ids = gtk_source_language_manager_get_language_ids (lm);
+
+ for (guint i = 0; ids[i]; i++)
+ {
+ char *path = g_strdup_printf ("/Language/%s/load", ids[i]);
+ g_ptr_array_add (strings, path);
+ g_test_add_data_func (path, ids[i], test_func);
+ }
+
+ ret = g_test_run ();
+
+ g_ptr_array_unref (strings);
+ g_hash_table_unref (skipped);
+ g_free (language_specs);
+
+ return ret;
+}