diff options
-rw-r--r-- | .gitlab-ci.yml | 30 | ||||
-rw-r--r-- | .gitlab-ci/fedora.Dockerfile | 2 | ||||
-rwxr-xr-x | .gitlab-ci/run-tests.sh | 3 | ||||
-rw-r--r-- | lsan.supp | 7 | ||||
-rw-r--r-- | tests/test-break.c | 22 | ||||
-rw-r--r-- | tests/test-itemize.c | 2 | ||||
-rw-r--r-- | tests/test-layout.c | 5 |
7 files changed, 62 insertions, 9 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d4a265f..dffa8056 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,6 @@ stages: - build + - analysis - docs - deploy @@ -9,8 +10,9 @@ variables: MESON_TEST_TIMEOUT_MULTIPLIER: 2 linux-fedora: - image: registry.gitlab.gnome.org/gnome/pango/fedora:v1 + image: registry.gitlab.gnome.org/gnome/pango/fedora:v2 stage: build + needs: [] variables: EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both" script: @@ -31,8 +33,32 @@ linux-fedora: - "${CI_PROJECT_DIR}/_build/hello.png" - "${CI_PROJECT_DIR}/_build/fontlist.txt" +asan-build: + image: registry.gitlab.gnome.org/gnome/pango/fedora:v2 + tags: [ asan ] + stage: analysis + needs: [] + variables: + script: + - CC=clang meson --buildtype=debugoptimized -Db_sanitize=address -Db_lundef=false -Dintrospection=false _build + - ninja -C _build + - .gitlab-ci/run-tests.sh _build + allow_failure: true + artifacts: + when: always + reports: + junit: + - "${CI_PROJECT_DIR}/_build/report.xml" + name: "gtk-${CI_COMMIT_REF_NAME}" + paths: + - "${CI_PROJECT_DIR}/_build/meson-logs" + - "${CI_PROJECT_DIR}/_build/report.xml" + - "${CI_PROJECT_DIR}/_build/hello.png" + - "${CI_PROJECT_DIR}/_build/fontlist.txt" + msys2-mingw64: stage: build + needs: [] tags: - win32-ps variables: @@ -54,6 +80,7 @@ msys2-mingw64: reference: image: registry.gitlab.gnome.org/gnome/pango/fedora:v1 stage: docs + needs: [] variables: EXTRA_MESON_FLAGS: "" script: @@ -67,6 +94,7 @@ reference: pages: stage: deploy + needs: ['reference'] script: - mv _reference/ public/ artifacts: diff --git a/.gitlab-ci/fedora.Dockerfile b/.gitlab-ci/fedora.Dockerfile index e7ff2feb..f2240cac 100644 --- a/.gitlab-ci/fedora.Dockerfile +++ b/.gitlab-ci/fedora.Dockerfile @@ -26,8 +26,10 @@ RUN dnf -y install \ harfbuzz-devel \ hicolor-icon-theme \ itstool \ + libasan \ lcov \ libthai-devel \ + libubsan \ libXft-devel \ ninja-build \ python3 \ diff --git a/.gitlab-ci/run-tests.sh b/.gitlab-ci/run-tests.sh index cca589b4..e5c8e9af 100755 --- a/.gitlab-ci/run-tests.sh +++ b/.gitlab-ci/run-tests.sh @@ -6,6 +6,9 @@ set +e srcdir=$( pwd ) builddir=$1 +# Ignore memory leaks lower in dependencies +export LSAN_OPTIONS=suppressions=$srcdir/lsan.supp + meson test -C ${builddir} \ --print-errorlogs \ --suite=pango diff --git a/lsan.supp b/lsan.supp new file mode 100644 index 00000000..06a74df1 --- /dev/null +++ b/lsan.supp @@ -0,0 +1,7 @@ +leak:g_quark_init +leak:libc.so +leak:libfontconfig.so +leak:libcairo.so +leak:libpixman-1.so +leak:libthai.so +leak:libdatrie.so diff --git a/tests/test-break.c b/tests/test-break.c index db944fbb..c4359643 100644 --- a/tests/test-break.c +++ b/tests/test-break.c @@ -62,7 +62,6 @@ test_file (const gchar *filename, GString *string) length = strlen (test); len = g_utf8_strlen (test, -1) + 1; - attrs = g_new (PangoLogAttr, len); pango_parse_markup (test, -1, 0, &attributes, &text, NULL, &error); g_assert_no_error (error); @@ -79,6 +78,10 @@ test_file (const gchar *filename, GString *string) g_test_skip (msg); g_free (msg); #endif + g_free (contents); + g_object_unref (layout); + pango_attr_list_unref (attributes); + g_free (text); return FALSE; } @@ -225,6 +228,7 @@ test_file (const gchar *filename, GString *string) g_object_unref (layout); g_free (attrs); g_free (contents); + g_free (text); pango_attr_list_unref (attributes); return TRUE; @@ -255,7 +259,7 @@ test_break (gconstpointer d) GString *dump; gchar *diff; - const char *old_locale = setlocale (LC_ALL, NULL); + char *old_locale = g_strdup (setlocale (LC_ALL, NULL)); setlocale (LC_ALL, "en_US.utf8"); if (strstr (setlocale (LC_ALL, NULL), "en_US") == NULL) { @@ -265,20 +269,26 @@ test_break (gconstpointer d) g_test_skip (msg); g_free (msg); #endif + g_free (old_locale); return; } - expected_file = get_expected_filename (filename); - dump = g_string_sized_new (0); if (!test_file (filename, dump)) - return; + { + g_free (old_locale); + g_string_free (dump, TRUE); + return; + } + + expected_file = get_expected_filename (filename); diff = diff_with_file (expected_file, dump->str, dump->len, &error); g_assert_no_error (error); setlocale (LC_ALL, old_locale); + g_free (old_locale); if (diff && diff[0]) { @@ -294,9 +304,9 @@ test_break (gconstpointer d) g_test_fail (); g_strfreev (lines); - g_free (diff); } + g_free (diff); g_string_free (dump, TRUE); g_free (expected_file); } diff --git a/tests/test-itemize.c b/tests/test-itemize.c index cd145e40..b22f3c2f 100644 --- a/tests/test-itemize.c +++ b/tests/test-itemize.c @@ -277,9 +277,9 @@ test_itemize (gconstpointer d) g_test_fail (); g_strfreev (lines); - g_free (diff); } + g_free (diff); g_string_free (dump, TRUE); g_free (expected_file); } diff --git a/tests/test-layout.c b/tests/test-layout.c index 58ab46eb..5362d6fc 100644 --- a/tests/test-layout.c +++ b/tests/test-layout.c @@ -238,6 +238,9 @@ test_file (const gchar *filename, GString *string) PangoWrapMode wrap = PANGO_WRAP_WORD; PangoFontDescription *desc; + if (context == NULL) + context = pango_font_map_create_context (pango_cairo_font_map_get_default ()); + g_file_get_contents (filename, &contents, &length, &error); g_assert_no_error (error); @@ -344,9 +347,9 @@ test_layout (gconstpointer d) g_test_fail (); g_strfreev (lines); - g_free (diff); } + g_free (diff); g_string_free (dump, TRUE); g_free (expected_file); } |