summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2018-03-27 10:43:11 +0100
committerRichard Hughes <richard@hughsie.com>2018-03-27 10:43:14 +0100
commit4de6da21720f9c9e35cd24853c8ff51f5f6f16e4 (patch)
treef44989f6346ee649afaa3b52673dcc2adf23a645
parent911ef7fb4b3bdda8acd6cf57715b9020c65e274c (diff)
downloadappstream-glib-4de6da21720f9c9e35cd24853c8ff51f5f6f16e4.tar.gz
Don't include the path component in the name when parsing the package filename
If the guessing fails, we fall back to the arch/rpm/deb-derived name but we don't want to show weird things in the logs. Fixes https://github.com/hughsie/appstream-glib/issues/228, many thanks to Andrew Gunnerson for the initial patch.
-rw-r--r--libappstream-builder/asb-package.c7
-rw-r--r--libappstream-builder/asb-self-test.c15
2 files changed, 17 insertions, 5 deletions
diff --git a/libappstream-builder/asb-package.c b/libappstream-builder/asb-package.c
index c2cbf1b..0b62b74 100644
--- a/libappstream-builder/asb-package.c
+++ b/libappstream-builder/asb-package.c
@@ -842,7 +842,7 @@ asb_package_guess_from_filename (AsbPackage *pkg)
gchar *at;
/* remove .rpm extension */
- tmp = g_strdup (priv->filename);
+ tmp = g_path_get_basename (priv->filename);
at = g_strrstr (tmp, ".rpm");
if (at == NULL)
return;
@@ -870,10 +870,7 @@ asb_package_guess_from_filename (AsbPackage *pkg)
*at = '\0';
/* get name */
- at = g_strrstr (tmp, "/");
- if (at == NULL)
- return;
- priv->name = g_strdup (at + 1);
+ priv->name = g_strdup (tmp);
}
/**
diff --git a/libappstream-builder/asb-self-test.c b/libappstream-builder/asb-self-test.c
index bba9cce..7fda2cc 100644
--- a/libappstream-builder/asb-self-test.c
+++ b/libappstream-builder/asb-self-test.c
@@ -243,6 +243,20 @@ asb_test_package_func (void)
}
static void
+asb_test_package_guess_from_fn_func (void)
+{
+ g_autoptr(AsbPackage) pkg = asb_package_new ();
+
+ /* check pathological name */
+ asb_package_set_filename (pkg, "/tmp/atom.x86_64.rpm");
+ g_assert_cmpstr (asb_package_get_name (pkg), ==, NULL);
+ g_assert_cmpstr (asb_package_get_version (pkg), ==, NULL);
+ g_assert_cmpstr (asb_package_get_release_str (pkg), ==, NULL);
+ g_assert_cmpstr (asb_package_get_arch (pkg), ==, "x86_64");
+ g_assert_cmpint (asb_package_get_epoch (pkg), ==, 0);
+}
+
+static void
asb_test_utils_glob_func (void)
{
g_autoptr(GPtrArray) array = NULL;
@@ -781,6 +795,7 @@ main (int argc, char **argv)
/* tests go here */
g_test_add_func ("/AppStreamBuilder/package", asb_test_package_func);
+ g_test_add_func ("/AppStreamBuilder/package{guess-fn}", asb_test_package_guess_from_fn_func);
g_test_add_func ("/AppStreamBuilder/utils{glob}", asb_test_utils_glob_func);
g_test_add_func ("/AppStreamBuilder/plugin-loader", asb_test_plugin_loader_func);
g_test_add_func ("/AppStreamBuilder/firmware", asb_test_firmware_func);