diff options
-rw-r--r-- | libappstream-builder/asb-self-test.c | 35 | ||||
-rw-r--r-- | libappstream-builder/asb-task.c | 10 |
2 files changed, 42 insertions, 3 deletions
diff --git a/libappstream-builder/asb-self-test.c b/libappstream-builder/asb-self-test.c index a67a9ee..1de71b1 100644 --- a/libappstream-builder/asb-self-test.c +++ b/libappstream-builder/asb-self-test.c @@ -422,7 +422,7 @@ asb_test_context_test_func (AsbTestContextMode mode) ret = as_store_from_file (store_failed, file_failed, NULL, NULL, &error); g_assert_no_error (error); g_assert (ret); - g_assert_cmpint (as_store_get_size (store_failed), ==, 3); + g_assert_cmpint (as_store_get_size (store_failed), ==, 4); app = as_store_get_app_by_id (store_failed, "console1.desktop"); g_assert (app != NULL); app = as_store_get_app_by_id (store_failed, "console2.desktop"); @@ -434,6 +434,39 @@ asb_test_context_test_func (AsbTestContextMode mode) xml_failed = as_store_to_xml (store_failed, AS_NODE_TO_XML_FLAG_FORMAT_MULTILINE); expected_xml = "<components version=\"0.8\" builder_id=\"appstream-glib:4\" origin=\"asb-self-test-failed\">\n" + "<component type=\"addon\">\n" + "<id>app-core</id>\n" + "<pkgname>app</pkgname>\n" + "<name>Core</name>\n" + "<summary>Addons for core functionality</summary>\n" + "<kudos>\n" + "<kudo>AppMenu</kudo>\n" + "<kudo>ModernToolkit</kudo>\n" + "<kudo>Notifications</kudo>\n" + "<kudo>SearchProvider</kudo>\n" + "<kudo>UserDocs</kudo>\n" + "</kudos>\n" + "<vetos>\n" + "<veto>partially absorbing app-core into app.desktop</veto>\n" + "</vetos>\n" + "<project_license>GPL-2.0+</project_license>\n" + "<url type=\"homepage\">http://people.freedesktop.org/</url>\n" + "<extends>app.desktop</extends>\n" + "<releases>\n" + "<release version=\"1\" timestamp=\"1407844800\"/>\n" + "</releases>\n" + "<provides>\n" + "<dbus type=\"session\">org.freedesktop.AppStream</dbus>\n" + "</provides>\n" + "<languages>\n" + "<lang percentage=\"100\">en_GB</lang>\n" + "<lang percentage=\"33\">ru</lang>\n" + "</languages>\n" + "<metadata>\n" + "<value key=\"X-CacheID\">app-1-1.fc21.x86_64.rpm</value>\n" + "<value key=\"X-Merge-With-Parent\">app.desktop</value>\n" + "</metadata>\n" + "</component>\n" "<component type=\"desktop\">\n" "<id>console1.desktop</id>\n" "<pkgname>app-console</pkgname>\n" diff --git a/libappstream-builder/asb-task.c b/libappstream-builder/asb-task.c index ea56efc..7676d63 100644 --- a/libappstream-builder/asb-task.c +++ b/libappstream-builder/asb-task.c @@ -299,20 +299,26 @@ asb_task_process (AsbTask *task, GError **error_not_used) /* run plugins */ asb_panel_set_status (priv->panel, "Examining"); for (i = 0; i < priv->plugins_to_run->len; i++) { + GList *apps_tmp = NULL; plugin = g_ptr_array_index (priv->plugins_to_run, i); asb_package_log (priv->pkg, ASB_PACKAGE_LOG_LEVEL_DEBUG, "Processing %s with %s", basename, plugin->name); - apps = asb_plugin_process (plugin, priv->pkg, priv->tmpdir, &error); - if (apps == NULL) { + apps_tmp = asb_plugin_process (plugin, priv->pkg, priv->tmpdir, &error); + if (apps_tmp == NULL) { asb_package_log (priv->pkg, ASB_PACKAGE_LOG_LEVEL_WARNING, "Failed to run process '%s': %s", plugin->name, error->message); g_clear_error (&error); } + for (l = apps_tmp; l != NULL; l = l->next) { + app = ASB_APP (l->data); + asb_plugin_add_app (&apps, AS_APP (app)); + } + g_list_free_full (apps_tmp, g_object_unref); } if (apps == NULL) goto skip; |