Hello community, here is the log from the commit of package libmodulemd for openSUSE:Factory checked in at 2019-05-12 11:44:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libmodulemd (Old) and /work/SRC/openSUSE:Factory/.libmodulemd.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libmodulemd" Sun May 12 11:44:18 2019 rev:5 rq:702039 version:unknown Changes: -------- --- /work/SRC/openSUSE:Factory/libmodulemd/libmodulemd.changes 2019-04-30 13:05:20.353937894 +0200 +++ /work/SRC/openSUSE:Factory/.libmodulemd.new.5148/libmodulemd.changes 2019-05-12 11:44:51.951887694 +0200 @@ -1,0 +2,9 @@ +Fri May 10 14:30:36 UTC 2019 - Neal Gompa <[email protected]> + +- Update to 2.3.1 (v2) and 1.8.8 (v1) + + Make Modulemd.Component.set_*() functions accept NULL (gh#fedora-modularity/libmodulemd#279) + + Fix segmentation fault in XMD code due to improper memory management (gh#fedora-modularity/libmodulemd#274) + + Fix assorted documentation issues +- Disable executing test suite on ARM and RISC-V due to performance issues with builders + +------------------------------------------------------------------- Old: ---- modulemd-2.3.0.tar.xz New: ---- modulemd-2.3.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libmodulemd.spec ++++++ --- /var/tmp/diff_new_pack.hW6wcH/_old 2019-05-12 11:44:54.835896161 +0200 +++ /var/tmp/diff_new_pack.hW6wcH/_new 2019-05-12 11:44:54.835896161 +0200 @@ -18,7 +18,7 @@ %global majorversion 2 %global minorversion 3 -%global patchversion 0 +%global patchversion 1 %global majorminorversion %{majorversion}.%{minorversion} %global nsversion %{majorversion}.0 @@ -31,7 +31,7 @@ # Legacy modulemd API %global oldmajorver 1 %global oldminorver 8 -%global oldpatchver 7 +%global oldpatchver 8 %global oldmajorminorver %{oldmajorver}.%{oldminorver} %global oldnsver %{oldmajorver}.0 @@ -41,7 +41,6 @@ %global olddevname %{name}%{oldmajorver}-devel %global oldgirname typelib-1_0-Modulemd-%{oldmajorver}_0 - Name: libmodulemd Version: %{libmodulemd_version} Release: 0 @@ -158,7 +157,11 @@ %check export LC_CTYPE=C.utf8 +# Don't run tests on ARM and RISC-V for now. There are problems +# with performance on the builders and often these time out. +%ifnarch %{arm} aarch64 riscv64 %meson_test +%endif %install %meson_install ++++++ modulemd-2.3.0.tar.xz -> modulemd-2.3.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/.travis/coverity_prep.sh new/modulemd-2.3.1/.travis/coverity_prep.sh --- old/modulemd-2.3.0/.travis/coverity_prep.sh 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/.travis/coverity_prep.sh 2019-05-03 14:21:00.000000000 +0200 @@ -3,6 +3,9 @@ set -x echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca- +curl -s -L https://entrust.com/root-certificates/entrust_l1k.cer | tee -a /etc/pki/ca-trust/source/anchors/entrust_l1k.cer +sudo update-ca-trust + curl -s https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh -o /usr/bin/travisci_build_coverity_scan.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/README.md new/modulemd-2.3.1/README.md --- old/modulemd-2.3.0/README.md 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/README.md 2019-05-03 14:21:00.000000000 +0200 @@ -18,6 +18,10 @@ from gi.repository import Modulemd ``` +It's highly recommended that you install `python2-libmodulemd` or +`python3-libmodulemd`, which will seamlessly translate GLib Variants to native +Python objects and vice-versa. + # Working with repodata (DNF use-case) The libmodulemd API provides a number of convenience tools for interacting with repodata (that is, streams of YAML that contains information on multiple @@ -185,9 +189,10 @@ ## Python ```python stream = Modulemd.ModuleStream.read_file ('/path/to/module_name.yaml', + True, module_name, stream_name) -v2_stream = stream.upgrade(Modulemd.ModuleStreamVersion.TWO) +v2_stream = stream.upgrade(Modulemd.ModuleStreamVersionEnum.TWO) v2_stream.validate() ``` In the example above, we upgraded the stream to v2, in case we were reading from v1 metadata. This will allow us to avoid having to manage multiple code-paths and support only the latest we understand. After that, it calls validate() to ensure that the content that was read in was valid both syntactically and referentially. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/bindings/python/gi/overrides/Modulemd.py new/modulemd-2.3.1/bindings/python/gi/overrides/Modulemd.py --- old/modulemd-2.3.0/bindings/python/gi/overrides/Modulemd.py 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/bindings/python/gi/overrides/Modulemd.py 2019-05-03 14:21:00.000000000 +0200 @@ -42,8 +42,9 @@ __all__ = [] -class ModulemdUtil(): +class ModulemdUtil(object): + @staticmethod def variant_str(s): """ Converts a string to a GLib.Variant """ @@ -52,6 +53,7 @@ return GLib.Variant('s', s) + @staticmethod def variant_bool(b): """ Converts a boolean to a GLib.Varant """ @@ -60,6 +62,7 @@ return GLib.Variant('b', b) + @staticmethod def variant_list(l): """ Converts a list to a GLib.Variant """ @@ -71,6 +74,7 @@ l_variant.append(ModulemdUtil.python_to_variant(item)) return GLib.Variant('av', l_variant) + @staticmethod def variant_dict(d): """ Converts a dictionary to a dictionary of GLib.Variant """ @@ -80,6 +84,7 @@ d_variant = ModulemdUtil.dict_values(d) return GLib.Variant('a{sv}', d_variant) + @staticmethod def dict_values(d): """ Converts each dictionary value to a GLib.Variant """ @@ -94,6 +99,7 @@ d_variant[k] = ModulemdUtil.python_to_variant(v) return d_variant + @staticmethod def python_to_variant(obj): if isinstance(obj, str): return ModulemdUtil.variant_str(obj) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/meson.build new/modulemd-2.3.1/meson.build --- old/modulemd-2.3.0/meson.build 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/meson.build 2019-05-03 14:21:00.000000000 +0200 @@ -10,7 +10,7 @@ # For more information on free software, see <https://www.gnu.org/philosophy/free-sw.en.html>. project('modulemd', 'c', - version : '2.3.0', + version : '2.3.1', default_options : [ 'buildtype=debugoptimized', 'c_std=c11', @@ -20,7 +20,7 @@ license : 'MIT', meson_version : '>=0.47.0') -libmodulemd_v1_version = '1.8.7' +libmodulemd_v1_version = '1.8.8' libmodulemd_v2_version = meson.project_version() cc = meson.get_compiler('c') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-component-module.h new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-component-module.h --- old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-component-module.h 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-component-module.h 2019-05-03 14:21:00.000000000 +0200 @@ -49,7 +49,7 @@ /** * modulemd_component_module_set_ref: * @self: This #ModulemdComponentModule object. - * @ref: The commit ID in the SCM repository. + * @ref: (in) (nullable): The commit ID in the SCM repository. * * Since: 2.0 */ @@ -73,7 +73,7 @@ /** * modulemd_component_module_set_repository: * @self: This #ModulemdComponentModule object - * @repository: The URI of the SCM repository. + * @repository: (in) (nullable): The URI of the SCM repository. * * Since: 2.0 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-component-rpm.h new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-component-rpm.h --- old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-component-rpm.h 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-component-rpm.h 2019-05-03 14:21:00.000000000 +0200 @@ -126,7 +126,7 @@ /** * modulemd_component_rpm_set_cache: * @self: This #ModulemdComponentRpm object. - * @cache: The lookaside cache URL. + * @cache: (in) (nullable): The lookaside cache URL. * * Since: 2.0 */ @@ -150,7 +150,7 @@ /** * modulemd_component_rpm_set_ref: * @self: This #ModulemdComponentRpm object. - * @ref: The commit ID in the SCM repository. + * @ref: (in) (nullable): The commit ID in the SCM repository. * * Since: 2.0 */ @@ -173,7 +173,7 @@ /** * modulemd_component_rpm_set_repository: * @self: This #ModulemdComponentRpm object - * @repository: The URI of the SCM repository. + * @repository: (in) (nullable): The URI of the SCM repository. * * Since: 2.0 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-component.h new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-component.h --- old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-component.h 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-component.h 2019-05-03 14:21:00.000000000 +0200 @@ -213,7 +213,8 @@ /** * modulemd_component_set_rationale: * @self: This #ModulemdComponent object - * @rationale: The reason that this component is part of the stream. + * @rationale: (in) (nullable): The reason that this component is part of the + * stream. * * Since: 2.0 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-module-stream.h new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-module-stream.h --- old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd-module-stream.h 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd-module-stream.h 2019-05-03 14:21:00.000000000 +0200 @@ -107,14 +107,14 @@ * modulemd_module_stream_read_file: * @path: (in): The path to a YAML document containing a module stream * definition. + * @strict: (in): Whether the parser should return failure if it encounters an + * unknown mapping key or if it should ignore it. * @module_name: (in) (nullable): An optional module name to override the * document on disk. Mostly useful in cases where the name is being * auto-detected from git. * @module_stream: (in) (nullable): An optional module stream name to override * the document on disk. Mostly useful in cases where the name is being * auto-detected from git. - * @strict: (in): Whether the parser should return failure if it encounters an - * unknown mapping key or if it should ignore it. * @error: (out): A #GError that will return the reason for a failed read. * * Create a #ModulemdModuleStream object from a YAML file. @@ -139,14 +139,14 @@ * modulemd_module_stream_read_string: * @yaml_string: (in): A YAML document string containing a module stream * definition. + * @strict: (in): Whether the parser should return failure if it encounters an + * unknown mapping key or if it should ignore it. * @module_name: (in) (nullable): An optional module name to override the * document on disk. Mostly useful in cases where the name is being * auto-detected from git. * @module_stream: (in) (nullable): An optional module stream name to override * the document on disk. Mostly useful in cases where the name is being * auto-detected from git. - * @strict: (in): Whether the parser should return failure if it encounters an - * unknown mapping key or if it should ignore it. * @error: (out): A #GError that will return the reason for a failed read. * * Create a #ModulemdModuleStream object from a YAML string. @@ -171,14 +171,14 @@ * modulemd_module_stream_read_stream: (skip) * @stream: (in): A YAML document as a FILE * containing a module stream * definition. + * @strict: (in): Whether the parser should return failure if it encounters an + * unknown mapping key or if it should ignore it. * @module_name: (in) (nullable): An optional module name to override the * document on disk. Mostly useful in cases where the name is being * auto-detected from git. * @module_stream: (in) (nullable): An optional module stream name to override * the document on disk. Mostly useful in cases where the name is being * auto-detected from git. - * @strict: (in): Whether the parser should return failure if it encounters an - * unknown mapping key or if it should ignore it. * @error: (out): A #GError that will return the reason for a failed read. * * Create a #ModulemdModuleStream object from a YAML file. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd.h new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd.h --- old/modulemd-2.3.0/modulemd/v2/include/modulemd-2.0/modulemd.h 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/include/modulemd-2.0/modulemd.h 2019-05-03 14:21:00.000000000 +0200 @@ -162,9 +162,10 @@ * * |[<!-- language="Python" --> * stream = Modulemd.ModuleStream.read_file ('/path/to/module_name.yaml', + * True, * module_name, * stream_name) - * v2_stream = stream.upgrade(Modulemd.ModuleStreamVersion.TWO) + * v2_stream = stream.upgrade(Modulemd.ModuleStreamVersionEnum.TWO) * v2_stream.validate() * ]| * @@ -173,6 +174,10 @@ * code-paths and support only the latest we understand. After that, it calls * validate() to ensure that the content that was read in was valid both * syntactically and referentially. + * + * Also available is `Modulemd.ModuleStreamVersionEnum.LATEST` which will + * always represent the highest-supported ModuleStream version. This may change + * at any time. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/modulemd-module-stream-v1.c new/modulemd-2.3.1/modulemd/v2/modulemd-module-stream-v1.c --- old/modulemd-2.3.0/modulemd/v2/modulemd-module-stream-v1.c 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/modulemd-module-stream-v1.c 2019-05-03 14:21:00.000000000 +0200 @@ -861,7 +861,7 @@ g_return_if_fail (MODULEMD_IS_MODULE_STREAM_V1 (self)); g_clear_pointer (&self->xmd, g_variant_unref); - self->xmd = xmd; + self->xmd = modulemd_variant_deep_copy (xmd); } GVariant * @@ -1069,7 +1069,7 @@ copy, v1_self, servicelevels, modulemd_module_stream_v1_add_servicelevel); if (v1_self->xmd != NULL) - modulemd_module_stream_v1_set_xmd (copy, g_variant_ref (v1_self->xmd)); + modulemd_module_stream_v1_set_xmd (copy, v1_self->xmd); return MODULEMD_MODULE_STREAM (g_steal_pointer (©)); } @@ -1421,7 +1421,7 @@ return NULL; } modulemd_module_stream_v1_set_xmd (modulestream, xmd); - xmd = NULL; + g_clear_pointer (&xmd, g_variant_unref); } /* Dependencies */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/modulemd-util.c new/modulemd-2.3.1/modulemd/v2/modulemd-util.c --- old/modulemd-2.3.0/modulemd/v2/modulemd-util.c 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/modulemd-util.c 2019-05-03 14:21:00.000000000 +0200 @@ -271,15 +271,25 @@ g_hash_table_unref ((GHashTable *)table); } + +static void +destroy_variant_data (gpointer data) +{ + g_free (data); +} + + GVariant * modulemd_variant_deep_copy (GVariant *variant) { const GVariantType *data_type = g_variant_get_type (variant); gsize data_size = g_variant_get_size (variant); - gconstpointer data = g_variant_get_data (variant); + gpointer data = g_malloc0 (data_size); + + g_variant_store (variant, data); - return g_variant_ref_sink ( - g_variant_new_from_data (data_type, data, data_size, TRUE, NULL, NULL)); + return g_variant_ref_sink (g_variant_new_from_data ( + data_type, data, data_size, FALSE, destroy_variant_data, data)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/modulemd-yaml-util.c new/modulemd-2.3.1/modulemd/v2/modulemd-yaml-util.c --- old/modulemd-2.3.0/modulemd/v2/modulemd-yaml-util.c 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/modulemd-yaml-util.c 2019-05-03 14:21:00.000000000 +0200 @@ -957,7 +957,8 @@ g_set_error (error, MODULEMD_YAML_ERROR, MODULEMD_YAML_ERROR_EMIT, - "Unhandled variant type"); + "Unhandled variant type: \"%s\"", + g_variant_get_type_string (variant)); return FALSE; } return TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/tests/ModulemdTests/modulestream.py new/modulemd-2.3.1/modulemd/v2/tests/ModulemdTests/modulestream.py --- old/modulemd-2.3.0/modulemd/v2/tests/ModulemdTests/modulestream.py 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/tests/ModulemdTests/modulestream.py 2019-05-03 14:21:00.000000000 +0200 @@ -528,10 +528,10 @@ xmd_copy = stream.get_xmd() assert xmd_copy - assert 'outer_key' in xmd - assert 'scalar' in xmd['outer_key'] - assert 'inner_key' in xmd['outer_key'][1] - assert xmd['outer_key'][1]['inner_key'] == 'another_scalar' + assert 'outer_key' in xmd_copy + assert 'scalar' in xmd_copy['outer_key'] + assert 'inner_key' in xmd_copy['outer_key'][1] + assert xmd_copy['outer_key'][1]['inner_key'] == 'another_scalar' def test_upgrade(self): v1_stream = Modulemd.ModuleStreamV1.new("SuperModule", "latest") @@ -1129,6 +1129,38 @@ "%s/modulemd/v2/tests/test_data/buildafter/invalid_key.yaml" % (os.getenv('MESON_SOURCE_ROOT')), True) + def test_unicode_desc(self): + # Test a valid module stream with unicode in the description + stream = Modulemd.ModuleStream.read_file( + "%s/modulemd/v2/tests/test_data/stream_unicode.yaml" % + (os.getenv('MESON_SOURCE_ROOT')), True, '', '') + + self.assertIsNotNone(stream) + self.assertTrue(stream.validate()) + + def test_xmd_issue_274(self): + # Test a valid module stream with unicode in the description + stream = Modulemd.ModuleStream.read_file( + "%s/modulemd/v2/tests/test_data/stream_unicode.yaml" % + (os.getenv('MESON_SOURCE_ROOT')), True, '', '') + + # In this bug, we were getting a traceback attemping to call + # get_xmd() more than once on the same stream. There were subtle + # memory issues at play here. + if '_overrides_module' in dir(Modulemd): + # The XMD python tests can only be run against the installed lib + # because the overrides that translate between python and GVariant + # must be installed in /usr/lib/python*/site-packages/gi/overrides + # or they are not included when importing Modulemd + + xmd = stream.get_xmd() + mbs_xmd = stream.get_xmd()['mbs'] + mbs_xmd2 = stream.get_xmd()['mbs'] + + else: + stream.get_xmd() + stream.get_xmd() + if __name__ == '__main__': unittest.main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/tests/test-modulemd-modulestream.c new/modulemd-2.3.1/modulemd/v2/tests/test-modulemd-modulestream.c --- old/modulemd-2.3.0/modulemd/v2/tests/test-modulemd-modulestream.c 2019-04-23 02:15:08.000000000 +0200 +++ new/modulemd-2.3.1/modulemd/v2/tests/test-modulemd-modulestream.c 2019-05-03 14:21:00.000000000 +0200 @@ -911,6 +911,52 @@ g_assert_true (modulemd_rpm_map_entry_equals (entry, retrieved_entry)); } +static void +module_stream_v2_test_unicode_desc (void) +{ + g_autoptr (ModulemdModuleStream) stream = NULL; + g_autofree gchar *path = NULL; + g_autoptr (GError) error = NULL; + + /* Test a module stream with unicode in description */ + path = g_strdup_printf ("%s/modulemd/v2/tests/test_data/stream_unicode.yaml", + g_getenv ("MESON_SOURCE_ROOT")); + g_assert_nonnull (path); + + stream = modulemd_module_stream_read_file (path, TRUE, NULL, NULL, &error); + g_assert_nonnull (stream); + g_assert_no_error (error); +} + + +static void +module_stream_v2_test_xmd_issue_274 (void) +{ + g_autoptr (ModulemdModuleStream) stream = NULL; + g_autofree gchar *path = NULL; + g_autoptr (GError) error = NULL; + GVariant *xmd1 = NULL; + GVariant *xmd2 = NULL; + + path = g_strdup_printf ("%s/modulemd/v2/tests/test_data/stream_unicode.yaml", + g_getenv ("MESON_SOURCE_ROOT")); + g_assert_nonnull (path); + + stream = modulemd_module_stream_read_file (path, TRUE, NULL, NULL, &error); + g_assert_nonnull (stream); + g_assert_no_error (error); + g_assert_cmpint (modulemd_module_stream_get_mdversion (stream), + ==, + MD_MODULESTREAM_VERSION_ONE); + + xmd1 = + modulemd_module_stream_v1_get_xmd (MODULEMD_MODULE_STREAM_V1 (stream)); + xmd2 = + modulemd_module_stream_v1_get_xmd (MODULEMD_MODULE_STREAM_V1 (stream)); + + g_assert_true (xmd1 == xmd2); +} + int main (int argc, char *argv[]) @@ -1012,6 +1058,11 @@ module_stream_v2_test_rpm_map, NULL); + g_test_add_func ("/modulemd/v2/modulestream/v2/unicode/description", + module_stream_v2_test_unicode_desc); + + g_test_add_func ("/modulemd/v2/modulestream/v2/xmd/issue274", + module_stream_v2_test_xmd_issue_274); return g_test_run (); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/modulemd-2.3.0/modulemd/v2/tests/test_data/stream_unicode.yaml new/modulemd-2.3.1/modulemd/v2/tests/test_data/stream_unicode.yaml --- old/modulemd-2.3.0/modulemd/v2/tests/test_data/stream_unicode.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/modulemd-2.3.1/modulemd/v2/tests/test_data/stream_unicode.yaml 2019-05-03 14:21:00.000000000 +0200 @@ -0,0 +1,26 @@ +document: modulemd +version: 1 +data: + description: Fedora 28 traditional base ’ + name: platform + license: + module: [MIT] + profiles: + buildroot: + rpms: [bash, bzip2, coreutils, cpio, diffutils, fedora-release, findutils, gawk, + gcc, gcc-c++, grep, gzip, info, make, patch, redhat-rpm-config, rpm-build, + sed, shadow-utils, tar, unzip, util-linux, which, xz] + srpm-buildroot: + rpms: [bash, fedora-release, fedpkg-minimal, gnupg2, redhat-rpm-config, rpm-build, + shadow-utils] + stream: f28 + summary: Fedora 28 traditional base + version: 3 + context: 00000000 + xmd: + mbs: + buildrequires: {} + commit: virtual + requires: {} + mse: true + koji_tag: module-f28-build
