summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libappstream-builder/asb-self-test.c35
-rw-r--r--libappstream-builder/asb-task.c10
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;