diff options
author | Richard Hughes <richard@hughsie.com> | 2015-12-28 08:58:11 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-12-28 08:58:19 +0000 |
commit | 6212d2eddc2d424813013be383af92388f54f9d8 (patch) | |
tree | 489e7e08d55ea098796c42e8bf287db290336c02 /libappstream-builder/asb-self-test.c | |
parent | 848fa10beb5915e9277485bd1f34961ff83dc420 (diff) | |
download | appstream-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.c | 24 |
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 |