summaryrefslogtreecommitdiff
path: root/libappstream-builder/asb-self-test.c
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2015-12-28 08:58:11 +0000
committerRichard Hughes <richard@hughsie.com>2015-12-28 08:58:19 +0000
commit6212d2eddc2d424813013be383af92388f54f9d8 (patch)
tree489e7e08d55ea098796c42e8bf287db290336c02 /libappstream-builder/asb-self-test.c
parent848fa10beb5915e9277485bd1f34961ff83dc420 (diff)
downloadappstream-glib-6212d2eddc2d424813013be383af92388f54f9d8.tar.gz
Fix AppStream generation when using duplicate .deb packages
For package types without a native klass->compare fall back to something sensible. Also add some self tests for this to make sure this never happens again. Fixes https://github.com/hughsie/appstream-glib/issues/72
Diffstat (limited to 'libappstream-builder/asb-self-test.c')
-rw-r--r--libappstream-builder/asb-self-test.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libappstream-builder/asb-self-test.c b/libappstream-builder/asb-self-test.c
index 12010c7..91a2f6b 100644
--- a/libappstream-builder/asb-self-test.c
+++ b/libappstream-builder/asb-self-test.c
@@ -212,12 +212,36 @@ static void
asb_test_package_func (void)
{
g_autoptr(AsbPackage) pkg = NULL;
+ g_autoptr(AsbPackage) pkg2 = NULL;
+
+ /* set package values from filename */
pkg = asb_package_new ();
asb_package_set_filename (pkg, "/tmp/gambit-c-doc-4.7.3-2.fc22.noarch.rpm");
g_assert_cmpstr (asb_package_get_nevra (pkg), ==, "gambit-c-doc-4.7.3-2.fc22.noarch");
g_assert_cmpstr (asb_package_get_name (pkg), ==, "gambit-c-doc");
g_assert_cmpstr (asb_package_get_version (pkg), ==, "4.7.3");
+ g_assert_cmpstr (asb_package_get_release_str (pkg), ==, "2.fc22");
g_assert_cmpstr (asb_package_get_arch (pkg), ==, "noarch");
+ g_assert_cmpint (asb_package_get_epoch (pkg), ==, 0);
+
+ /* set package values again */
+ pkg2 = asb_package_new ();
+ asb_package_set_filename (pkg2, "/tmp/gambit-c-doc-4.7.3-2.fc22.noarch.rpm");
+
+ /* check same */
+ g_assert_cmpint (asb_package_compare (pkg, pkg2), ==, 0);
+
+ /* fix version */
+ asb_package_set_version (pkg2, "4.7.4");
+ g_assert_cmpint (asb_package_compare (pkg, pkg2), <, 0);
+ g_assert_cmpint (asb_package_compare (pkg2, pkg), >, 0);
+ asb_package_set_version (pkg2, "4.7.3");
+
+ /* fix release */
+ asb_package_set_release (pkg2, "3.fc22");
+ g_assert_cmpint (asb_package_compare (pkg, pkg2), <, 0);
+ g_assert_cmpint (asb_package_compare (pkg2, pkg), >, 0);
+ asb_package_set_release (pkg2, "2.fc22");
}
static void