diff --git a/src/fu-engine.c b/src/fu-engine.c
index b4ab95b23..3d7d2dd93 100644
--- a/src/fu-engine.c
+++ b/src/fu-engine.c
@@ -2161,8 +2161,8 @@ fu_engine_sort_releases_cb (gconstpointer a, gconstpointer b)
{
FwupdRelease *rel_a = FWUPD_RELEASE (*((FwupdRelease **) a));
FwupdRelease *rel_b = FWUPD_RELEASE (*((FwupdRelease **) b));
- return as_utils_vercmp (fwupd_release_get_version (rel_a),
- fwupd_release_get_version (rel_b));
+ return as_utils_vercmp (fwupd_release_get_version (rel_b),
+ fwupd_release_get_version (rel_a));
}
static GPtrArray *
diff --git a/src/fu-self-test.c b/src/fu-self-test.c
index 33ab40edd..dc0a3f688 100644
--- a/src/fu-self-test.c
+++ b/src/fu-self-test.c
@@ -213,6 +213,13 @@ fu_engine_func (void)
" aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
" "
" "
+ " "
+ " 123"
+ " 456"
+ " https://test.org/foo.cab"
+ " deadbeefdeadbeefdeadbeefdeadbeef"
+ " deadbeefdeadbeefdeadbeefdeadbeef"
+ " "
" "
" 123"
" 456"
@@ -269,14 +276,18 @@ fu_engine_func (void)
releases = fu_engine_get_releases (engine, fu_device_get_id (device), &error);
g_assert_no_error (error);
g_assert (releases != NULL);
- g_assert_cmpint (releases->len, ==, 3);
+ g_assert_cmpint (releases->len, ==, 4);
/* upgrades */
releases_up = fu_engine_get_upgrades (engine, fu_device_get_id (device), &error);
g_assert_no_error (error);
g_assert (releases_up != NULL);
- g_assert_cmpint (releases_up->len, ==, 1);
+ g_assert_cmpint (releases_up->len, ==, 2);
+
+ /* ensure the list is sorted */
rel = FWUPD_RELEASE (g_ptr_array_index (releases_up, 0));
+ g_assert_cmpstr (fwupd_release_get_version (rel), ==, "1.2.5");
+ rel = FWUPD_RELEASE (g_ptr_array_index (releases_up, 1));
g_assert_cmpstr (fwupd_release_get_version (rel), ==, "1.2.4");
/* downgrades */