[PackageKit-commit] packagekit: Branch 'master' - 23 commits

Richard Hughes hughsient at kemper.freedesktop.org
Sun Sep 21 08:50:35 PDT 2008


 backends/yum/yumBackend.py            |    5 
 backends/zypp/pk-backend-zypp.cpp     |    3 
 docs/api/Makefile.am                  |    3 
 docs/html/pk-matrix.html              |   14 
 libpackagekit/egg-dbus-monitor.c      |   24 +
 libpackagekit/egg-dbus-monitor.h      |    3 
 libpackagekit/egg-obj-list.c          |    5 
 libpackagekit/egg-string.c            |   55 ---
 libpackagekit/egg-test.c              |   25 +
 libpackagekit/egg-test.h              |    2 
 libpackagekit/pk-catalog.c            |    9 
 libpackagekit/pk-client.c             |   25 -
 libpackagekit/pk-common.c             |   80 ++---
 libpackagekit/pk-control.c            |    5 
 libpackagekit/pk-details-obj.c        |   10 
 libpackagekit/pk-distro-upgrade-obj.c |   10 
 libpackagekit/pk-enum.c               |   47 +--
 libpackagekit/pk-enum.h               |    5 
 libpackagekit/pk-extra.c              |   25 -
 libpackagekit/pk-package-id.c         |   92 +-----
 libpackagekit/pk-package-ids.c        |   30 --
 libpackagekit/pk-package-list.c       |   37 --
 libpackagekit/pk-package-obj.c        |   39 --
 libpackagekit/pk-task-list.c          |    8 
 libpackagekit/pk-update-detail-obj.c  |   10 
 python/packagekit/Makefile.am         |    1 
 python/packagekit/client.py           |   58 +---
 python/packagekit/misc.py             |  114 +++++++
 python/wrapper-test.py                |   24 -
 src/Makefile.am                       |    2 
 src/pk-backend-dbus.c                 |   69 ++--
 src/pk-backend-internal.h             |    3 
 src/pk-backend-spawn.c                |  113 +------
 src/pk-backend.c                      |  337 +++--------------------
 src/pk-backend.h                      |    2 
 src/pk-conf.c                         |    5 
 src/pk-engine.c                       |   90 +++++-
 src/pk-file-monitor-dummy.c           |    5 
 src/pk-file-monitor-gio.c             |    5 
 src/pk-notify.c                       |    5 
 src/pk-security-polkit.c              |   21 -
 src/pk-self-test.c                    |    2 
 src/pk-store.c                        |  486 ++++++++++++++++++++++++++++++++++
 src/pk-store.h                        |   88 ++++++
 src/pk-time.c                         |   33 --
 src/pk-transaction-db.c               |    2 
 src/pk-transaction-id.c               |   10 
 src/pk-transaction-list.c             |   18 -
 src/pk-transaction.c                  |  215 +++++----------
 src/pk-update-detail-list.c           |    5 
 50 files changed, 1224 insertions(+), 1060 deletions(-)

New commits:
commit 6c7b57b75ec03e9c433b9b3566a3a8307a90fc68
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 16:29:15 2008 +0100

    trivial: make the static data tables constant to try and push more things up into .text

diff --git a/libpackagekit/pk-enum.c b/libpackagekit/pk-enum.c
index c2b939a..e0220df 100644
--- a/libpackagekit/pk-enum.c
+++ b/libpackagekit/pk-enum.c
@@ -40,7 +40,7 @@
 #include "pk-common.h"
 #include "pk-enum.h"
 
-static PkEnumMatch enum_exit[] = {
+static const PkEnumMatch enum_exit[] = {
 	{PK_EXIT_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
 	{PK_EXIT_ENUM_SUCCESS,			"success"},
 	{PK_EXIT_ENUM_FAILED,			"failed"},
@@ -51,7 +51,7 @@ static PkEnumMatch enum_exit[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_status[] = {
+static const PkEnumMatch enum_status[] = {
 	{PK_STATUS_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_STATUS_ENUM_WAIT,			"wait"},
 	{PK_STATUS_ENUM_SETUP,			"setup"},
@@ -84,7 +84,7 @@ static PkEnumMatch enum_status[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_role[] = {
+static const PkEnumMatch enum_role[] = {
 	{PK_ROLE_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
 	{PK_ROLE_ENUM_CANCEL,			"cancel"},
 	{PK_ROLE_ENUM_GET_DEPENDS,		"get-depends"},
@@ -118,7 +118,7 @@ static PkEnumMatch enum_role[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_error[] = {
+static const PkEnumMatch enum_error[] = {
 	{PK_ERROR_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
 	{PK_ERROR_ENUM_OOM,			"out-of-memory"},
 	{PK_ERROR_ENUM_NO_CACHE,		"no-cache"},
@@ -166,7 +166,7 @@ static PkEnumMatch enum_error[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_restart[] = {
+static const PkEnumMatch enum_restart[] = {
 	{PK_RESTART_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_RESTART_ENUM_NONE,			"none"},
 	{PK_RESTART_ENUM_SYSTEM,		"system"},
@@ -175,7 +175,7 @@ static PkEnumMatch enum_restart[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_message[] = {
+static const PkEnumMatch enum_message[] = {
 	{PK_MESSAGE_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_MESSAGE_ENUM_BROKEN_MIRROR,		"broken-mirror"},
 	{PK_MESSAGE_ENUM_CONNECTION_REFUSED,	"connection-refused"},
@@ -192,7 +192,7 @@ static PkEnumMatch enum_message[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_filter[] = {
+static const PkEnumMatch enum_filter[] = {
 	{PK_FILTER_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_FILTER_ENUM_NONE,			"none"},
 	{PK_FILTER_ENUM_INSTALLED,		"installed"},
@@ -220,7 +220,7 @@ static PkEnumMatch enum_filter[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_group[] = {
+static const PkEnumMatch enum_group[] = {
 	{PK_GROUP_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
 	{PK_GROUP_ENUM_ACCESSIBILITY,		"accessibility"},
 	{PK_GROUP_ENUM_ACCESSORIES,		"accessories"},
@@ -257,7 +257,7 @@ static PkEnumMatch enum_group[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_update_state[] = {
+static const PkEnumMatch enum_update_state[] = {
 	{PK_UPDATE_STATE_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_UPDATE_STATE_ENUM_TESTING,		"testing"},
 	{PK_UPDATE_STATE_ENUM_UNSTABLE,		"unstable"},
@@ -265,7 +265,7 @@ static PkEnumMatch enum_update_state[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_info[] = {
+static const PkEnumMatch enum_info[] = {
 	{PK_INFO_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
 	{PK_INFO_ENUM_INSTALLED,		"installed"},
 	{PK_INFO_ENUM_AVAILABLE,		"available"},
@@ -287,20 +287,20 @@ static PkEnumMatch enum_info[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_sig_type[] = {
+static const PkEnumMatch enum_sig_type[] = {
 	{PK_SIGTYPE_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_SIGTYPE_ENUM_GPG,			"gpg"},
 	{0, NULL}
 };
 
-static PkEnumMatch enum_upgrade[] = {
+static const PkEnumMatch enum_upgrade[] = {
 	{PK_DISTRO_UPGRADE_ENUM_UNKNOWN,	"unknown"},	/* fall though value */
 	{PK_DISTRO_UPGRADE_ENUM_STABLE,		"stable"},
 	{PK_DISTRO_UPGRADE_ENUM_UNSTABLE,		"unstable"},
 	{0, NULL}
 };
 
-static PkEnumMatch enum_provides[] = {
+static const PkEnumMatch enum_provides[] = {
 	{PK_PROVIDES_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_PROVIDES_ENUM_ANY,			"any"},
 	{PK_PROVIDES_ENUM_MODALIAS,		"modalias"},
@@ -311,7 +311,7 @@ static PkEnumMatch enum_provides[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_network[] = {
+static const PkEnumMatch enum_network[] = {
 	{PK_NETWORK_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_NETWORK_ENUM_OFFLINE,		"offline"},
 	{PK_NETWORK_ENUM_ONLINE,		"online"},
@@ -320,7 +320,7 @@ static PkEnumMatch enum_network[] = {
 	{0, NULL}
 };
 
-static PkEnumMatch enum_free_licenses[] = {
+static const PkEnumMatch enum_free_licenses[] = {
 	{PK_LICENSE_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{PK_LICENSE_ENUM_GLIDE,			"Glide"},
 	{PK_LICENSE_ENUM_AFL,			"AFL"},
@@ -460,7 +460,7 @@ static PkEnumMatch enum_free_licenses[] = {
  * Return value: the enumerated constant value, e.g. PK_SIGTYPE_ENUM_GPG
  */
 guint
-pk_enum_find_value (PkEnumMatch *table, const gchar *string)
+pk_enum_find_value (const PkEnumMatch *table, const gchar *string)
 {
 	guint i;
 	const gchar *string_tmp;
@@ -471,13 +471,11 @@ pk_enum_find_value (PkEnumMatch *table, const gchar *string)
 	}
 	for (i=0;;i++) {
 		string_tmp = table[i].string;
-		if (string_tmp == NULL) {
+		if (string_tmp == NULL)
 			break;
-		}
 		/* keep strcmp for speed */
-		if (strcmp (string, string_tmp) == 0) {
+		if (strcmp (string, string_tmp) == 0)
 			return table[i].value;
-		}
 	}
 	return table[0].value;
 }
@@ -492,7 +490,7 @@ pk_enum_find_value (PkEnumMatch *table, const gchar *string)
  * Return value: the string constant, e.g. "desktop-gnome"
  */
 const gchar *
-pk_enum_find_string (PkEnumMatch *table, guint value)
+pk_enum_find_string (const PkEnumMatch *table, guint value)
 {
 	guint i;
 	guint tmp;
@@ -500,13 +498,11 @@ pk_enum_find_string (PkEnumMatch *table, guint value)
 
 	for (i=0;;i++) {
 		string_tmp = table[i].string;
-		if (string_tmp == NULL) {
+		if (string_tmp == NULL)
 			break;
-		}
 		tmp = table[i].value;
-		if (tmp == value) {
+		if (tmp == value)
 			return table[i].string;
-		}
 	}
 	return table[0].string;
 }
diff --git a/libpackagekit/pk-enum.h b/libpackagekit/pk-enum.h
index ef28394..4dcfead 100644
--- a/libpackagekit/pk-enum.h
+++ b/libpackagekit/pk-enum.h
@@ -520,10 +520,10 @@ typedef enum {
 } PkLicenseEnum;
 
 /* general */
-guint		 pk_enum_find_value			(PkEnumMatch	*table,
+guint		 pk_enum_find_value			(const PkEnumMatch *table,
 							 const gchar	*string)
 							 G_GNUC_WARN_UNUSED_RESULT;
-const gchar	*pk_enum_find_string			(PkEnumMatch	*table,
+const gchar	*pk_enum_find_string			(const PkEnumMatch *table,
 							 guint		 value)
 							 G_GNUC_WARN_UNUSED_RESULT;
 
commit 59ef6d39cbcc358a748c5fde75451d920dd646f5
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 16:13:48 2008 +0100

    trivial: constification of pk-store

diff --git a/src/pk-backend.c b/src/pk-backend.c
index 4ce865f..dcab0ca 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -327,7 +327,7 @@ pk_backend_get_strv (PkBackend *backend, const gchar *key)
 /**
  * pk_backend_get_array:
  **/
-GPtrArray *
+const GPtrArray *
 pk_backend_get_array (PkBackend *backend, const gchar *key)
 {
 	g_return_val_if_fail (PK_IS_BACKEND (backend), NULL);
diff --git a/src/pk-backend.h b/src/pk-backend.h
index 5b16450..bc026d7 100644
--- a/src/pk-backend.h
+++ b/src/pk-backend.h
@@ -165,7 +165,7 @@ gboolean	 pk_backend_set_pointer			(PkBackend	*backend,
 /* get backend instance data */
 const gchar	*pk_backend_get_string			(PkBackend	*backend,
 							 const gchar	*key);
-GPtrArray	*pk_backend_get_array			(PkBackend	*backend,
+const GPtrArray	*pk_backend_get_array			(PkBackend	*backend,
 							 const gchar	*key);
 gchar		**pk_backend_get_strv			(PkBackend	*backend,
 							 const gchar	*key);
diff --git a/src/pk-store.c b/src/pk-store.c
index c5fda3d..62b3be8 100644
--- a/src/pk-store.c
+++ b/src/pk-store.c
@@ -185,7 +185,7 @@ pk_store_set_pointer (PkStore *store, const gchar *key, gpointer data)
  * pk_store_get_string:
  **/
 const gchar *
-pk_store_get_string (PkStore *store, const gchar *key)
+pk_store_get_string (const PkStore *store, const gchar *key)
 {
 	gpointer value;
 	g_return_val_if_fail (PK_IS_STORE (store), NULL);
@@ -204,7 +204,7 @@ pk_store_get_string (PkStore *store, const gchar *key)
  * pk_store_get_strv:
  **/
 gchar **
-pk_store_get_strv (PkStore *store, const gchar *key)
+pk_store_get_strv (const PkStore *store, const gchar *key)
 {
 	gpointer value;
 	g_return_val_if_fail (PK_IS_STORE (store), NULL);
@@ -222,8 +222,8 @@ pk_store_get_strv (PkStore *store, const gchar *key)
 /**
  * pk_store_get_array:
  **/
-GPtrArray *
-pk_store_get_array (PkStore *store, const gchar *key)
+const GPtrArray *
+pk_store_get_array (const PkStore *store, const gchar *key)
 {
 	gpointer value;
 	g_return_val_if_fail (PK_IS_STORE (store), NULL);
@@ -242,7 +242,7 @@ pk_store_get_array (PkStore *store, const gchar *key)
  * pk_store_get_uint:
  **/
 guint
-pk_store_get_uint (PkStore *store, const gchar *key)
+pk_store_get_uint (const PkStore *store, const gchar *key)
 {
 	gpointer value;
 	g_return_val_if_fail (PK_IS_STORE (store), 0);
@@ -262,7 +262,7 @@ pk_store_get_uint (PkStore *store, const gchar *key)
  * pk_store_get_bool:
  **/
 gboolean
-pk_store_get_bool (PkStore *store, const gchar *key)
+pk_store_get_bool (const PkStore *store, const gchar *key)
 {
 	gpointer value;
 	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
@@ -281,7 +281,7 @@ pk_store_get_bool (PkStore *store, const gchar *key)
  * pk_store_get_pointer:
  **/
 gpointer
-pk_store_get_pointer (PkStore *store, const gchar *key)
+pk_store_get_pointer (const PkStore *store, const gchar *key)
 {
 	gpointer value;
 	g_return_val_if_fail (PK_IS_STORE (store), NULL);
diff --git a/src/pk-store.h b/src/pk-store.h
index 7fb2293..98f6a58 100644
--- a/src/pk-store.h
+++ b/src/pk-store.h
@@ -68,17 +68,17 @@ gboolean	 pk_store_set_pointer			(PkStore	*store,
 							 const gchar	*key,
 							 gpointer	 data);
 
-const gchar	*pk_store_get_string			(PkStore	*store,
+const gchar	*pk_store_get_string			(const PkStore	*store,
 							 const gchar	*key);
-GPtrArray	*pk_store_get_array			(PkStore	*store,
+const GPtrArray	*pk_store_get_array			(const PkStore	*store,
 							 const gchar	*key);
-gchar		**pk_store_get_strv			(PkStore	*store,
+gchar		**pk_store_get_strv			(const PkStore	*store,
 							 const gchar	*key);
-guint		 pk_store_get_uint			(PkStore	*store,
+guint		 pk_store_get_uint			(const PkStore	*store,
 							 const gchar	*key);
-gboolean	 pk_store_get_bool			(PkStore	*store,
+gboolean	 pk_store_get_bool			(const PkStore	*store,
 							 const gchar	*key);
-gpointer	 pk_store_get_pointer			(PkStore	*store,
+gpointer	 pk_store_get_pointer			(const PkStore	*store,
 							 const gchar	*key);
 gboolean	 pk_store_reset				(PkStore	*store);
 
commit 19b32c07985686d0a31e61962f73ea69007b17dc
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 16:00:46 2008 +0100

    trivial: abstract out the store functionlity into PkStore so we can test it easier

diff --git a/src/Makefile.am b/src/Makefile.am
index 14c8697..272832c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -63,6 +63,8 @@ shared_SOURCES =					\
 	pk-time.c					\
 	pk-conf.c					\
 	pk-conf.h					\
+	pk-store.c					\
+	pk-store.h					\
 	pk-cache.c					\
 	pk-cache.h					\
 	pk-notify.c					\
diff --git a/src/pk-backend-internal.h b/src/pk-backend-internal.h
index b828d4e..44e22c7 100644
--- a/src/pk-backend-internal.h
+++ b/src/pk-backend-internal.h
@@ -23,6 +23,7 @@
 #define __PK_BACKEND_INTERNAL_H
 
 #include <glib-object.h>
+#include "pk-store.h"
 #include "pk-backend.h"
 #include "pk-bitfield.h"
 
@@ -41,6 +42,7 @@ typedef struct _PkBackendClass PkBackendClass;
 struct _PkBackend
 {
 	GObject			 parent;
+	PkStore			*store;
 	PkBackendDesc		*desc;
 	PkBackendPrivate	*priv;
 };
@@ -71,6 +73,7 @@ gboolean	 pk_backend_get_backend_detail		(PkBackend	*backend,
 PkBitfield	 pk_backend_get_groups			(PkBackend	*backend);
 PkBitfield	 pk_backend_get_filters			(PkBackend	*backend);
 PkBitfield	 pk_backend_get_actions			(PkBackend	*backend);
+PkStore		*pk_backend_get_store			(PkBackend	*backend);
 
 G_END_DECLS
 
diff --git a/src/pk-backend.c b/src/pk-backend.c
index e27a1de..4ce865f 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -41,6 +41,7 @@
 #include "pk-marshal.h"
 #include "pk-backend-internal.h"
 #include "pk-backend.h"
+#include "pk-store.h"
 #include "pk-time.h"
 #include "pk-file-monitor.h"
 #include "pk-update-detail-obj.h"
@@ -91,6 +92,7 @@ struct _PkBackendPrivate
 	gboolean		 set_eula;
 	gboolean		 has_sent_package;
 	PkNetwork		*network;
+	PkStore			*store;
 	PkPackageObj		*last_package;
 	PkRoleEnum		 role; /* this never changes for the lifetime of a transaction */
 	PkStatusEnum		 status; /* this changes */
@@ -107,10 +109,6 @@ struct _PkBackendPrivate
 	guint			 signal_finished;
 	guint			 signal_error_timeout;
 	GThread			*thread;
-	GHashTable		*hash_string;
-	GHashTable		*hash_strv;
-	GHashTable		*hash_pointer;
-	GHashTable		*hash_array;
 };
 
 G_DEFINE_TYPE (PkBackend, pk_backend, G_TYPE_OBJECT)
@@ -238,28 +236,22 @@ pk_backend_get_actions (PkBackend *backend)
 }
 
 /**
+ * pk_backend_get_store:
+ **/
+PkStore *
+pk_backend_get_store (PkBackend *backend)
+{
+	return backend->priv->store;
+}
+
+/**
  * pk_backend_set_string:
  **/
 gboolean
 pk_backend_set_string (PkBackend *backend, const gchar *key, const gchar *data)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-
-	/* valid, but do nothing */
-	if (data == NULL)
-		return FALSE;
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_string, (gpointer) key);
-	if (value != NULL) {
-		egg_warning ("already set data for %s", key);
-		return FALSE;
-	}
-	egg_debug ("saving '%s' for %s", data, key);
-	g_hash_table_insert (backend->priv->hash_string, g_strdup (key), (gpointer) g_strdup (data));
-	return TRUE;
+	return pk_store_set_string (backend->priv->store, key, data);
 }
 
 /**
@@ -268,23 +260,8 @@ pk_backend_set_string (PkBackend *backend, const gchar *key, const gchar *data)
 gboolean
 pk_backend_set_strv (PkBackend *backend, const gchar *key, gchar **data)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-
-	/* valid, but do nothing */
-	if (data == NULL)
-		return FALSE;
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_strv, (gpointer) key);
-	if (value != NULL) {
-		egg_warning ("already set data for %s", key);
-		return FALSE;
-	}
-	egg_debug ("saving %p for %s", data, key);
-	g_hash_table_insert (backend->priv->hash_strv, g_strdup (key), (gpointer) g_strdupv (data));
-	return TRUE;
+	return pk_store_set_strv (backend->priv->store, key, data);
 }
 
 /**
@@ -293,23 +270,8 @@ pk_backend_set_strv (PkBackend *backend, const gchar *key, gchar **data)
 gboolean
 pk_backend_set_array (PkBackend *backend, const gchar *key, GPtrArray *data)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-
-	/* valid, but do nothing */
-	if (data == NULL)
-		return FALSE;
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_array, (gpointer) key);
-	if (value != NULL) {
-		egg_warning ("already set data for %s", key);
-		return FALSE;
-	}
-	egg_debug ("saving %p for %s", data, key);
-	g_hash_table_insert (backend->priv->hash_array, g_strdup (key), (gpointer) data);
-	return TRUE;
+	return pk_store_set_array (backend->priv->store, key, data);
 }
 
 /**
@@ -318,19 +280,8 @@ pk_backend_set_array (PkBackend *backend, const gchar *key, GPtrArray *data)
 gboolean
 pk_backend_set_uint (PkBackend *backend, const gchar *key, guint data)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_pointer, (gpointer) key);
-	if (value != NULL) {
-		egg_warning ("already set data for %s", key);
-		return FALSE;
-	}
-	egg_debug ("saving %i for %s", data, key);
-	g_hash_table_insert (backend->priv->hash_pointer, g_strdup (key), GINT_TO_POINTER (data+1));
-	return TRUE;
+	return pk_store_set_uint (backend->priv->store, key, data);
 }
 
 /**
@@ -339,19 +290,8 @@ pk_backend_set_uint (PkBackend *backend, const gchar *key, guint data)
 gboolean
 pk_backend_set_bool (PkBackend *backend, const gchar *key, gboolean data)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_pointer, (gpointer) key);
-	if (value != NULL) {
-		egg_warning ("already set data for %s", key);
-		return FALSE;
-	}
-	egg_debug ("saving %i for %s", data, key);
-	g_hash_table_insert (backend->priv->hash_pointer, g_strdup (key), GINT_TO_POINTER (data+1));
-	return TRUE;
+	return pk_store_set_bool (backend->priv->store, key, data);
 }
 
 /**
@@ -360,20 +300,8 @@ pk_backend_set_bool (PkBackend *backend, const gchar *key, gboolean data)
 gboolean
 pk_backend_set_pointer (PkBackend *backend, const gchar *key, gpointer data)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-	g_return_val_if_fail (data != NULL, FALSE);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_pointer, (gpointer) key);
-	if (value != NULL) {
-		egg_warning ("already set data for %s", key);
-		return FALSE;
-	}
-	egg_debug ("saving %p for %s", data, key);
-	g_hash_table_insert (backend->priv->hash_pointer, g_strdup (key), data+1);
-	return TRUE;
+	return pk_store_set_pointer (backend->priv->store, key, data);
 }
 
 /**
@@ -382,17 +310,8 @@ pk_backend_set_pointer (PkBackend *backend, const gchar *key, gpointer data)
 const gchar *
 pk_backend_get_string (PkBackend *backend, const gchar *key)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), NULL);
-	g_return_val_if_fail (key != NULL, NULL);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_string, (gpointer) key);
-	if (value == NULL) {
-		egg_warning ("not set data for %s", key);
-		return NULL;
-	}
-	return (const gchar *) value;
+	return pk_store_get_string (backend->priv->store, key);
 }
 
 /**
@@ -401,17 +320,8 @@ pk_backend_get_string (PkBackend *backend, const gchar *key)
 gchar **
 pk_backend_get_strv (PkBackend *backend, const gchar *key)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), NULL);
-	g_return_val_if_fail (key != NULL, NULL);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_strv, (gpointer) key);
-	if (value == NULL) {
-		egg_warning ("not set data for %s", key);
-		return NULL;
-	}
-	return (gchar **) value;
+	return pk_store_get_strv (backend->priv->store, key);
 }
 
 /**
@@ -420,17 +330,8 @@ pk_backend_get_strv (PkBackend *backend, const gchar *key)
 GPtrArray *
 pk_backend_get_array (PkBackend *backend, const gchar *key)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), NULL);
-	g_return_val_if_fail (key != NULL, NULL);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_array, (gpointer) key);
-	if (value == NULL) {
-		egg_warning ("not set data for %s", key);
-		return NULL;
-	}
-	return (GPtrArray *) value;
+	return pk_store_get_array (backend->priv->store, key);
 }
 
 /**
@@ -439,18 +340,8 @@ pk_backend_get_array (PkBackend *backend, const gchar *key)
 uint
 pk_backend_get_uint (PkBackend *backend, const gchar *key)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), 0);
-	g_return_val_if_fail (key != NULL, 0);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_pointer, (gpointer) key);
-	if (value == NULL) {
-		egg_warning ("not set data for %s", key);
-		return FALSE;
-	}
-	/* we do the +1/-1 as NULL also means missing in the hash table */
-	return GPOINTER_TO_INT (value)-1;
+	return pk_store_get_uint (backend->priv->store, key);
 }
 
 /**
@@ -459,17 +350,8 @@ pk_backend_get_uint (PkBackend *backend, const gchar *key)
 gboolean
 pk_backend_get_bool (PkBackend *backend, const gchar *key)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_pointer, (gpointer) key);
-	if (value == NULL) {
-		egg_warning ("not set data for %s", key);
-		return FALSE;
-	}
-	return GPOINTER_TO_INT (value)-1;
+	return pk_store_get_bool (backend->priv->store, key);
 }
 
 /**
@@ -478,17 +360,8 @@ pk_backend_get_bool (PkBackend *backend, const gchar *key)
 gpointer
 pk_backend_get_pointer (PkBackend *backend, const gchar *key)
 {
-	gpointer value;
 	g_return_val_if_fail (PK_IS_BACKEND (backend), NULL);
-	g_return_val_if_fail (key != NULL, NULL);
-
-	/* does already exist? */
-	value = g_hash_table_lookup (backend->priv->hash_pointer, (gpointer) key);
-	if (value == NULL) {
-		egg_warning ("not set data for %s", key);
-		return NULL;
-	}
-	return value-1;
+	return pk_store_get_pointer (backend->priv->store, key);
 }
 
 /**
@@ -1511,10 +1384,8 @@ pk_backend_finished_delay (gpointer data)
 	if (backend->priv->exit == PK_EXIT_ENUM_UNKNOWN)
 		pk_backend_set_exit_code (backend, PK_EXIT_ENUM_SUCCESS);
 
-	g_hash_table_remove_all (backend->priv->hash_pointer);
-	g_hash_table_remove_all (backend->priv->hash_string);
-	g_hash_table_remove_all (backend->priv->hash_strv);
-	g_hash_table_remove_all (backend->priv->hash_array);
+	/* clear all state */
+	pk_store_reset (backend->priv->store);
 
 	egg_debug ("emit finished %i", backend->priv->exit);
 	g_signal_emit (backend, signals [PK_BACKEND_FINISHED], 0, backend->priv->exit);
@@ -1792,11 +1663,8 @@ pk_backend_finalize (GObject *object)
 	g_free (backend->priv->c_tid);
 	g_object_unref (backend->priv->time);
 	g_object_unref (backend->priv->network);
+	g_object_unref (backend->priv->store);
 	g_hash_table_destroy (backend->priv->eulas);
-	g_hash_table_unref (backend->priv->hash_string);
-	g_hash_table_unref (backend->priv->hash_strv);
-	g_hash_table_unref (backend->priv->hash_pointer);
-	g_hash_table_unref (backend->priv->hash_array);
 
 	if (backend->priv->handle != NULL)
 		g_module_close (backend->priv->handle);
@@ -1943,15 +1811,6 @@ pk_backend_reset (PkBackend *backend)
 }
 
 /**
- * pk_free_ptr_array:
- **/
-static void
-pk_free_ptr_array (gpointer data)
-{
-	g_ptr_array_free ((GPtrArray *) data, TRUE);
-}
-
-/**
  * pk_backend_init:
  **/
 static void
@@ -1971,13 +1830,10 @@ pk_backend_init (PkBackend *backend)
 	backend->priv->signal_finished = 0;
 	backend->priv->signal_error_timeout = 0;
 	backend->priv->during_initialize = FALSE;
+	backend->priv->store = pk_store_new ();
 	backend->priv->time = pk_time_new ();
 	backend->priv->network = pk_network_new ();
 	backend->priv->eulas = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-	backend->priv->hash_string = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-	backend->priv->hash_strv = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_strfreev);
-	backend->priv->hash_pointer = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-	backend->priv->hash_array = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, pk_free_ptr_array);
 
 	/* monitor config files for changes */
 	backend->priv->file_monitor = pk_file_monitor_new ();
@@ -2063,9 +1919,6 @@ pk_backend_test (EggTest *test)
 	gchar *text;
 	gboolean ret;
 	const gchar *filename;
-	const gchar *data_string;
-	guint data_uint;
-	gboolean data_bool;
 
 	if (!egg_test_start (test, "PkBackend"))
 		return;
@@ -2079,84 +1932,6 @@ pk_backend_test (EggTest *test)
 		egg_test_failed (test, NULL);
 
 	/************************************************************/
-	egg_test_title (test, "set a blank string");
-	ret = pk_backend_set_string (backend, "dave2", "");
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "set a ~bool");
-	ret = pk_backend_set_bool (backend, "roger2", FALSE);
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "set a zero uint");
-	ret = pk_backend_set_uint (backend, "linda2", 0);
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "get a blank string");
-	data_string = pk_backend_get_string (backend, "dave2");
-	if (egg_strequal (data_string, ""))
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "data was %s", data_string);
-
-	/************************************************************/
-	egg_test_title (test, "get a ~bool");
-	data_bool = pk_backend_get_bool (backend, "roger2");
-	if (!data_bool)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "data was %i", data_bool);
-
-	/************************************************************/
-	egg_test_title (test, "get a zero uint");
-	data_uint = pk_backend_get_uint (backend, "linda2");
-	if (data_uint == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "data was %i", data_uint);
-
-	/************************************************************/
-	egg_test_title (test, "set a string");
-	ret = pk_backend_set_string (backend, "dave", "ania");
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "set a bool");
-	ret = pk_backend_set_bool (backend, "roger", TRUE);
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "set a uint");
-	ret = pk_backend_set_uint (backend, "linda", 999);
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "get a string");
-	data_string = pk_backend_get_string (backend, "dave");
-	if (egg_strequal (data_string, "ania"))
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "data was %s", data_string);
-
-	/************************************************************/
-	egg_test_title (test, "get a bool");
-	data_bool = pk_backend_get_bool (backend, "roger");
-	if (data_bool)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "data was %i", data_bool);
-
-	/************************************************************/
-	egg_test_title (test, "get a uint");
-	data_uint = pk_backend_get_uint (backend, "linda");
-	if (data_uint == 999)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "data was %i", data_uint);
-
-	/************************************************************/
 	egg_test_title (test, "create a config file");
 	filename = "/tmp/dave";
 	ret = g_file_set_contents (filename, "foo", -1, NULL);
diff --git a/src/pk-self-test.c b/src/pk-self-test.c
index 0c7caae..7b5cef8 100644
--- a/src/pk-self-test.c
+++ b/src/pk-self-test.c
@@ -27,6 +27,7 @@
 /* prototypes */
 void egg_string_test (EggTest *test);
 void pk_conf_test (EggTest *test);
+void pk_store_test (EggTest *test);
 void pk_inhibit_test (EggTest *test);
 void pk_spawn_test (EggTest *test);
 void pk_transaction_list_test (EggTest *test);
@@ -59,6 +60,7 @@ main (int argc, char **argv)
 	pk_security_test (test);
 	pk_time_test (test);
 	pk_conf_test (test);
+	pk_store_test (test);
 	pk_inhibit_test (test);
 	pk_spawn_test (test);
 	pk_transaction_list_test (test);
diff --git a/src/pk-store.c b/src/pk-store.c
new file mode 100644
index 0000000..c5fda3d
--- /dev/null
+++ b/src/pk-store.c
@@ -0,0 +1,486 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <glib.h>
+
+#include "egg-debug.h"
+#include "egg-string.h"
+
+#include "pk-store.h"
+
+#define PK_STORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_STORE, PkStorePrivate))
+
+struct PkStorePrivate
+{
+	GHashTable		*hash_string;
+	GHashTable		*hash_strv;
+	GHashTable		*hash_pointer;
+	GHashTable		*hash_array;
+};
+
+G_DEFINE_TYPE (PkStore, pk_store, G_TYPE_OBJECT)
+
+/**
+ * pk_store_set_string:
+ **/
+gboolean
+pk_store_set_string (PkStore *store, const gchar *key, const gchar *data)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+
+	/* valid, but do nothing */
+	if (data == NULL)
+		return FALSE;
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_string, (gpointer) key);
+	if (value != NULL) {
+		egg_warning ("already set data for %s", key);
+		return FALSE;
+	}
+	egg_debug ("saving '%s' for %s", data, key);
+	g_hash_table_insert (store->priv->hash_string, g_strdup (key), (gpointer) g_strdup (data));
+	return TRUE;
+}
+
+/**
+ * pk_store_set_strv:
+ **/
+gboolean
+pk_store_set_strv (PkStore *store, const gchar *key, gchar **data)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+
+	/* valid, but do nothing */
+	if (data == NULL)
+		return FALSE;
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_strv, (gpointer) key);
+	if (value != NULL) {
+		egg_warning ("already set data for %s", key);
+		return FALSE;
+	}
+	egg_debug ("saving %p for %s", data, key);
+	g_hash_table_insert (store->priv->hash_strv, g_strdup (key), (gpointer) g_strdupv (data));
+	return TRUE;
+}
+
+/**
+ * pk_store_set_array:
+ **/
+gboolean
+pk_store_set_array (PkStore *store, const gchar *key, GPtrArray *data)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+
+	/* valid, but do nothing */
+	if (data == NULL)
+		return FALSE;
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_array, (gpointer) key);
+	if (value != NULL) {
+		egg_warning ("already set data for %s", key);
+		return FALSE;
+	}
+	egg_debug ("saving %p for %s", data, key);
+	g_hash_table_insert (store->priv->hash_array, g_strdup (key), (gpointer) data);
+	return TRUE;
+}
+
+/**
+ * pk_store_set_uint:
+ **/
+gboolean
+pk_store_set_uint (PkStore *store, const gchar *key, guint data)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_pointer, (gpointer) key);
+	if (value != NULL) {
+		egg_warning ("already set data for %s", key);
+		return FALSE;
+	}
+	egg_debug ("saving %i for %s", data, key);
+	g_hash_table_insert (store->priv->hash_pointer, g_strdup (key), GINT_TO_POINTER (data+1));
+	return TRUE;
+}
+
+/**
+ * pk_store_set_bool:
+ **/
+gboolean
+pk_store_set_bool (PkStore *store, const gchar *key, gboolean data)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_pointer, (gpointer) key);
+	if (value != NULL) {
+		egg_warning ("already set data for %s", key);
+		return FALSE;
+	}
+	egg_debug ("saving %i for %s", data, key);
+	g_hash_table_insert (store->priv->hash_pointer, g_strdup (key), GINT_TO_POINTER (data+1));
+	return TRUE;
+}
+
+/**
+ * pk_store_set_pointer:
+ **/
+gboolean
+pk_store_set_pointer (PkStore *store, const gchar *key, gpointer data)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+	g_return_val_if_fail (data != NULL, FALSE);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_pointer, (gpointer) key);
+	if (value != NULL) {
+		egg_warning ("already set data for %s", key);
+		return FALSE;
+	}
+	egg_debug ("saving %p for %s", data, key);
+	g_hash_table_insert (store->priv->hash_pointer, g_strdup (key), data+1);
+	return TRUE;
+}
+
+/**
+ * pk_store_get_string:
+ **/
+const gchar *
+pk_store_get_string (PkStore *store, const gchar *key)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), NULL);
+	g_return_val_if_fail (key != NULL, NULL);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_string, (gpointer) key);
+	if (value == NULL) {
+		egg_warning ("not set data for %s", key);
+		return NULL;
+	}
+	return (const gchar *) value;
+}
+
+/**
+ * pk_store_get_strv:
+ **/
+gchar **
+pk_store_get_strv (PkStore *store, const gchar *key)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), NULL);
+	g_return_val_if_fail (key != NULL, NULL);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_strv, (gpointer) key);
+	if (value == NULL) {
+		egg_warning ("not set data for %s", key);
+		return NULL;
+	}
+	return (gchar **) value;
+}
+
+/**
+ * pk_store_get_array:
+ **/
+GPtrArray *
+pk_store_get_array (PkStore *store, const gchar *key)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), NULL);
+	g_return_val_if_fail (key != NULL, NULL);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_array, (gpointer) key);
+	if (value == NULL) {
+		egg_warning ("not set data for %s", key);
+		return NULL;
+	}
+	return (GPtrArray *) value;
+}
+
+/**
+ * pk_store_get_uint:
+ **/
+guint
+pk_store_get_uint (PkStore *store, const gchar *key)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), 0);
+	g_return_val_if_fail (key != NULL, 0);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_pointer, (gpointer) key);
+	if (value == NULL) {
+		egg_warning ("not set data for %s", key);
+		return FALSE;
+	}
+	/* we do the +1/-1 as NULL also means missing in the hash table */
+	return GPOINTER_TO_INT (value)-1;
+}
+
+/**
+ * pk_store_get_bool:
+ **/
+gboolean
+pk_store_get_bool (PkStore *store, const gchar *key)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+	g_return_val_if_fail (key != NULL, FALSE);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_pointer, (gpointer) key);
+	if (value == NULL) {
+		egg_warning ("not set data for %s", key);
+		return FALSE;
+	}
+	return GPOINTER_TO_INT (value)-1;
+}
+
+/**
+ * pk_store_get_pointer:
+ **/
+gpointer
+pk_store_get_pointer (PkStore *store, const gchar *key)
+{
+	gpointer value;
+	g_return_val_if_fail (PK_IS_STORE (store), NULL);
+	g_return_val_if_fail (key != NULL, NULL);
+
+	/* does already exist? */
+	value = g_hash_table_lookup (store->priv->hash_pointer, (gpointer) key);
+	if (value == NULL) {
+		egg_warning ("not set data for %s", key);
+		return NULL;
+	}
+	return value-1;
+}
+
+/**
+ * pk_store_reset:
+ **/
+gboolean
+pk_store_reset (PkStore *store)
+{
+	g_return_val_if_fail (PK_IS_STORE (store), FALSE);
+
+	g_hash_table_remove_all (store->priv->hash_pointer);
+	g_hash_table_remove_all (store->priv->hash_string);
+	g_hash_table_remove_all (store->priv->hash_strv);
+	g_hash_table_remove_all (store->priv->hash_array);
+	return TRUE;
+}
+
+/**
+ * pk_free_ptr_array:
+ **/
+static void
+pk_free_ptr_array (gpointer data)
+{
+	g_ptr_array_free ((GPtrArray *) data, TRUE);
+}
+
+/**
+ * pk_store_finalize:
+ **/
+static void
+pk_store_finalize (GObject *object)
+{
+	PkStore *store;
+	g_return_if_fail (PK_IS_STORE (object));
+	store = PK_STORE (object);
+
+	g_hash_table_unref (store->priv->hash_string);
+	g_hash_table_unref (store->priv->hash_strv);
+	g_hash_table_unref (store->priv->hash_pointer);
+	g_hash_table_unref (store->priv->hash_array);
+
+	G_OBJECT_CLASS (pk_store_parent_class)->finalize (object);
+}
+
+/**
+ * pk_store_class_init:
+ **/
+static void
+pk_store_class_init (PkStoreClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	object_class->finalize = pk_store_finalize;
+	g_type_class_add_private (klass, sizeof (PkStorePrivate));
+}
+
+/**
+ * pk_store_init:
+ **/
+static void
+pk_store_init (PkStore *store)
+{
+	store->priv = PK_STORE_GET_PRIVATE (store);
+	store->priv->hash_string = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+	store->priv->hash_strv = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_strfreev);
+	store->priv->hash_pointer = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	store->priv->hash_array = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, pk_free_ptr_array);
+}
+
+/**
+ * pk_store_new:
+ * Return value: A new store class store.
+ **/
+PkStore *
+pk_store_new (void)
+{
+	PkStore *store;
+	store = g_object_new (PK_TYPE_STORE, NULL);
+	return PK_STORE (store);
+}
+
+/***************************************************************************
+ ***                          MAKE CHECK TESTS                           ***
+ ***************************************************************************/
+#ifdef EGG_TEST
+#include "egg-test.h"
+
+void
+pk_store_test (EggTest *test)
+{
+	PkStore *store;
+	gboolean ret;
+	const gchar *data_string;
+	guint data_uint;
+	gboolean data_bool;
+
+	if (!egg_test_start (test, "PkStore"))
+		return;
+
+	/************************************************************/
+	egg_test_title (test, "get an store");
+	store = pk_store_new ();
+	if (store != NULL)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, NULL);
+
+	/************************************************************/
+	egg_test_title (test, "set a blank string");
+	ret = pk_store_set_string (store, "dave2", "");
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "set a ~bool");
+	ret = pk_store_set_bool (store, "roger2", FALSE);
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "set a zero uint");
+	ret = pk_store_set_uint (store, "linda2", 0);
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "get a blank string");
+	data_string = pk_store_get_string (store, "dave2");
+	if (egg_strequal (data_string, ""))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "data was %s", data_string);
+
+	/************************************************************/
+	egg_test_title (test, "get a ~bool");
+	data_bool = pk_store_get_bool (store, "roger2");
+	if (!data_bool)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "data was %i", data_bool);
+
+	/************************************************************/
+	egg_test_title (test, "get a zero uint");
+	data_uint = pk_store_get_uint (store, "linda2");
+	if (data_uint == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "data was %i", data_uint);
+
+	/************************************************************/
+	egg_test_title (test, "set a string");
+	ret = pk_store_set_string (store, "dave", "ania");
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "set a bool");
+	ret = pk_store_set_bool (store, "roger", TRUE);
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "set a uint");
+	ret = pk_store_set_uint (store, "linda", 999);
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "get a string");
+	data_string = pk_store_get_string (store, "dave");
+	if (egg_strequal (data_string, "ania"))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "data was %s", data_string);
+
+	/************************************************************/
+	egg_test_title (test, "get a bool");
+	data_bool = pk_store_get_bool (store, "roger");
+	if (data_bool)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "data was %i", data_bool);
+
+	/************************************************************/
+	egg_test_title (test, "get a uint");
+	data_uint = pk_store_get_uint (store, "linda");
+	if (data_uint == 999)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "data was %i", data_uint);
+
+	g_object_unref (store);
+
+	egg_test_end (test);
+}
+#endif
+
diff --git a/src/pk-store.h b/src/pk-store.h
new file mode 100644
index 0000000..7fb2293
--- /dev/null
+++ b/src/pk-store.h
@@ -0,0 +1,88 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __PK_STORE_H
+#define __PK_STORE_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define PK_TYPE_STORE		(pk_store_get_type ())
+#define PK_STORE(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), PK_TYPE_STORE, PkStore))
+#define PK_STORE_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST((k), PK_TYPE_STORE, PkStoreClass))
+#define PK_IS_STORE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), PK_TYPE_STORE))
+#define PK_IS_STORE_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), PK_TYPE_STORE))
+#define PK_STORE_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), PK_TYPE_STORE, PkStoreClass))
+
+typedef struct PkStorePrivate PkStorePrivate;
+
+typedef struct
+{
+	GObject			 parent;
+	PkStorePrivate		*priv;
+} PkStore;
+
+typedef struct
+{
+	GObjectClass		 parent_class;
+} PkStoreClass;
+
+GType		 pk_store_get_type			(void) G_GNUC_CONST;
+PkStore		*pk_store_new				(void);
+
+gboolean	 pk_store_set_array			(PkStore	*store,
+							 const gchar	*key,
+							 GPtrArray	*data);
+gboolean	 pk_store_set_string			(PkStore	*store,
+							 const gchar	*key,
+							 const gchar	*data);
+gboolean	 pk_store_set_strv			(PkStore	*store,
+							 const gchar	*key,
+							 gchar		**data);
+gboolean	 pk_store_set_uint			(PkStore	*store,
+							 const gchar	*key,
+							 guint		 data);
+gboolean	 pk_store_set_bool			(PkStore	*store,
+							 const gchar	*key,
+							 gboolean	 data);
+gboolean	 pk_store_set_pointer			(PkStore	*store,
+							 const gchar	*key,
+							 gpointer	 data);
+
+const gchar	*pk_store_get_string			(PkStore	*store,
+							 const gchar	*key);
+GPtrArray	*pk_store_get_array			(PkStore	*store,
+							 const gchar	*key);
+gchar		**pk_store_get_strv			(PkStore	*store,
+							 const gchar	*key);
+guint		 pk_store_get_uint			(PkStore	*store,
+							 const gchar	*key);
+gboolean	 pk_store_get_bool			(PkStore	*store,
+							 const gchar	*key);
+gpointer	 pk_store_get_pointer			(PkStore	*store,
+							 const gchar	*key);
+gboolean	 pk_store_reset				(PkStore	*store);
+
+G_END_DECLS
+
+#endif /* __PK_STORE_H */
+
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 7d8da69..463b6b0 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -865,6 +865,7 @@ G_GNUC_WARN_UNUSED_RESULT static gboolean
 pk_transaction_set_running (PkTransaction *transaction)
 {
 	PkBackendDesc *desc;
+	PkStore *store;
 	PkTransactionPrivate *priv = PK_TRANSACTION_GET_PRIVATE (transaction);
 	g_return_val_if_fail (PK_IS_TRANSACTION (transaction), FALSE);
 	g_return_val_if_fail (transaction->priv->tid != NULL, FALSE);
@@ -941,24 +942,25 @@ pk_transaction_set_running (PkTransaction *transaction)
 	transaction->priv->has_been_run = TRUE;
 
 	/* set all possible arguments for backend */
-	pk_backend_set_bool (priv->backend, "force", priv->cached_force);
-	pk_backend_set_bool (priv->backend, "allow_deps", priv->cached_allow_deps);
-	pk_backend_set_bool (priv->backend, "autoremove", priv->cached_autoremove);
-	pk_backend_set_bool (priv->backend, "enabled", priv->cached_enabled);
-	pk_backend_set_bool (priv->backend, "trusted", priv->cached_trusted);
-	pk_backend_set_uint (priv->backend, "filters", priv->cached_filters);
-	pk_backend_set_uint (priv->backend, "provides", priv->cached_provides);
-	pk_backend_set_strv (priv->backend, "package_ids", priv->cached_package_ids);
-	pk_backend_set_strv (priv->backend, "full_paths", priv->cached_full_paths);
-	pk_backend_set_string (priv->backend, "package_id", priv->cached_package_id);
-	pk_backend_set_string (priv->backend, "transaction_id", priv->cached_transaction_id);
-	pk_backend_set_string (priv->backend, "full_path", priv->cached_full_path);
-	pk_backend_set_string (priv->backend, "search", priv->cached_search);
-	pk_backend_set_string (priv->backend, "repo_id", priv->cached_repo_id);
-	pk_backend_set_string (priv->backend, "key_id", priv->cached_key_id);
-	pk_backend_set_string (priv->backend, "parameter", priv->cached_parameter);
-	pk_backend_set_string (priv->backend, "value", priv->cached_value);
-	pk_backend_set_string (priv->backend, "directory", priv->cached_directory);
+	store = pk_backend_get_store (priv->backend);
+	pk_store_set_bool (store, "force", priv->cached_force);
+	pk_store_set_bool (store, "allow_deps", priv->cached_allow_deps);
+	pk_store_set_bool (store, "autoremove", priv->cached_autoremove);
+	pk_store_set_bool (store, "enabled", priv->cached_enabled);
+	pk_store_set_bool (store, "trusted", priv->cached_trusted);
+	pk_store_set_uint (store, "filters", priv->cached_filters);
+	pk_store_set_uint (store, "provides", priv->cached_provides);
+	pk_store_set_strv (store, "package_ids", priv->cached_package_ids);
+	pk_store_set_strv (store, "full_paths", priv->cached_full_paths);
+	pk_store_set_string (store, "package_id", priv->cached_package_id);
+	pk_store_set_string (store, "transaction_id", priv->cached_transaction_id);
+	pk_store_set_string (store, "full_path", priv->cached_full_path);
+	pk_store_set_string (store, "search", priv->cached_search);
+	pk_store_set_string (store, "repo_id", priv->cached_repo_id);
+	pk_store_set_string (store, "key_id", priv->cached_key_id);
+	pk_store_set_string (store, "parameter", priv->cached_parameter);
+	pk_store_set_string (store, "value", priv->cached_value);
+	pk_store_set_string (store, "directory", priv->cached_directory);
 
 	/* lets reduce pointer dereferences... */
 	desc = priv->backend->desc;
commit 546a564e565f40f57f5a28071b75bb33e3d27fc4
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 15:06:03 2008 +0100

    trivial: use egg_test_assert to reduce the size of the self tests

diff --git a/libpackagekit/egg-obj-list.c b/libpackagekit/egg-obj-list.c
index 58c8548..1defaf0 100644
--- a/libpackagekit/egg-obj-list.c
+++ b/libpackagekit/egg-obj-list.c
@@ -533,10 +533,7 @@ egg_obj_list_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an instance");
 	list = egg_obj_list_new ();
-	if (list != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, list != NULL);
 
 	g_object_unref (list);
 
diff --git a/libpackagekit/egg-string.c b/libpackagekit/egg-string.c
index 19c5114..33df11e 100644
--- a/libpackagekit/egg-string.c
+++ b/libpackagekit/egg-string.c
@@ -376,18 +376,12 @@ egg_string_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "id strcmp pass");
 	ret = egg_strequal ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;fedora");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "id strcmp fail");
 	ret = egg_strequal ("moo;0.0.1;i386;fedora", "moo;0.0.2;i386;fedora");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************
 	 ****************          strlen          ******************
@@ -458,74 +452,47 @@ egg_string_test (EggTest *test)
 	 ************************************************************/
 	egg_test_title (test, "check number valid");
 	ret = egg_strnumber ("123");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number valid");
 	ret = egg_strnumber ("-123");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number zero");
 	ret = egg_strnumber ("0");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number oversize");
 	ret = egg_strnumber ("123456891234");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number NULL");
 	ret = egg_strnumber (NULL);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number blank");
 	ret = egg_strnumber ("");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number not negative");
 	ret = egg_strnumber ("503-");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number positive");
 	ret = egg_strnumber ("+503");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check number random chars");
 	ret = egg_strnumber ("dave");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************
 	 **************        Convert numbers       ****************
diff --git a/libpackagekit/pk-catalog.c b/libpackagekit/pk-catalog.c
index 2336d14..b793a67 100644
--- a/libpackagekit/pk-catalog.c
+++ b/libpackagekit/pk-catalog.c
@@ -391,10 +391,7 @@ pk_catalog_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get catalog");
 	catalog = pk_catalog_new ();
-	if (catalog != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, catalog != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "process the files getting non-null");
@@ -411,9 +408,9 @@ pk_catalog_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "have we got packages?");
 	size = pk_package_list_get_size (list);
-	if (size > 0) {
+	if (size > 0)
 		egg_test_success (test, "%i packages", size);
-	} else
+	else
 		egg_test_failed (test, NULL);
 	g_object_unref (list);
 	g_object_unref (catalog);
diff --git a/libpackagekit/pk-client.c b/libpackagekit/pk-client.c
index 284be12..4ade736 100644
--- a/libpackagekit/pk-client.c
+++ b/libpackagekit/pk-client.c
@@ -4083,18 +4083,12 @@ pk_client_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get client");
 	client = pk_client_new ();
-	if (client != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, client != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "reset client, unused");
 	ret = pk_client_reset (client, NULL);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/* check use after finalise */
 	g_signal_connect (client, "finished",
@@ -4116,10 +4110,7 @@ pk_client_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get new client so we can test resets in ::Finished()");
 	client = pk_client_new ();
-	if (client != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, client != NULL);
 
 	/* check reset during finalise when sync */
 	pk_client_set_synchronous (client, TRUE, NULL);
@@ -4129,10 +4120,7 @@ pk_client_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "search name sync, with a reset in finalise");
 	ret = pk_client_search_name (client, PK_FILTER_ENUM_NONE, "power", NULL);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check reset failed");
@@ -4146,10 +4134,7 @@ pk_client_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get new client");
 	client = pk_client_new ();
-	if (client != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, client != NULL);
 	pk_client_set_synchronous (client, TRUE, NULL);
 	pk_client_set_use_buffer (client, TRUE, NULL);
 
diff --git a/libpackagekit/pk-common.c b/libpackagekit/pk-common.c
index 7b5bd79..98de613 100644
--- a/libpackagekit/pk-common.c
+++ b/libpackagekit/pk-common.c
@@ -519,9 +519,9 @@ pk_common_test (EggTest *test)
 	 ************************************************************/
 	egg_test_title (test, "get distro id");
 	text_safe = pk_get_distro_id ();
-	if (text_safe != NULL) {
+	if (text_safe != NULL)
 		egg_test_success (test, "distro_id=%s", text_safe);
-	} else
+	else
 		egg_test_failed (test, NULL);
 	g_free (text_safe);
 
@@ -533,9 +533,8 @@ pk_common_test (EggTest *test)
 	if (egg_strequal (array[0], "richard") &&
 	    array[1] == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "incorrect array '%s'", array[0]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -546,9 +545,8 @@ pk_common_test (EggTest *test)
 	    egg_strequal (array[2], "hughes") &&
 	    array[3] == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "incorrect array '%s','%s','%s'", array[0], array[1], array[2]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -559,9 +557,8 @@ pk_common_test (EggTest *test)
 	    egg_strequal (array[2], "hughes") &&
 	    array[3] == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "incorrect array '%s','%s','%s'", array[0], array[1], array[2]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -572,9 +569,8 @@ pk_common_test (EggTest *test)
 	    egg_strequal (array[2], "hughes") &&
 	    array[3] == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "incorrect array '%s','%s','%s'", array[0], array[1], array[2]);
-	}
 	g_strfreev (array);
 
 	/************************************************************
@@ -582,42 +578,27 @@ pk_common_test (EggTest *test)
 	 ************************************************************/
 	egg_test_title (test, "validate correct char 1");
 	ret = pk_strvalidate_char ('a');
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "validate correct char 2");
 	ret = pk_strvalidate_char ('~');
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "validate incorrect char");
 	ret = pk_strvalidate_char ('$');
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "validate incorrect text");
 	ret = pk_strvalidate ("richard$hughes");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "validate correct text");
 	ret = pk_strvalidate ("richardhughes");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************
 	 ****************       REPLACE CHARS      ******************
@@ -626,9 +607,8 @@ pk_common_test (EggTest *test)
 	text_safe = pk_strsafe ("Richard Hughes");
 	if (egg_strequal (text_safe, "Richard Hughes"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	}
 	g_free (text_safe);
 
 	/************************************************************/
@@ -636,9 +616,8 @@ pk_common_test (EggTest *test)
 	text_safe = pk_strsafe ("Gölas");
 	if (egg_strequal (text_safe, "Gölas"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	}
 	g_free (text_safe);
 
 	/************************************************************/
@@ -646,9 +625,8 @@ pk_common_test (EggTest *test)
 	text_safe = pk_strsafe ("Richard\tHughes");
 	if (egg_strequal (text_safe, "Richard Hughes"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	}
 	g_free (text_safe);
 
 	/************************************************************/
@@ -656,9 +634,8 @@ pk_common_test (EggTest *test)
 	text_safe = pk_strsafe ("Richard\"Hughes\"");
 	if (egg_strequal (text_safe, "Richard Hughes "))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	}
 	g_free (text_safe);
 
 	/************************************************************/
@@ -666,9 +643,8 @@ pk_common_test (EggTest *test)
 	text_safe = pk_strsafe (" Richard\"Hughes\"");
 	if (egg_strequal (text_safe, " Richard Hughes "))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	}
 	g_free (text_safe);
 
 	/************************************************************
@@ -678,9 +654,8 @@ pk_common_test (EggTest *test)
 	present = pk_iso8601_present ();
 	if (present != NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "present is NULL");
-	}
 
 	g_usleep (2000000);
 
@@ -689,9 +664,8 @@ pk_common_test (EggTest *test)
 	seconds = pk_iso8601_difference (present);
 	if (seconds == 2)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "seconds is wrong, %i", seconds);
-	}
 
 	/************************************************************/
 	g_free (present);
diff --git a/libpackagekit/pk-control.c b/libpackagekit/pk-control.c
index 366a0e3..5adc0eb 100644
--- a/libpackagekit/pk-control.c
+++ b/libpackagekit/pk-control.c
@@ -935,10 +935,7 @@ pk_control_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get control");
 	control = pk_control_new ();
-	if (control != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, control != NULL);
 	g_object_unref (control);
 
 	egg_test_end (test);
diff --git a/libpackagekit/pk-details-obj.c b/libpackagekit/pk-details-obj.c
index 557adac..4757f76 100644
--- a/libpackagekit/pk-details-obj.c
+++ b/libpackagekit/pk-details-obj.c
@@ -135,18 +135,12 @@ pk_details_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an details object");
 	obj = pk_details_obj_new ();
-	if (obj != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "test details");
 	ret = pk_details_obj_free (obj);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_end (test);
 }
diff --git a/libpackagekit/pk-distro-upgrade-obj.c b/libpackagekit/pk-distro-upgrade-obj.c
index 96c5928..01af06a 100644
--- a/libpackagekit/pk-distro-upgrade-obj.c
+++ b/libpackagekit/pk-distro-upgrade-obj.c
@@ -127,18 +127,12 @@ egg_test_distro_upgrade (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an upgrade object");
 	obj = pk_distro_upgrade_obj_new ();
-	if (obj != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "test upgrade");
 	ret = pk_distro_upgrade_obj_free (obj);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_end (test);
 }
diff --git a/libpackagekit/pk-extra.c b/libpackagekit/pk-extra.c
index a2ce19c..4f57d83 100644
--- a/libpackagekit/pk-extra.c
+++ b/libpackagekit/pk-extra.c
@@ -730,10 +730,7 @@ pk_extra_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get extra");
 	extra = pk_extra_new ();
-	if (extra != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, extra != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "set database");
@@ -754,18 +751,12 @@ pk_extra_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "set database (same as original)");
 	ret = pk_extra_set_database (extra, "extra.db");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "set database (don't care)");
 	ret = pk_extra_set_database (extra, NULL);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "set locale explicit en");
@@ -777,10 +768,7 @@ pk_extra_test (EggTest *test)
 
 	/************************************************************/
 	egg_test_title (test, "check locale base");
-	if (extra->priv->locale_base == NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, extra->priv->locale_base == NULL);
 
 	/************************************************************/
 	egg_test_title (test, "get locale");
@@ -810,10 +798,7 @@ pk_extra_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "set locale implicit en_GB");
 	ret = pk_extra_set_locale (extra, "en_GB");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check locale base");
diff --git a/libpackagekit/pk-package-id.c b/libpackagekit/pk-package-id.c
index 7e6e192..2a774e2 100644
--- a/libpackagekit/pk-package-id.c
+++ b/libpackagekit/pk-package-id.c
@@ -398,34 +398,22 @@ pk_package_id_test (EggTest *test)
 
 	egg_test_title (test, "pid equal pass (same)");
 	ret = pk_package_id_equal_strings ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;fedora");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "pid equal pass (different)");
 	ret = pk_package_id_equal_strings ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;data");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "get an id object");
 	id = pk_package_id_new ();
-	if (id != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, id != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "test id freeing early");
 	ret = pk_package_id_free (id);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "parse incorrect package_id from string (empty)");
@@ -433,9 +421,8 @@ pk_package_id_test (EggTest *test)
 	id = pk_package_id_new_from_string (temp);
 	if (id == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "passed an invalid string '%s'", temp);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "parse incorrect package_id from string (not enough)");
@@ -443,10 +430,8 @@ pk_package_id_test (EggTest *test)
 	id = pk_package_id_new_from_string (temp);
 	if (id == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "passed an invalid string '%s'", temp);
-	}
-
 
 	/************************************************************/
 	egg_test_title (test, "parse package_id from string");
@@ -505,52 +490,31 @@ pk_package_id_test (EggTest *test)
 
 	egg_test_title (test, "id equal pass (same)");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;fedora", 4, 3);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_title (test, "id equal pass (parts==match)");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;fedora", 4, 4);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_title (test, "id equal pass (different)");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;data", 4, 3);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_title (test, "id equal fail1");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "moo;0.0.2;x64;fedora", 4, 3);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	egg_test_title (test, "id equal fail2");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "gnome;0.0.2;i386;fedora", 4, 3);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	egg_test_title (test, "id equal fail3");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "moo;0.0.3;i386;fedora", 4, 3);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	egg_test_title (test, "id equal fail (match too high)");
 	ret = pk_strcmp_sections ("moo;0.0.1;i386;fedora", "moo;0.0.3;i386;fedora", 4, 5);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************
 	 ****************          splitting         ****************
@@ -560,9 +524,8 @@ pk_package_id_test (EggTest *test)
 	if (array != NULL &&
 	    egg_strequal (array[0], "foo"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %s", array[0]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -572,9 +535,8 @@ pk_package_id_test (EggTest *test)
 	    egg_strequal (array[0], "foo") &&
 	    egg_strequal (array[1], "moo"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %s, %s", array[0], array[1]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -585,9 +547,8 @@ pk_package_id_test (EggTest *test)
 	    egg_strequal (array[1], "moo") &&
 	    egg_strequal (array[2], "bar"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %s, %s, %s, %s", array[0], array[1], array[2], array[3]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -599,9 +560,8 @@ pk_package_id_test (EggTest *test)
 	    egg_strequal (array[2], "all") &&
 	    egg_strequal (array[3], ""))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %s, %s, %s, %s", array[0], array[1], array[2], array[3]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
@@ -613,34 +573,24 @@ pk_package_id_test (EggTest *test)
 	    egg_strequal (array[2], "") &&
 	    egg_strequal (array[3], ""))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %s, %s, %s, %s", array[0], array[1], array[2], array[3]);
-	}
 	g_strfreev (array);
 
 	/************************************************************/
 	egg_test_title (test, "test fail under");
 	array = pk_strsplit ("foo;moo", 1);
-	if (array == NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, array == NULL);
 
 	/************************************************************/
 	egg_test_title (test, "test fail over");
 	array = pk_strsplit ("foo;moo", 3);
-	if (array == NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, array == NULL);
 
 	/************************************************************/
 	egg_test_title (test, "test fail missing first");
 	array = pk_strsplit (";moo", 2);
-	if (array == NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, array == NULL);
 
 	egg_test_end (test);
 }
diff --git a/libpackagekit/pk-package-ids.c b/libpackagekit/pk-package-ids.c
index 08ccbfc..ee34472 100644
--- a/libpackagekit/pk-package-ids.c
+++ b/libpackagekit/pk-package-ids.c
@@ -241,50 +241,32 @@ pk_package_ids_test (EggTest *test)
 
 	egg_test_title (test, "parse va_list");
 	package_ids = pk_package_ids_test_va_list ("foo;0.0.1;i386;fedora", "bar;0.1.1;noarch;livna", NULL);
-	if (package_ids != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, package_ids != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "correct size");
 	size = pk_package_ids_size (package_ids);
-	if (size == 2)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, size == 2);
 
 	/************************************************************/
 	egg_test_title (test, "verify");
 	ret = pk_package_ids_check (package_ids);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "first correct");
 	ret = pk_package_id_equal_strings (package_ids[0], "foo;0.0.1;i386;fedora");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "second correct");
 	ret = pk_package_id_equal_strings (package_ids[1], "bar;0.1.1;noarch;livna");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "print");
 	ret = pk_package_ids_print (package_ids);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "to text");
diff --git a/libpackagekit/pk-package-list.c b/libpackagekit/pk-package-list.c
index 5cb8fa6..903967a 100644
--- a/libpackagekit/pk-package-list.c
+++ b/libpackagekit/pk-package-list.c
@@ -595,10 +595,7 @@ pk_package_list_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "create");
 	plist = pk_package_list_new ();
-	if (plist != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, plist != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "make sure size is zero");
@@ -613,10 +610,7 @@ pk_package_list_test (EggTest *test)
 	id = pk_package_id_new_from_string ("gnome;1.23;i386;data");
 	ret = pk_package_list_add (plist, PK_INFO_ENUM_INSTALLED, id, "GNOME!");
 	pk_package_id_free (id);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "make sure size is one");
@@ -642,35 +636,25 @@ pk_package_list_test (EggTest *test)
 	id = pk_package_id_new_from_string ("gnome;1.23;i386;data");
 	ret = pk_package_list_contains (plist, "liferea;1.23;i386;data");
 	pk_package_id_free (id);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check exists");
 	ret = pk_package_list_contains (plist, "gnome;1.23;i386;data");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check exists different data");
 	ret = pk_package_list_contains (plist, "gnome;1.23;i386;fedora");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "add entry");
 	text = pk_package_list_to_string (plist);
 	if (egg_strequal (text, "installed\tgnome;1.23;i386;data\tGNOME!"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "get string incorrect '%s'", text);
-	}
 	g_free (text);
 
 	/************************************************************/
@@ -680,9 +664,8 @@ pk_package_list_test (EggTest *test)
 	pk_package_id_free (id);
 	if (ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "could not add NULL summary");
-	}
 	g_object_unref (plist);
 
 	plist = pk_package_list_new ();
@@ -735,9 +718,8 @@ pk_package_list_test (EggTest *test)
 	    egg_strequal (r1->summary, "fed") &&
 	    egg_strequal (r2->summary, "zed"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "could not sort: %s,%s,%s", r0->summary, r1->summary, r2->summary);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "sort by severity");
@@ -749,9 +731,8 @@ pk_package_list_test (EggTest *test)
 	    r1->info == PK_INFO_ENUM_BUGFIX &&
 	    r2->info == PK_INFO_ENUM_ENHANCEMENT)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "could not sort: %s,%s,%s", r0->summary, r1->summary, r2->summary);
-	}
 
 	g_object_unref (plist);
 
diff --git a/libpackagekit/pk-package-obj.c b/libpackagekit/pk-package-obj.c
index 80f476a..3f39b4c 100644
--- a/libpackagekit/pk-package-obj.c
+++ b/libpackagekit/pk-package-obj.c
@@ -71,9 +71,8 @@ pk_package_obj_new (PkInfoEnum info, const PkPackageId *id, const gchar *summary
 gboolean
 pk_package_obj_free (PkPackageObj *obj)
 {
-	if (obj == NULL) {
+	if (obj == NULL)
 		return FALSE;
-	}
 	pk_package_id_free (obj->id);
 	g_free (obj->summary);
 	g_free (obj);
@@ -88,9 +87,8 @@ pk_package_obj_free (PkPackageObj *obj)
 gboolean
 pk_package_obj_equal (const PkPackageObj *obj1, const PkPackageObj *obj2)
 {
-	if (obj1 == NULL || obj2 == NULL) {
+	if (obj1 == NULL || obj2 == NULL)
 		return FALSE;
-	}
 	return (obj1->info == obj2->info && pk_package_id_equal (obj1->id, obj2->id));
 }
 
@@ -188,37 +186,25 @@ pk_package_obj_test (EggTest *test)
 	egg_test_title (test, "add entry");
 	id = pk_package_id_new_from_string ("gnome;1.23;i386;data");
 	obj1 = pk_package_obj_new (PK_INFO_ENUM_INSTALLED, id, "GNOME!");
-	if (obj1 != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj1 != NULL);
 	pk_package_id_free (id);
 
 	/************************************************************/
 	egg_test_title (test, "add entry");
 	id = pk_package_id_new_from_string ("gnome;1.23;i386;data");
 	obj2 = pk_package_obj_new (PK_INFO_ENUM_INSTALLED, id, "GNOME foo!");
-	if (obj2 != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj2 != NULL);
 	pk_package_id_free (id);
 
 	/************************************************************/
 	egg_test_title (test, "copy entry");
 	obj3 = pk_package_obj_copy (obj2);
-	if (obj3 != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj3 != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "check equal");
 	ret = pk_package_obj_equal (obj1, obj3);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	pk_package_obj_free (obj2);
 	pk_package_obj_free (obj3);
@@ -227,18 +213,12 @@ pk_package_obj_test (EggTest *test)
 	egg_test_title (test, "add entry");
 	id = pk_package_id_new_from_string ("gnome-do;1.23;i386;data");
 	obj2 = pk_package_obj_new (PK_INFO_ENUM_INSTALLED, id, "GNOME doo!");
-	if (obj2 != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj2 != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "check !equal");
 	ret = pk_package_obj_equal (obj1, obj2);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "check to string");
@@ -255,12 +235,11 @@ pk_package_obj_test (EggTest *test)
 	    pk_package_id_equal (obj3->id, obj1->id) &&
 	    egg_strequal (obj3->summary, "GNOME!"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got incorrect data %s,%s,%s",
 			      pk_info_enum_to_text (obj3->info),
 			      pk_package_id_to_string (obj3->id),
 			      obj3->summary);
-	}
 
 	pk_package_id_free (id);
 	pk_package_obj_free (obj1);
diff --git a/libpackagekit/pk-task-list.c b/libpackagekit/pk-task-list.c
index 3ccd063..79f7a2e 100644
--- a/libpackagekit/pk-task-list.c
+++ b/libpackagekit/pk-task-list.c
@@ -539,10 +539,7 @@ pk_task_list_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get client");
 	tlist = pk_task_list_new ();
-	if (tlist != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, tlist != NULL);
 	g_signal_connect (tlist, "finished",
 			  G_CALLBACK (pk_task_list_test_finished_cb), test);
 
@@ -561,9 +558,8 @@ pk_task_list_test (EggTest *test)
 	egg_test_title (test, "we finished?");
 	if (finished)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "not finished");
-	}
 
 	g_object_unref (tlist);
 	g_object_unref (client);
diff --git a/libpackagekit/pk-update-detail-obj.c b/libpackagekit/pk-update-detail-obj.c
index 34e08e0..ffe86be 100644
--- a/libpackagekit/pk-update-detail-obj.c
+++ b/libpackagekit/pk-update-detail-obj.c
@@ -164,18 +164,12 @@ pk_update_detail_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an detail object");
 	obj = pk_update_detail_obj_new ();
-	if (obj != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, obj != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "test detail");
 	ret = pk_update_detail_obj_free (obj);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_end (test);
 }
diff --git a/src/pk-backend-dbus.c b/src/pk-backend-dbus.c
index e186bec..c68a413 100644
--- a/src/pk-backend-dbus.c
+++ b/src/pk-backend-dbus.c
@@ -1631,10 +1631,7 @@ pk_backend_dbus_test_cancel_cb (gpointer data)
 	egg_test_title (test, "cancel");
 	ret = pk_backend_dbus_cancel (backend_dbus);
 	elapsed = egg_test_elapsed (test);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check we didnt take too long");
@@ -1691,10 +1688,7 @@ pk_backend_test_dbus (EggTest *test)
 	egg_test_title (test, "set the name and activate");
 	ret = pk_backend_dbus_set_name (backend_dbus, "org.freedesktop.PackageKitTestBackend");
 	elapsed = egg_test_elapsed (test);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check we actually did something and didn't fork");
@@ -1714,10 +1708,7 @@ pk_backend_test_dbus (EggTest *test)
 	egg_test_title (test, "search by name");
 	ret = pk_backend_dbus_search_name (backend_dbus, PK_FILTER_ENUM_NONE, "power");
 	elapsed = egg_test_elapsed (test);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "check we forked and didn't block");
@@ -1744,10 +1735,7 @@ pk_backend_test_dbus (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "search by name again");
 	ret = pk_backend_dbus_search_name (backend_dbus, PK_FILTER_ENUM_NONE, "power");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/* wait for finished */
 	egg_test_loop_wait (test, 5000);
@@ -1767,10 +1755,7 @@ pk_backend_test_dbus (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "search by name");
 	ret = pk_backend_dbus_search_name (backend_dbus, PK_FILTER_ENUM_NONE, "power");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/* schedule a cancel */
 	egg_test_set_user_data (test, backend_dbus);
diff --git a/src/pk-backend-spawn.c b/src/pk-backend-spawn.c
index 93dcd06..dd1fc25 100644
--- a/src/pk-backend-spawn.c
+++ b/src/pk-backend-spawn.c
@@ -762,10 +762,7 @@ pk_backend_test_spawn (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an backend_spawn");
 	backend_spawn = pk_backend_spawn_new ();
-	if (backend_spawn != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, backend_spawn != NULL);
 
 	/* private copy for unref testing */
 	backend = backend_spawn->priv->backend;
@@ -777,27 +774,24 @@ pk_backend_test_spawn (EggTest *test)
 	text = pk_backend_spawn_get_name (backend_spawn);
 	if (text == NULL)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "invalid name %s", text);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "set backend name");
 	ret = pk_backend_spawn_set_name (backend_spawn, "test_spawn");
 	if (ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "invalid set name");
-	}
 
 	/************************************************************/
 	egg_test_title (test, "get backend name");
 	text = pk_backend_spawn_get_name (backend_spawn);
 	if (egg_strequal(text, "test_spawn"))
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "invalid name %s", text);
-	}
 
 	/* needed to avoid an error */
 	ret = pk_backend_set_name (backend_spawn->priv->backend, "test_spawn");
@@ -808,119 +802,73 @@ pk_backend_test_spawn (EggTest *test)
 	 ************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Percentage1");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "percentage\t0");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Percentage2");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "percentage\tbrian");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Percentage3");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "percentage\t12345");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Percentage4");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "percentage\t");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Percentage5");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "percentage");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, !ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Subpercentage");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "subpercentage\t17");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout NoPercentageUpdates");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "no-percentage-updates");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout failure");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "error\tnot-present-woohoo\tdescription text");
 	if (!ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "did not detect incorrect enum");
-	}
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout Status");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "status\tquery");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout RequireRestart");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "requirerestart\tsystem\tdetails about the restart");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout RequireRestart");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "requirerestart\tmooville\tdetails about the restart");
 	if (!ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "did not detect incorrect enum");
-	}
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout AllowUpdate1");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "allow-cancel\ttrue");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "test pk_backend_spawn_parse_stdout AllowUpdate2");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn, "allow-cancel\tbrian");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, !ret);
 
 	/************************************************************
 	 **********        Check parsing common out       ***********
@@ -928,20 +876,15 @@ pk_backend_test_spawn (EggTest *test)
 	egg_test_title (test, "test pk_backend_spawn_parse_common_out Package");
 	ret = pk_backend_spawn_parse_stdout (backend_spawn,
 		"package\tinstalled\tgnome-power-manager;0.0.1;i386;data\tMore useless software");
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "did not validate correctly");
-	}
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "manually unlock as we have no engine");
 	ret = pk_backend_unlock (backend_spawn->priv->backend);
 	if (ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "did not unlock");
-	}
 
 	/* reset */
 	g_object_unref (backend_spawn);
@@ -951,9 +894,8 @@ pk_backend_test_spawn (EggTest *test)
 	refcount = G_OBJECT(backend)->ref_count;
 	if (refcount == 1)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "refcount invalid %i", refcount);
-	}
 
 	/* new */
 	backend_spawn = pk_backend_spawn_new ();
@@ -963,9 +905,8 @@ pk_backend_test_spawn (EggTest *test)
 	ret = pk_backend_spawn_set_name (backend_spawn, "test_spawn");
 	if (ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "invalid set name");
-	}
 
 	/* so we can spin until we finish */
 	g_signal_connect (backend_spawn->priv->backend, "finished",
@@ -984,9 +925,8 @@ pk_backend_test_spawn (EggTest *test)
 	ret = pk_backend_spawn_helper (backend_spawn, "search-name.sh", "none", "bar", NULL);
 	if (ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "cannot spawn search-name.sh");
-	}
 
 	/* wait for finished */
 	g_main_loop_run (loop);
@@ -995,18 +935,16 @@ pk_backend_test_spawn (EggTest *test)
 	egg_test_title (test, "test number of packages");
 	if (number_packages == 2)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "wrong number of packages %i", number_packages);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "manually unlock as we have no engine");
 	ret = pk_backend_unlock (backend_spawn->priv->backend);
 	if (ret)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "did not unlock");
-	}
 
 	/* done */
 	g_object_unref (backend_spawn);
@@ -1016,9 +954,8 @@ pk_backend_test_spawn (EggTest *test)
 	refcount = G_OBJECT(backend)->ref_count;
 	if (refcount == 1)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "refcount invalid %i", refcount);
-	}
 
 	/* we ref'd it manually for checking, so we need to unref it */
 	g_object_unref (backend);
diff --git a/src/pk-backend.c b/src/pk-backend.c
index f8d16e3..e27a1de 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -2081,26 +2081,17 @@ pk_backend_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "set a blank string");
 	ret = pk_backend_set_string (backend, "dave2", "");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "set a ~bool");
 	ret = pk_backend_set_bool (backend, "roger2", FALSE);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "set a zero uint");
 	ret = pk_backend_set_uint (backend, "linda2", 0);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "get a blank string");
@@ -2129,26 +2120,17 @@ pk_backend_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "set a string");
 	ret = pk_backend_set_string (backend, "dave", "ania");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "set a bool");
 	ret = pk_backend_set_bool (backend, "roger", TRUE);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "set a uint");
 	ret = pk_backend_set_uint (backend, "linda", 999);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "get a string");
@@ -2206,10 +2188,7 @@ pk_backend_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "delete the config file");
 	ret = g_unlink (filename);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, !ret);
 
 	g_signal_connect (backend, "message", G_CALLBACK (pk_backend_test_message_cb), NULL);
 	g_signal_connect (backend, "finished", G_CALLBACK (pk_backend_test_finished_cb), test);
@@ -2266,10 +2245,7 @@ pk_backend_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "try to load a valid backend");
 	ret = pk_backend_set_name (backend, "dummy");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "load an valid backend again");
diff --git a/src/pk-conf.c b/src/pk-conf.c
index 226934c..91c5f53 100644
--- a/src/pk-conf.c
+++ b/src/pk-conf.c
@@ -227,10 +227,7 @@ pk_conf_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an instance");
 	conf = pk_conf_new ();
-	if (conf != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, conf != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "get the default backend");
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 3f51bef..eae4ed2 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -842,27 +842,18 @@ pk_engine_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get a backend instance");
 	backend = pk_backend_new ();
-	if (backend != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, backend != NULL);
 
 	/* set the type, as we have no pk-main doing this for us */
 	/************************************************************/
 	egg_test_title (test, "set the backend name");
 	ret = pk_backend_set_name (backend, "dummy");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "get an engine instance");
 	engine = pk_engine_new ();
-	if (engine != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, engine != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "get idle at startup");
diff --git a/src/pk-file-monitor-dummy.c b/src/pk-file-monitor-dummy.c
index 48db028..764e1a3 100644
--- a/src/pk-file-monitor-dummy.c
+++ b/src/pk-file-monitor-dummy.c
@@ -143,10 +143,7 @@ pk_file_monitor_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get a file_monitor");
 	file_monitor = pk_file_monitor_new ();
-	if (file_monitor != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, file_monitor != NULL);
 	g_object_unref (file_monitor);
 
 	egg_test_end (test);
diff --git a/src/pk-file-monitor-gio.c b/src/pk-file-monitor-gio.c
index c6ed927..e5a5027 100644
--- a/src/pk-file-monitor-gio.c
+++ b/src/pk-file-monitor-gio.c
@@ -195,10 +195,7 @@ pk_file_monitor_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get a file_monitor");
 	file_monitor = pk_file_monitor_new ();
-	if (file_monitor != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, file_monitor != NULL);
 	g_object_unref (file_monitor);
 
 	egg_test_end (test);
diff --git a/src/pk-notify.c b/src/pk-notify.c
index c808283..774baa7 100644
--- a/src/pk-notify.c
+++ b/src/pk-notify.c
@@ -223,10 +223,7 @@ egg_test_notify (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an instance");
 	notify = pk_notify_new ();
-	if (notify != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, notify != NULL);
 
 	g_object_unref (notify);
 
diff --git a/src/pk-security-polkit.c b/src/pk-security-polkit.c
index 566a238..2b748ac 100644
--- a/src/pk-security-polkit.c
+++ b/src/pk-security-polkit.c
@@ -350,24 +350,9 @@ pk_security_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an instance");
 	security = pk_security_new ();
-	if (security != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
-
-	/************************************************************/
-	egg_test_title (test, "check connection");
-	if (security->priv->connection != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
-
-	/************************************************************/
-	egg_test_title (test, "check PolKit context");
-	if (security->priv->pk_context != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, security != NULL);
+	egg_test_title_assert (test, "check connection", security->priv->connection != NULL);
+	egg_test_title_assert (test, "check PolKit context", security->priv->pk_context != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "map valid role to action");
diff --git a/src/pk-time.c b/src/pk-time.c
index b7c0533..481db96 100644
--- a/src/pk-time.c
+++ b/src/pk-time.c
@@ -364,28 +364,23 @@ pk_time_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get PkTime object");
 	time = pk_time_new ();
-	if (time != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, time != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "get elapsed correctly at startup");
 	value = pk_time_get_elapsed (time);
-	if (value < 10) {
+	if (value < 10)
 		egg_test_success (test, "elapsed at startup %i", value);
-	} else {
+	else
 		egg_test_failed (test, "elapsed at startup %i", value);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "ignore remaining correctly");
 	value = pk_time_get_remaining (time);
 	if (value == 0)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %i, not zero!", value);
-	}
 
 	/************************************************************/
 	g_usleep (1000*1000);
@@ -393,28 +388,23 @@ pk_time_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get elapsed correctly");
 	value = pk_time_get_elapsed (time);
-	if (value > 900 && value < 1100) {
+	if (value > 900 && value < 1100)
 		egg_test_success (test, "elapsed ~1000ms: %i", value);
-	} else {
+	else
 		egg_test_failed (test, "elapsed not ~1000ms: %i", value);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "ignore remaining correctly when not enough entries");
 	value = pk_time_get_remaining (time);
 	if (value == 0)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %i, not zero!", value);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "make sure we can add data");
 	ret = pk_time_add_data (time, 10);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "make sure we can get remaining correctly");
@@ -427,9 +417,8 @@ pk_time_test (EggTest *test)
 	value = pk_time_get_remaining (time);
 	if (value > 9 && value < 11)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %i", value);
-	}
 
 	/* reset */
 	g_object_unref (time);
@@ -447,10 +436,8 @@ pk_time_test (EggTest *test)
 	value = pk_time_get_remaining (time);
 	if (value > 1199 && value < 1201)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "got %i", value);
-	}
-
 
 	g_object_unref (time);
 
diff --git a/src/pk-transaction-db.c b/src/pk-transaction-db.c
index a0eb8be..b19c853 100644
--- a/src/pk-transaction-db.c
+++ b/src/pk-transaction-db.c
@@ -586,7 +586,7 @@ pk_transaction_db_test (EggTest *test)
 	egg_test_title (test, "do we get the correct time");
 	value = pk_transaction_db_action_time_since (db, PK_ROLE_ENUM_REFRESH_CACHE);
 	if (value > 1 && value <= 4)
-		egg_test_success (test, "failed to get correct time");
+		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, "failed to get correct time, %i", value);
 
diff --git a/src/pk-transaction-id.c b/src/pk-transaction-id.c
index 3437a74..00d51db 100644
--- a/src/pk-transaction-id.c
+++ b/src/pk-transaction-id.c
@@ -165,19 +165,13 @@ egg_test_transaction_id (EggTest *test)
 	 ************************************************************/
 	egg_test_title (test, "get an tid object");
 	tid = pk_transaction_id_generate ();
-	if (tid != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, tid != NULL);
 	g_free (tid);
 
 	/************************************************************/
 	egg_test_title (test, "tid equal pass (same)");
 	ret = pk_transaction_id_equal ("/34_1234def_r23", "/34_1234def_r23");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	egg_test_end (test);
 }
diff --git a/src/pk-transaction-list.c b/src/pk-transaction-list.c
index c079489..5de8122 100644
--- a/src/pk-transaction-list.c
+++ b/src/pk-transaction-list.c
@@ -556,25 +556,22 @@ pk_transaction_list_test (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get a transaction list object");
 	tlist = pk_transaction_list_new ();
-	if (tlist != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, tlist != NULL);
 
 	/************************************************************/
 	egg_test_title (test, "make sure we get a valid tid");
 	tid = pk_transaction_id_generate ();
-	if (tid != NULL) {
+	if (tid != NULL)
 		egg_test_success (test, "got tid %s", tid);
-	} else
+	else
 		egg_test_failed (test, "failed to get tid");
 
 	/************************************************************/
 	egg_test_title (test, "create a transaction object");
 	ret = pk_transaction_list_create (tlist, tid);
-	if (ret) {
+	if (ret)
 		egg_test_success (test, "created transaction %s", tid);
-	} else
+	else
 		egg_test_failed (test, "failed to create transaction");
 
 	/************************************************************/
@@ -654,10 +651,7 @@ pk_transaction_list_test (EggTest *test)
 	backend = pk_backend_new ();
 	egg_test_title (test, "try to load a valid backend");
 	ret = pk_backend_set_name (backend, "dummy");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, ret);
 
 	/************************************************************/
 	egg_test_title (test, "lock an valid backend");
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 63e8731..7d8da69 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -177,9 +177,8 @@ GQuark
 pk_transaction_error_quark (void)
 {
 	static GQuark quark = 0;
-	if (!quark) {
+	if (!quark)
 		quark = g_quark_from_static_string ("pk_transaction_error");
-	}
 	return quark;
 }
 
@@ -329,21 +328,18 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
 	egg_debug ("invalidating caches");
 
 	/* copy this into the cache if we are getting updates */
-	if (transaction->priv->role == PK_ROLE_ENUM_GET_UPDATES) {
+	if (transaction->priv->role == PK_ROLE_ENUM_GET_UPDATES)
 		pk_cache_set_updates (transaction->priv->cache, transaction->priv->package_list);
-	}
 
 	/* we unref the update cache if it exists */
 	if (transaction->priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
-	    transaction->priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
+	    transaction->priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES)
 		pk_cache_invalidate (transaction->priv->cache);
-	}
 
 	/* this has to be done as different repos might have different updates */
 	if (transaction->priv->role == PK_ROLE_ENUM_REPO_ENABLE ||
-	    transaction->priv->role == PK_ROLE_ENUM_REPO_SET_DATA) {
+	    transaction->priv->role == PK_ROLE_ENUM_REPO_SET_DATA)
 		pk_cache_invalidate (transaction->priv->cache);
-	}
 
 	/* could the update list have changed? */
 	if (transaction->priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
@@ -371,11 +367,11 @@ pk_transaction_allow_cancel_cb (PkBackend *backend, gboolean allow_cancel, PkTra
 	transaction->priv->allow_cancel = allow_cancel;
 
 	/* remove or add the hal inhibit */
-	if (allow_cancel) {
+	if (allow_cancel)
 		pk_inhibit_remove (transaction->priv->inhibit, transaction);
-	} else {
+	else
 		pk_inhibit_add (transaction->priv->inhibit, transaction);
-	}
+
 
 	egg_debug ("emitting allow-interrpt %i", allow_cancel);
 	g_signal_emit (transaction, signals [PK_TRANSACTION_ALLOW_CANCEL], 0, allow_cancel);
@@ -499,16 +495,14 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit, PkTransaction *
 	transaction->priv->running = FALSE;
 
 	/* if we did ::repo-signature-required or ::eula-required, change the error code */
-	if (transaction->priv->emit_signature_required) {
+	if (transaction->priv->emit_signature_required)
 		exit = PK_EXIT_ENUM_KEY_REQUIRED;
-	} else if (transaction->priv->emit_eula_required) {
+	else if (transaction->priv->emit_eula_required)
 		exit = PK_EXIT_ENUM_EULA_REQUIRED;
-	}
 
 	/* invalidate some caches if we succeeded*/
-	if (exit == PK_EXIT_ENUM_SUCCESS) {
+	if (exit == PK_EXIT_ENUM_SUCCESS)
 		pk_transaction_finish_invalidate_caches (transaction);
-	}
 
 	/* find the length of time we have been running */
 	time = pk_transaction_get_runtime (transaction);
@@ -520,9 +514,8 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit, PkTransaction *
 	    transaction->priv->role == PK_ROLE_ENUM_INSTALL_PACKAGES ||
 	    transaction->priv->role == PK_ROLE_ENUM_REMOVE_PACKAGES) {
 		packages = pk_package_list_to_string (transaction->priv->package_list);
-		if (egg_strzero (packages) == FALSE) {
+		if (!egg_strzero (packages))
 			pk_transaction_db_set_data (transaction->priv->transaction_db, transaction->priv->tid, packages);
-		}
 		g_free (packages);
 	}
 
@@ -534,16 +527,14 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit, PkTransaction *
 	}
 
 	/* only reset the time if we succeeded */
-	if (exit == PK_EXIT_ENUM_SUCCESS) {
+	if (exit == PK_EXIT_ENUM_SUCCESS)
 		pk_transaction_db_action_time_reset (transaction->priv->transaction_db, transaction->priv->role);
-	}
 
 	/* did we finish okay? */
-	if (exit == PK_EXIT_ENUM_SUCCESS) {
+	if (exit == PK_EXIT_ENUM_SUCCESS)
 		pk_transaction_db_set_finished (transaction->priv->transaction_db, transaction->priv->tid, TRUE, time);
-	} else {
+	else
 		pk_transaction_db_set_finished (transaction->priv->transaction_db, transaction->priv->tid, FALSE, time);
-	}
 
 	/* remove any inhibit */
 	pk_inhibit_remove (transaction->priv->inhibit, transaction);
@@ -973,61 +964,61 @@ pk_transaction_set_running (PkTransaction *transaction)
 	desc = priv->backend->desc;
 
 	/* do the correct action with the cached parameters */
-	if (priv->role == PK_ROLE_ENUM_GET_DEPENDS) {
+	if (priv->role == PK_ROLE_ENUM_GET_DEPENDS)
 		desc->get_depends (priv->backend, priv->cached_filters, priv->cached_package_ids, priv->cached_force);
-	} else if (priv->role == PK_ROLE_ENUM_GET_UPDATE_DETAIL) {
+	else if (priv->role == PK_ROLE_ENUM_GET_UPDATE_DETAIL)
 		desc->get_update_detail (priv->backend, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_RESOLVE) {
+	else if (priv->role == PK_ROLE_ENUM_RESOLVE)
 		desc->resolve (priv->backend, priv->cached_filters, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_ROLLBACK) {
+	else if (priv->role == PK_ROLE_ENUM_ROLLBACK)
 		desc->rollback (priv->backend, priv->cached_transaction_id);
-	} else if (priv->role == PK_ROLE_ENUM_DOWNLOAD_PACKAGES) {
+	else if (priv->role == PK_ROLE_ENUM_DOWNLOAD_PACKAGES)
 		desc->download_packages (priv->backend, priv->cached_package_ids, priv->cached_directory);
-	} else if (priv->role == PK_ROLE_ENUM_GET_DETAILS) {
+	else if (priv->role == PK_ROLE_ENUM_GET_DETAILS)
 		desc->get_details (priv->backend, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_GET_DISTRO_UPGRADES) {
+	else if (priv->role == PK_ROLE_ENUM_GET_DISTRO_UPGRADES)
 		desc->get_distro_upgrades (priv->backend);
-	} else if (priv->role == PK_ROLE_ENUM_GET_FILES) {
+	else if (priv->role == PK_ROLE_ENUM_GET_FILES)
 		desc->get_files (priv->backend, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_GET_REQUIRES) {
+	else if (priv->role == PK_ROLE_ENUM_GET_REQUIRES)
 		desc->get_requires (priv->backend, priv->cached_filters, priv->cached_package_ids, priv->cached_force);
-	} else if (priv->role == PK_ROLE_ENUM_WHAT_PROVIDES) {
+	else if (priv->role == PK_ROLE_ENUM_WHAT_PROVIDES)
 		desc->what_provides (priv->backend, priv->cached_filters, priv->cached_provides, priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_GET_UPDATES) {
+	else if (priv->role == PK_ROLE_ENUM_GET_UPDATES)
 		desc->get_updates (priv->backend, priv->cached_filters);
-	} else if (priv->role == PK_ROLE_ENUM_GET_PACKAGES) {
+	else if (priv->role == PK_ROLE_ENUM_GET_PACKAGES)
 		desc->get_packages (priv->backend, priv->cached_filters);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_DETAILS) {
+	else if (priv->role == PK_ROLE_ENUM_SEARCH_DETAILS)
 		desc->search_details (priv->backend, priv->cached_filters, priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_FILE) {
+	else if (priv->role == PK_ROLE_ENUM_SEARCH_FILE)
 		desc->search_file (priv->backend,priv->cached_filters,priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_GROUP) {
+	else if (priv->role == PK_ROLE_ENUM_SEARCH_GROUP)
 		desc->search_group (priv->backend, priv->cached_filters, priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_SEARCH_NAME) {
+	else if (priv->role == PK_ROLE_ENUM_SEARCH_NAME)
 		desc->search_name (priv->backend,priv->cached_filters,priv->cached_search);
-	} else if (priv->role == PK_ROLE_ENUM_INSTALL_PACKAGES) {
+	else if (priv->role == PK_ROLE_ENUM_INSTALL_PACKAGES)
 		desc->install_packages (priv->backend, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_INSTALL_FILES) {
+	else if (priv->role == PK_ROLE_ENUM_INSTALL_FILES)
 		desc->install_files (priv->backend, priv->cached_trusted, priv->cached_full_paths);
-	} else if (priv->role == PK_ROLE_ENUM_INSTALL_SIGNATURE) {
+	else if (priv->role == PK_ROLE_ENUM_INSTALL_SIGNATURE)
 		desc->install_signature (priv->backend, PK_SIGTYPE_ENUM_GPG, priv->cached_key_id, priv->cached_package_id);
-	} else if (priv->role == PK_ROLE_ENUM_SERVICE_PACK) {
+	else if (priv->role == PK_ROLE_ENUM_SERVICE_PACK)
 		desc->service_pack (priv->backend, priv->cached_full_path, priv->cached_enabled);
-	} else if (priv->role == PK_ROLE_ENUM_REFRESH_CACHE) {
+	else if (priv->role == PK_ROLE_ENUM_REFRESH_CACHE)
 		desc->refresh_cache (priv->backend,  priv->cached_force);
-	} else if (priv->role == PK_ROLE_ENUM_REMOVE_PACKAGES) {
+	else if (priv->role == PK_ROLE_ENUM_REMOVE_PACKAGES)
 		desc->remove_packages (priv->backend, priv->cached_package_ids, priv->cached_allow_deps, priv->cached_autoremove);
-	} else if (priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
+	else if (priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES)
 		desc->update_packages (priv->backend, priv->cached_package_ids);
-	} else if (priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM) {
+	else if (priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM)
 		desc->update_system (priv->backend);
-	} else if (priv->role == PK_ROLE_ENUM_GET_REPO_LIST) {
+	else if (priv->role == PK_ROLE_ENUM_GET_REPO_LIST)
 		desc->get_repo_list (priv->backend, priv->cached_filters);
-	} else if (priv->role == PK_ROLE_ENUM_REPO_ENABLE) {
+	else if (priv->role == PK_ROLE_ENUM_REPO_ENABLE)
 		desc->repo_enable (priv->backend, priv->cached_repo_id, priv->cached_enabled);
-	} else if (priv->role == PK_ROLE_ENUM_REPO_SET_DATA) {
+	else if (priv->role == PK_ROLE_ENUM_REPO_SET_DATA)
 		desc->repo_set_data (priv->backend, priv->cached_repo_id, priv->cached_parameter, priv->cached_value);
-	} else {
+	else {
 		egg_error ("failed to run as role not assigned");
 		return FALSE;
 	}
@@ -1397,7 +1388,7 @@ pk_transaction_download_packages (PkTransaction *transaction, gchar **package_id
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 	        package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 	        error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 	                             "The package id's '%s' are not valid", package_ids_temp);
@@ -1497,7 +1488,7 @@ pk_transaction_get_depends (PkTransaction *transaction, const gchar *filter, gch
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -1562,7 +1553,7 @@ pk_transaction_get_details (PkTransaction *transaction, gchar **package_ids, DBu
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -1676,7 +1667,7 @@ pk_transaction_get_files (PkTransaction *transaction, gchar **package_ids, DBusG
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -1925,7 +1916,7 @@ pk_transaction_get_requires (PkTransaction *transaction, const gchar *filter, gc
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -2043,7 +2034,7 @@ pk_transaction_get_update_detail (PkTransaction *transaction, gchar **package_id
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -2517,7 +2508,7 @@ pk_transaction_install_packages (PkTransaction *transaction, gchar **package_ids
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -2743,7 +2734,7 @@ pk_transaction_remove_packages (PkTransaction *transaction, gchar **package_ids,
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -3401,7 +3392,7 @@ pk_transaction_update_packages (PkTransaction *transaction, gchar **package_ids,
 
 	/* check package_ids */
 	ret = pk_package_ids_check (package_ids);
-	if (ret == FALSE) {
+	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids, ", ");
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_PACKAGE_ID_INVALID,
 				     "The package id's '%s' are not valid", package_ids_temp);
@@ -3813,10 +3804,7 @@ egg_test_transaction (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get PkTransaction object");
 	transaction = pk_transaction_new ();
-	if (transaction != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, transaction != NULL);
 
 	/************************************************************
 	 ****************          FILTERS         ******************
@@ -3824,110 +3812,71 @@ egg_test_transaction (EggTest *test)
 	temp = NULL;
 	egg_test_title (test, "test a fail filter (null)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "passed the filter '%s'", temp);
-	}
+	egg_test_assert (test, !ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "";
 	egg_test_title (test, "test a fail filter ()");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "passed the filter '%s'", temp);
-	}
+	egg_test_assert (test, !ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = ";";
 	egg_test_title (test, "test a fail filter (;)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "passed the filter '%s'", temp);
-	}
+	egg_test_assert (test, !ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "moo";
 	egg_test_title (test, "test a fail filter (invalid)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "passed the filter '%s'", temp);
-	}
+	egg_test_assert (test, !ret);
+
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "moo;foo";
 	egg_test_title (test, "test a fail filter (invalid, multiple)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "passed the filter '%s'", temp);
-	}
+	egg_test_assert (test, !ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "gui;;";
 	egg_test_title (test, "test a fail filter (valid then zero length)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "passed the filter '%s'", temp);
-	}
+	egg_test_assert (test, !ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "none";
 	egg_test_title (test, "test a pass filter (none)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "failed the filter '%s'", temp);
-	}
+	egg_test_assert (test, ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "gui";
 	egg_test_title (test, "test a pass filter (single)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "failed the filter '%s'", temp);
-	}
+	egg_test_assert (test, ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "devel;~gui";
 	egg_test_title (test, "test a pass filter (multiple)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "failed the filter '%s'", temp);
-	}
+	egg_test_assert (test, ret);
 	g_clear_error (&error);
 
 	/************************************************************/
 	temp = "~gui;~installed";
 	egg_test_title (test, "test a pass filter (multiple2)");
 	ret = pk_transaction_filter_check (temp, &error);
-	if (ret)
-		egg_test_success (test, NULL);
-	else {
-		egg_test_failed (test, "failed the filter '%s'", temp);
-	}
+	egg_test_assert (test, ret);
 	g_clear_error (&error);
 
 	g_object_unref (transaction);
diff --git a/src/pk-update-detail-list.c b/src/pk-update-detail-list.c
index 2101ce6..1e06836 100644
--- a/src/pk-update-detail-list.c
+++ b/src/pk-update-detail-list.c
@@ -192,10 +192,7 @@ pk_update_detail_test_list (EggTest *test)
 	/************************************************************/
 	egg_test_title (test, "get an instance");
 	list = pk_update_detail_list_new ();
-	if (list != NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
+	egg_test_assert (test, list != NULL);
 
 	g_object_unref (list);
 
commit 46d39a50b1b1563b4330779e78bc306174aaeb81
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 14:59:06 2008 +0100

    trivial: add two convenience methods egg_test_title_assert and egg_test_assert

diff --git a/libpackagekit/egg-test.c b/libpackagekit/egg-test.c
index 9a4c2f0..ef7df8e 100644
--- a/libpackagekit/egg-test.c
+++ b/libpackagekit/egg-test.c
@@ -263,6 +263,31 @@ failed:
 }
 
 /**
+ * egg_test_assert:
+ **/
+void
+egg_test_assert (EggTest *test, gboolean value)
+{
+	if (value)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, NULL);
+}
+
+/**
+ * egg_test_title_assert:
+ **/
+void
+egg_test_title_assert (EggTest *test, const gchar *text, gboolean value)
+{
+	egg_test_title (test, "%s", text);
+	if (value)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, NULL);
+}
+
+/**
  * egg_test_get_data_file:
  **/
 gchar *
diff --git a/libpackagekit/egg-test.h b/libpackagekit/egg-test.h
index d129454..fc49be3 100644
--- a/libpackagekit/egg-test.h
+++ b/libpackagekit/egg-test.h
@@ -30,6 +30,8 @@ typedef struct EggTest EggTest;
 gboolean	 egg_test_start			(EggTest *test, const gchar *name);
 void		 egg_test_end			(EggTest *test);
 void		 egg_test_title			(EggTest *test, const gchar *format, ...);
+void		 egg_test_title_assert		(EggTest *test, const gchar *text, gboolean value);
+void		 egg_test_assert		(EggTest *test, gboolean value);
 void		 egg_test_success		(EggTest *test, const gchar *format, ...);
 void		 egg_test_failed		(EggTest *test, const gchar *format, ...);
 EggTest		*egg_test_init			(void);
commit 9faa65366b4ad59ffd891865a6ca1ba297b5c81a
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 14:37:30 2008 +0100

    trivial: add some unit checks to PkEngine, and ensure we reset the timeout when we do all methods

diff --git a/src/pk-engine.c b/src/pk-engine.c
index 90aa0b4..3f51bef 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -140,9 +140,8 @@ GQuark
 pk_engine_error_quark (void)
 {
 	static GQuark quark = 0;
-	if (!quark) {
+	if (!quark)
 		quark = g_quark_from_static_string ("pk_engine_error");
-	}
 	return quark;
 }
 
@@ -289,6 +288,10 @@ pk_engine_get_network_state (PkEngine *engine, gchar **state, GError **error)
 	/* get the network state */
 	network = pk_network_get_network_state (engine->priv->network);
 	*state = g_strdup (pk_network_enum_to_text (network));
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -304,6 +307,9 @@ pk_engine_get_transaction_list (PkEngine *engine, gchar ***transaction_list, GEr
 	egg_debug ("GetTransactionList method called");
 	*transaction_list = pk_transaction_list_get_array (engine->priv->transaction_list);
 
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -336,6 +342,9 @@ pk_engine_state_changed_cb (gpointer data)
 	engine->priv->signal_state_priority_timeout = 0;
 	engine->priv->signal_state_normal_timeout = 0;
 
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return FALSE;
 }
 
@@ -385,6 +394,10 @@ pk_engine_state_has_changed (PkEngine *engine, const gchar *reason, GError **err
 	else
 		engine->priv->signal_state_normal_timeout = g_timeout_add_seconds (PK_ENGINE_STATE_CHANGED_NORMAL_TIMEOUT,
 										   pk_engine_state_changed_cb, engine);
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -396,6 +409,10 @@ pk_engine_get_actions (PkEngine *engine, gchar **actions, GError **error)
 {
 	g_return_val_if_fail (PK_IS_ENGINE (engine), FALSE);
 	*actions = pk_role_bitfield_to_text (engine->priv->actions);
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -407,6 +424,10 @@ pk_engine_get_groups (PkEngine *engine, gchar **groups, GError **error)
 {
 	g_return_val_if_fail (PK_IS_ENGINE (engine), FALSE);
 	*groups = pk_group_bitfield_to_text (engine->priv->groups);
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -418,6 +439,10 @@ pk_engine_get_filters (PkEngine *engine, gchar **filters, GError **error)
 {
 	g_return_val_if_fail (PK_IS_ENGINE (engine), FALSE);
 	*filters = pk_filter_bitfield_to_text (engine->priv->filters);
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -431,6 +456,10 @@ pk_engine_get_backend_detail (PkEngine *engine, gchar **name, gchar **author, GE
 
 	egg_debug ("GetBackendDetail method called");
 	pk_backend_get_backend_detail (engine->priv->backend, name, author);
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -449,6 +478,9 @@ pk_engine_get_time_since_action	(PkEngine *engine, const gchar *role_text, guint
 	role = pk_role_enum_from_text (role_text);
 	*seconds = pk_transaction_db_action_time_since (engine->priv->transaction_db, role);
 
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 	return TRUE;
 }
 
@@ -543,6 +575,10 @@ pk_engine_set_proxy (PkEngine *engine, const gchar *proxy_http, const gchar *pro
 
 	/* all okay */
 	dbus_g_method_return (context);
+
+	/* reset the timer */
+	pk_engine_reset_timer (engine);
+
 out:
 	g_free (sender);
 	g_free (error_detail);
@@ -790,6 +826,9 @@ pk_engine_test (EggTest *test)
 	gboolean ret;
 	PkEngine *engine;
 	PkBackend *backend;
+	guint idle;
+	gchar *tid;
+	gchar *actions;
 
 	if (!egg_test_start (test, "PkEngine"))
 		return;
@@ -825,6 +864,42 @@ pk_engine_test (EggTest *test)
 	else
 		egg_test_failed (test, NULL);
 
+	/************************************************************/
+	egg_test_title (test, "get idle at startup");
+	idle = pk_engine_get_seconds_idle (engine);
+	if (idle < 1)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "idle = %i", idle);
+
+	/* wait 5 seconds */
+	egg_test_loop_wait (test, 5000);
+
+	/************************************************************/
+	egg_test_title (test, "get idle at idle");
+	idle = pk_engine_get_seconds_idle (engine);
+	if (idle < 6 && idle > 4)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "idle = %i", idle);
+
+	/************************************************************/
+	egg_test_title (test, "get idle after method");
+	pk_engine_get_actions (engine, &actions, NULL);
+	g_free (actions);
+	idle = pk_engine_get_seconds_idle (engine);
+	if (idle < 1)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "idle = %i", idle);
+
+	/************************************************************/
+	egg_test_title (test, "create a tid we never use");
+	ret = pk_engine_get_tid (engine, &tid, NULL);
+	egg_test_assert (test, ret);
+	egg_test_title_assert (test, "tid is non-null", tid != NULL);
+	g_free (tid);
+
 	g_object_unref (backend);
 	g_object_unref (engine);
 
commit a9322235854cdf9904d4a9bd4b60c2df318aa37f
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 14:35:35 2008 +0100

    trivial: disable the PkBackendDbus self check code for now

diff --git a/src/pk-backend-dbus.c b/src/pk-backend-dbus.c
index 2cdf587..e186bec 100644
--- a/src/pk-backend-dbus.c
+++ b/src/pk-backend-dbus.c
@@ -1504,9 +1504,8 @@ pk_backend_dbus_init (PkBackendDbus *backend_dbus)
 
 	/* get connection */
 	backend_dbus->priv->connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
-	if (error != NULL) {
+	if (error != NULL)
 		egg_error ("unable to get system connection %s", error->message);
-	}
 
 	/* babysit the backend and do Init() again it when it crashes */
 	backend_dbus->priv->monitor = egg_dbus_monitor_new ();
@@ -1663,6 +1662,12 @@ pk_backend_test_dbus (EggTest *test)
 	return;
 #endif
 
+	/* there's a bug in the self check code somewhere, causing ErrorCode in
+	   init, even tho init is overidden by the self check code */
+	egg_warning ("NOT RUNNING pkBackendDbus SELF CHECKS");
+	egg_test_end (test);
+	return;
+
 	/************************************************************/
 	egg_test_title (test, "get an backend_dbus");
 	backend_dbus = pk_backend_dbus_new ();
commit 47c88e8664a49a80a77705dbb853ff4fc97dc3fe
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 12:42:12 2008 +0100

    trivial: use egg_dbus_monitor_reset and add a simple self check

diff --git a/src/pk-backend-dbus.c b/src/pk-backend-dbus.c
index d3b251a..2cdf587 100644
--- a/src/pk-backend-dbus.c
+++ b/src/pk-backend-dbus.c
@@ -474,6 +474,7 @@ pk_backend_dbus_set_name (PkBackendDbus *backend_dbus, const gchar *service)
 	}
 
 	/* watch */
+	egg_dbus_monitor_reset (backend_dbus->priv->monitor);
 	egg_dbus_monitor_assign (backend_dbus->priv->monitor, EGG_DBUS_MONITOR_SYSTEM, service);
 
 	/* grab this */
@@ -1445,9 +1446,8 @@ pk_backend_dbus_monitor_changed_cb (EggDbusMonitor *egg_dbus_monitor, gboolean i
 		pk_backend_message (backend_dbus->priv->backend, PK_MESSAGE_ENUM_DAEMON_ERROR, "DBUS backend has exited");
 		/* Init() */
 		ret = pk_backend_dbus_startup (backend_dbus);
-		if (!ret) {
+		if (!ret)
 			pk_backend_message (backend_dbus->priv->backend, PK_MESSAGE_ENUM_DAEMON_ERROR, "DBUS backend will not start");
-		}
 	}
 }
 
@@ -1693,11 +1693,17 @@ pk_backend_test_dbus (EggTest *test)
 
 	/************************************************************/
 	egg_test_title (test, "check we actually did something and didn't fork");
-	if (elapsed >= 1) {
+	if (elapsed >= 1)
 		egg_test_success (test, "elapsed = %ims", elapsed);
-	} else {
+	else
 		egg_test_failed (test, "elapsed = %ims", elapsed);
-	}
+
+	/************************************************************/
+	egg_test_title (test, "check we are on the bus");
+	if (egg_dbus_monitor_is_connected (backend_dbus->priv->monitor))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, NULL);
 
 	/************************************************************/
 	egg_test_title (test, "search by name");
@@ -1710,11 +1716,10 @@ pk_backend_test_dbus (EggTest *test)
 
 	/************************************************************/
 	egg_test_title (test, "check we forked and didn't block");
-	if (elapsed < 100) {
+	if (elapsed < 100)
 		egg_test_success (test, "elapsed = %ims", elapsed);
-	} else {
+	else
 		egg_test_failed (test, "elapsed = %ims", elapsed);
-	}
 
 	/* wait for finished */
 	egg_test_loop_wait (test, 5000);
@@ -1724,9 +1729,8 @@ pk_backend_test_dbus (EggTest *test)
 	egg_test_title (test, "test number of packages");
 	if (number_packages == 3)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "wrong number of packages %i, expected 3", number_packages);
-	}
 
 	/* reset number_packages */
 	pk_backend_reset (backend_dbus->priv->backend);
@@ -1748,9 +1752,8 @@ pk_backend_test_dbus (EggTest *test)
 	egg_test_title (test, "test number of packages again");
 	if (number_packages == 3)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "wrong number of packages %i, expected 3", number_packages);
-	}
 
 	/* reset number_packages */
 	pk_backend_reset (backend_dbus->priv->backend);
@@ -1778,19 +1781,17 @@ pk_backend_test_dbus (EggTest *test)
 
 	/************************************************************/
 	egg_test_title (test, "check we waited correct time");
-	if (elapsed < 1600 && elapsed > 1400) {
+	if (elapsed < 1600 && elapsed > 1400)
 		egg_test_success (test, "waited %ims", elapsed);
-	} else {
+	else
 		egg_test_failed (test, "waited %ims", elapsed);
-	}
 
 	/************************************************************/
 	egg_test_title (test, "test number of packages");
 	if (number_packages == 2)
 		egg_test_success (test, NULL);
-	else {
+	else
 		egg_test_failed (test, "wrong number of packages %i, expected 2", number_packages);
-	}
 
 	/* needed to avoid an error */
 	ret = pk_backend_unlock (backend_dbus->priv->backend);
commit 06a035a3f308e194c0cb91773e268e29e81844ab
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 12:41:22 2008 +0100

    trivial: when we tell the developer we can't process after errorcode, tell them what it is we can't process

diff --git a/src/pk-backend.c b/src/pk-backend.c
index 2c88ae3..f8d16e3 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -725,7 +725,7 @@ pk_backend_set_percentage (PkBackend *backend, guint percentage)
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: percentage %i", percentage);
 		return FALSE;
 	}
 
@@ -799,7 +799,7 @@ pk_backend_set_sub_percentage (PkBackend *backend, guint percentage)
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: sub-percentage %i", percentage);
 		return FALSE;
 	}
 
@@ -840,7 +840,7 @@ pk_backend_set_status (PkBackend *backend, PkStatusEnum status)
 
 	/* have we already set an error? */
 	if (backend->priv->set_error && status != PK_STATUS_ENUM_FINISHED) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: status %s", pk_status_enum_to_text (status));
 		return FALSE;
 	}
 
@@ -926,7 +926,7 @@ pk_backend_package (PkBackend *backend, PkInfoEnum info, const gchar *package_id
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: package %s", package_id);
 		return FALSE;
 	}
 
@@ -981,7 +981,7 @@ pk_backend_update_detail (PkBackend *backend, const gchar *package_id,
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: update_detail %s", package_id);
 		return FALSE;
 	}
 
@@ -1043,7 +1043,7 @@ pk_backend_require_restart (PkBackend *backend, PkRestartEnum restart, const gch
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: require-restart %s", pk_restart_enum_to_text (restart));
 		return FALSE;
 	}
 
@@ -1067,7 +1067,7 @@ pk_backend_message (PkBackend *backend, PkMessageEnum message, const gchar *form
 
 	/* have we already set an error? */
 	if (backend->priv->set_error && message != PK_MESSAGE_ENUM_BACKEND_ERROR) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: message %s", pk_message_enum_to_text (message));
 		return FALSE;
 	}
 
@@ -1149,7 +1149,7 @@ pk_backend_details (PkBackend *backend, const gchar *package_id,
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: details %s", package_id);
 		return FALSE;
 	}
 
@@ -1180,7 +1180,7 @@ pk_backend_files (PkBackend *backend, const gchar *package_id, const gchar *file
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: files %s", package_id);
 		return FALSE;
 	}
 
@@ -1208,7 +1208,7 @@ pk_backend_distro_upgrade (PkBackend *backend, PkDistroUpgradeEnum type, const g
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: distro-upgrade");
 		return FALSE;
 	}
 
@@ -1240,7 +1240,7 @@ pk_backend_repo_signature_required (PkBackend *backend, const gchar *package_id,
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: repo-sig-reqd");
 		return FALSE;
 	}
 
@@ -1276,7 +1276,7 @@ pk_backend_eula_required (PkBackend *backend, const gchar *eula_id, const gchar
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: eula required");
 		return FALSE;
 	}
 
@@ -1311,7 +1311,7 @@ pk_backend_repo_detail (PkBackend *backend, const gchar *repo_id,
 
 	/* have we already set an error? */
 	if (backend->priv->set_error) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: repo-detail %s", repo_id);
 		return FALSE;
 	}
 
@@ -1413,7 +1413,7 @@ pk_backend_set_allow_cancel (PkBackend *backend, gboolean allow_cancel)
 
 	/* have we already set an error? */
 	if (backend->priv->set_error && allow_cancel) {
-		egg_warning ("already set error, cannot process");
+		egg_warning ("already set error, cannot process: allow-cancel %i", allow_cancel);
 		return FALSE;
 	}
 
commit c151f8e0656dedc767dd77634141062e67e6e959
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 12:40:35 2008 +0100

    trivial: Add the convenience function egg_dbus_monitor_reset so we can reuse a EggDbusMonitor object

diff --git a/libpackagekit/egg-dbus-monitor.c b/libpackagekit/egg-dbus-monitor.c
index 1c86cd9..90c2193 100644
--- a/libpackagekit/egg-dbus-monitor.c
+++ b/libpackagekit/egg-dbus-monitor.c
@@ -193,6 +193,30 @@ egg_dbus_monitor_is_connected (EggDbusMonitor *monitor)
 }
 
 /**
+ * egg_dbus_monitor_reset
+ * @monitor: This class instance
+ * Return value: if we reset correctly
+ **/
+gboolean
+egg_dbus_monitor_reset (EggDbusMonitor *monitor)
+{
+	g_return_val_if_fail (EGG_IS_DBUS_MONITOR (monitor), FALSE);
+	if (monitor->priv->proxy != NULL) {
+		egg_debug ("not already assigned!");
+		return FALSE;
+	}
+	if (monitor->priv->service != NULL) {
+		g_free (monitor->priv->service);
+		monitor->priv->service = NULL;
+	}
+	if (monitor->priv->proxy != NULL) {
+		g_object_unref (monitor->priv->proxy);
+		monitor->priv->proxy = NULL;
+	}
+	return TRUE;
+}
+
+/**
  * egg_dbus_monitor_class_init:
  * @klass: The EggDbusMonitorClass
  **/
diff --git a/libpackagekit/egg-dbus-monitor.h b/libpackagekit/egg-dbus-monitor.h
index 4afe9cc..ea40f15 100644
--- a/libpackagekit/egg-dbus-monitor.h
+++ b/libpackagekit/egg-dbus-monitor.h
@@ -58,7 +58,8 @@ typedef enum {
 
 GType		 egg_dbus_monitor_get_type	  	(void) G_GNUC_CONST;
 EggDbusMonitor	*egg_dbus_monitor_new			(void);
-gboolean	 egg_dbus_monitor_assign			(EggDbusMonitor	*monitor,
+gboolean	 egg_dbus_monitor_reset			(EggDbusMonitor	*monitor);
+gboolean	 egg_dbus_monitor_assign		(EggDbusMonitor	*monitor,
 							 EggDbusMonitorType bus_type,
 							 const gchar	*service);
 gboolean	 egg_dbus_monitor_is_connected		(EggDbusMonitor	*monitor);
commit 58f97857018786452d21a7b095201c39707c3ec8
Merge: 7ac6aaf... cdc235e...
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Sep 21 12:05:24 2008 +0100

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit cdc235ed26ae9196a64cf0e062a4aa54157423fc
Author: Tim Lauridsen <timlau at fedoraproject.org>
Date:   Sun Sep 21 12:08:54 2008 +0200

    python API: added license text to source file and added an api version

diff --git a/python/packagekit/client.py b/python/packagekit/client.py
index a653745..fa80da4 100644
--- a/python/packagekit/client.py
+++ b/python/packagekit/client.py
@@ -15,6 +15,8 @@ import dbus
 from enums import *
 from misc import *
 
+__api_version__ = '0.1.0'
+
 class PackageKitError(Exception):
     '''PackageKit error.
 
diff --git a/python/packagekit/misc.py b/python/packagekit/misc.py
index a147bbe..f8c5ac4 100644
--- a/python/packagekit/misc.py
+++ b/python/packagekit/misc.py
@@ -1,7 +1,23 @@
 #!/usr/bin/python
 #
+# Licensed under the GNU General Public License Version 2
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
 # (c) 2008
-##    Tim Lauridsen <timlau at fedoraproject.org>
+#     Tim Lauridsen <timlau at fedoraproject.org>
 
 # Misc classes and funtions
 
commit cc6f7c3c34e6ab4e20334c5c7b602876f0d4fb25
Author: Tim Lauridsen <timlau at fedoraproject.org>
Date:   Sun Sep 21 11:53:10 2008 +0200

    python API: return objects instead of dict

diff --git a/python/packagekit/Makefile.am b/python/packagekit/Makefile.am
index 8aec249..410f021 100644
--- a/python/packagekit/Makefile.am
+++ b/python/packagekit/Makefile.am
@@ -17,6 +17,7 @@ packagekitpython_PYTHON =				\
 	progress.py					\
 	package.py					\
 	client.py					\
+	misc.py					\
 	$(NULL)
 
 clean-local :
diff --git a/python/packagekit/client.py b/python/packagekit/client.py
index 6e18c65..a653745 100644
--- a/python/packagekit/client.py
+++ b/python/packagekit/client.py
@@ -13,6 +13,7 @@ import os
 import gobject
 import dbus
 from enums import *
+from misc import *
 
 class PackageKitError(Exception):
     '''PackageKit error.
@@ -75,10 +76,7 @@ class PackageKitClient:
 
         result = []
         package_cb = lambda i, id, summary: result.append(
-            {'installed' : (i == 'installed'),
-             'id': str(id),
-             'summary' : self._to_utf8(summary)
-             })
+            PackageKitPackage(i, id, summary))
         self._wrapCall(pk_xn, method, {'Package' : package_cb})
         return result
 
@@ -91,10 +89,7 @@ class PackageKitClient:
 
         result = []
         distup_cb = lambda typ,name,summary: result.append(
-            {'type' : typ,
-             'name': name,
-             'summary' : self._to_utf8(summary)
-             })
+            PackageKitDistroUpgrade(typ,name,summary))
         self._wrapCall(pk_xn, method, {'DistroUpgrade' : distup_cb})
         return result
 
@@ -107,13 +102,7 @@ class PackageKitClient:
         '''
         result = []
         details_cb = lambda id, license, group, detail, url, size: result.append(
-        {"id" : (str(id)),
-          "license" : (str(license)),
-          "group" : (str(group)),
-          "detail" : (self._to_utf8(detail)),
-          "url" : str(url),
-          "size" : int(size)
-          })
+            PackageKitDetails(id, license, group, detail, url, size))
 
         self._wrapCall(pk_xn, method, {'Details' : details_cb})
         return result
@@ -128,18 +117,9 @@ class PackageKitClient:
         details_cb =  lambda id, updates, obsoletes, vendor_url, bugzilla_url, \
                              cve_url, restart, update_text, changelog, state, \
                              issued, updated: result.append(
-        {"id" : id,
-         "updates"      : updates,
-         "obsoletes"    : obsoletes,
-         "vendor_url"   : vendor_url,
-         "bugzilla_url" : bugzilla_url,
-         "cve_url"      : cve_url,
-         "restart"      : restart,
-         "update_text"  : update_text,
-         "changelog"    : changelog,
-         "state"        : state,
-         "issued"       : issued,
-         "updated"      : updated})
+            PackageKitUpdateDetails(id, updates, obsoletes, vendor_url, bugzilla_url, \
+                                    cve_url, restart, update_text, changelog, state, \
+                                    issued, updated))
         self._wrapCall(pk_xn, method, {'UpdateDetail' : details_cb})
         return result
 
@@ -150,10 +130,8 @@ class PackageKitClient:
         'description', 'enabled' keys
         '''
         result = []
-        repo_cb = lambda id, description, enabled: result.append
-        ({'id' : str(id),
-          'desc' : self._to_utf8(description),
-          'enabled' : enabled})
+        repo_cb = lambda id, description, enabled: result.append(
+            PackageKitRepos(id, description, enabled))
         self._wrapCall(pk_xn, method, {'RepoDetail' : repo_cb})
         return result
 
@@ -164,9 +142,8 @@ class PackageKitClient:
         'files'
         '''
         result = []
-        files_cb = lambda id, files: result.append
-        ({'id' : str(id),
-          'files' : files.split(';')})
+        files_cb = lambda id, files: result.append(
+            PackageKitFiles(id, files))
         self._wrapCall(pk_xn, method, {'Files' : files_cb})
         return result
 
@@ -426,15 +403,8 @@ class PackageKitClient:
     #
     # Internal helper functions
     #
-
-    def _to_utf8(self, obj, errors='replace'):
-        '''convert 'unicode' to an encoded utf-8 byte string '''
-        if isinstance(obj, unicode):
-            obj = obj.encode('utf-8', errors)
-        return obj
-
-    def _to_list(self, obj, errors='replace'):
-        '''convert 'unicode' to an encoded utf-8 byte string '''
+    def _to_list(self, obj):
+        '''convert obj to list'''
         if isinstance(obj, str):
             obj = [obj]
         return obj
diff --git a/python/packagekit/misc.py b/python/packagekit/misc.py
new file mode 100644
index 0000000..a147bbe
--- /dev/null
+++ b/python/packagekit/misc.py
@@ -0,0 +1,98 @@
+#!/usr/bin/python
+#
+# (c) 2008
+##    Tim Lauridsen <timlau at fedoraproject.org>
+
+# Misc classes and funtions
+
+def _to_utf8( obj, errors='replace'):
+    '''convert 'unicode' to an encoded utf-8 byte string '''
+    if isinstance(obj, unicode):
+        obj = obj.encode('utf-8', errors)
+    return obj
+
+class PackageKitPackage:
+    ''' 
+    container class from values from the Package signal 
+    '''
+    def __init__(self,installed,id,summary):
+        self.installed = (installed == 'installed')
+        self.id = str(id)
+        self.summary = _to_utf8(summary)
+        
+    def __str__(self):
+        (name,ver,arch,repo) = tuple(self.id.split(";"))
+        p =  "%s-%s.%s" % (name,ver,arch)
+        if self.installed:
+            inst = "installed"
+        else:
+            inst = "available"
+        return "%-40s : %s : %s" % (p, inst, self.summary)
+        
+        
+class PackageKitDistroUpgrade:
+    ''' 
+    container class from values from the DistroUpgrade signal 
+    '''
+    def __init__(self,upgrade_type,name,summary):
+        self.upgrade_type = upgrade_type
+        self.name = name
+        self.summary = _to_utf8(summary)
+        
+    def __str__(self):
+        return " type : %s, name : %s, summary : %s " % (
+                self.upgrade_type,self.name,self.summmary)        
+
+
+class PackageKitDetails:
+    ''' 
+    container class from values from the Detail signal 
+    '''
+    def __init__(self, id, license, group, detail, url, size):
+        self.id = str(id)
+        self.license = license
+        self.group = group
+        self.detail = _to_utf8(detail)
+        self.url = url
+        self.size = size
+        
+class PackageKitUpdateDetails:
+    ''' 
+    container class from values from the UpdateDetail signal 
+    '''
+    def __init__(self, id, updates, obsoletes, vendor_url, bugzilla_url, \
+                 cve_url, restart, update_text, changelog, state, \
+                 issued, updated):
+        self.id = str(id)
+        self.updates = updates
+        self.obsoletes = opsoletes
+        self.vendor_url = vendor_url
+        self.bugzilla_url = bugzilla_url
+        self.cve_url = cve_url
+        self.restart = restart
+        self.update_text = update_text
+        self.changelog = changelog
+        self.state = state
+        self.issued = issued                     
+        self.updated = updated
+        
+class PackageKitRepos:
+    ''' 
+    container class from values from the Repos signal 
+    '''
+    def __init__(self,id, description, enabled):
+        self.id = str(id)
+        self.description = description
+        self.enabled = enabled
+        
+        
+class PackageKitFiles:
+    ''' 
+    container class from values from the Files signal 
+    '''        
+    def __init__(self,id, files):
+        self.id = str(id)
+        self.files = files
+        
+            
+            
diff --git a/python/wrapper-test.py b/python/wrapper-test.py
index 661f725..f055335 100755
--- a/python/wrapper-test.py
+++ b/python/wrapper-test.py
@@ -30,18 +30,16 @@ def show_packages(pk,pkgs,details=False,limit=None):
             break
         show_package(pkg)
         if details:
-            details = pk.GetDetails(pkg['id'])
+            details = pk.GetDetails(pkg.id)
             print 79 *"-"
-            print details[0]['detail']
+            print details[0].detail
             print 79 *"="
 
 def show_package(pkg):
     if pkg:
         if isinstance(pkg, list):
             pkg = pkg[0]
-        (name,ver,arch,repo) = tuple(pkg['id'].split(";"))
-        p =  "%s-%s.%s" % (name,ver,arch)
-        print "%-40s : %s" % (p,pkg['summary'])
+        print str(pkg)
     else:
         print "no package found"
 
@@ -77,8 +75,8 @@ if __name__ == '__main__':
         pkgs = pk.GetUpdates(FILTER_INSTALLED)
         if pkgs: # We have updates
             for p in pkgs:
-                print p['id']
-                print pk.GetUpdateDetail(p['id'])
+                print p.id
+                print pk.GetUpdateDetail(p.id)
 
     if 'all' in cmd or "search-name" in cmd:
         print '---- SearchName() -----'
@@ -112,22 +110,22 @@ if __name__ == '__main__':
         print '---- InstallPackages() -----'
         pkg = pk.Resolve(FILTER_NOT_INSTALLED, 'yumex')
         if pkg:
-            print "Installing : %s " % pkg[0]['id']
-            pk.InstallPackages(pkg[0]['id'], cb)
+            print "Installing : %s " % pkg[0].id
+            pk.InstallPackages(pkg[0].id, cb)
 
     if "remove-packages" in cmd:
         print '---- RemovePackages() -----'
         pkg = pk.Resolve(FILTER_INSTALLED, 'yumex')
         if pkg:
-            print "Removing : %s " % pkg[0]['id']
-            pk.RemovePackages(pkg[0]['id'], cb)
+            print "Removing : %s " % pkg[0].id
+            pk.RemovePackages(pkg[0].id, cb)
 
     if "download-packages" in cmd:
         print '---- DownloadPackages() -----'
         pkg = pk.Resolve(FILTER_NOT_INSTALLED, 'yumex')
         if pkg:
-            print "Installing : %s " % pkg[0]['id']
-            print pk.DownloadPackages(pkg[0]['id'])
+            print "Installing : %s " % pkg[0].id
+            print pk.DownloadPackages(pkg[0].id)
 
     pk.SuggestDaemonQuit()
 
commit 7ac6aafa5c096543c366c5953507d7167dd12d15
Merge: 93a0f28... 6cf2155...
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Sep 20 09:00:45 2008 +0100

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit 6cf2155abeed2508dd91fff2204d3aa8215ae68c
Author: Marcin Banasiak <megabajt at pld-linux.org>
Date:   Fri Sep 19 23:28:27 2008 +0200

    add PLD to pk_get_distro_id

diff --git a/libpackagekit/pk-common.c b/libpackagekit/pk-common.c
index ce6f7f8..7b5bd79 100644
--- a/libpackagekit/pk-common.c
+++ b/libpackagekit/pk-common.c
@@ -133,6 +133,24 @@ pk_get_distro_id (void)
 		goto out;
 	}
 
+	/* check for PLD */
+	ret = g_file_get_contents ("/etc/pld-release", &contents, NULL, NULL);
+	if (ret) {
+		/* 2.99 PLD Linux (Th) */
+		split = g_strsplit (contents, " ", 0);
+		if (split == NULL)
+			goto out;
+
+		/* we can't get arch from /etc */
+		arch = pk_get_machine_type ();
+		if (arch == NULL)
+			goto out;
+
+		/* complete! */
+		distro = g_strdup_printf ("pld-%s-%s", split[0], arch);
+		goto out;
+	}
+
 out:
 	g_strfreev (split);
 	g_free (arch);
commit 93a0f283f285b964cc167880099a52e64325feb4
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Sep 19 17:55:03 2008 +0100

    trivial: fix whitespace

diff --git a/libpackagekit/pk-enum.h b/libpackagekit/pk-enum.h
index 259a4d4..ef28394 100644
--- a/libpackagekit/pk-enum.h
+++ b/libpackagekit/pk-enum.h
@@ -386,7 +386,7 @@ typedef enum {
 	PK_PROVIDES_ENUM_CODEC,
 	PK_PROVIDES_ENUM_MIMETYPE,
 	PK_PROVIDES_ENUM_FONT,
-    PK_PROVIDES_ENUM_HARDWARE_DRIVER,
+	PK_PROVIDES_ENUM_HARDWARE_DRIVER,
 	PK_PROVIDES_ENUM_UNKNOWN
 } PkProvidesEnum;
 
commit fa092fd7608a6ec98f0be96c45ba181b28ccadc9
Merge: 672f386... bb8d5fc...
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Sep 19 17:51:09 2008 +0100

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit bb8d5fc19f04ff7968983dcbf069106ffd6f935d
Author: Scott Reeves <sreeves at novell.com>
Date:   Fri Sep 19 10:35:31 2008 -0600

    Add PK_PROVIDES_ENUM_HARDWARE_DRIVER for backends to query for needed hardware drivers

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index 86ff0a0..417113f 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1750,10 +1750,11 @@ backend_what_provides_thread (PkBackend *backend)
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 	const gchar *search;
 	search = pk_backend_get_string (backend, "search");
+	PkProvidesEnum provides = (PkProvidesEnum) pk_backend_get_uint (backend, "provides");
 	zypp::Capability cap (search);
 	zypp::sat::WhatProvides prov (cap);
 
-	if(g_ascii_strcasecmp("drivers_for_attached_hardware", search) == 0) {
+	if((provides == PK_PROVIDES_ENUM_HARDWARE_DRIVER) || g_ascii_strcasecmp("drivers_for_attached_hardware", search) == 0) {
 
 
 		// solver run
diff --git a/libpackagekit/pk-enum.c b/libpackagekit/pk-enum.c
index c058714..c2b939a 100644
--- a/libpackagekit/pk-enum.c
+++ b/libpackagekit/pk-enum.c
@@ -306,6 +306,7 @@ static PkEnumMatch enum_provides[] = {
 	{PK_PROVIDES_ENUM_MODALIAS,		"modalias"},
 	{PK_PROVIDES_ENUM_CODEC,		"codec"},
 	{PK_PROVIDES_ENUM_MIMETYPE,		"mimetype"},
+	{PK_PROVIDES_ENUM_HARDWARE_DRIVER,	"driver"},
 	{PK_PROVIDES_ENUM_FONT,			"font"},
 	{0, NULL}
 };
diff --git a/libpackagekit/pk-enum.h b/libpackagekit/pk-enum.h
index 4e8da5f..259a4d4 100644
--- a/libpackagekit/pk-enum.h
+++ b/libpackagekit/pk-enum.h
@@ -386,6 +386,7 @@ typedef enum {
 	PK_PROVIDES_ENUM_CODEC,
 	PK_PROVIDES_ENUM_MIMETYPE,
 	PK_PROVIDES_ENUM_FONT,
+    PK_PROVIDES_ENUM_HARDWARE_DRIVER,
 	PK_PROVIDES_ENUM_UNKNOWN
 } PkProvidesEnum;
 
commit 672f3868c345a7383dfa0c4966b4a691a71f3988
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Sep 19 17:31:00 2008 +0100

    trivial: get rid of gtk-doc makefile warning

diff --git a/docs/api/Makefile.am b/docs/api/Makefile.am
index fbeb317..c3549b7 100644
--- a/docs/api/Makefile.am
+++ b/docs/api/Makefile.am
@@ -99,6 +99,3 @@ include $(top_srcdir)/gtk-doc.make
 # Other files to distribute
 EXTRA_DIST += version.xml.in
 
-clean-local :
-	rm -f *~ *.txt xml/* tmpl/* html/* *.bak *.out *.gcno PackageKit-scan.* PackageKit.types version.xml
-
commit 540a449fe70c09ad5bf152f6432fc344cf29f426
Merge: ada90ed... 979e718...
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Sep 19 17:01:08 2008 +0100

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit ada90ed9f7344b11890dafd5e0faa4a16c99833a
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Sep 19 16:55:57 2008 +0100

    trivial: add collections filter in the feature matrix

diff --git a/docs/html/pk-matrix.html b/docs/html/pk-matrix.html
index e52507a..10f5757 100644
--- a/docs/html/pk-matrix.html
+++ b/docs/html/pk-matrix.html
@@ -542,6 +542,20 @@
 <td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
 </tr>
 <tr>
+<td><b>Collections</b></td>
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- box -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- conary -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- opkg -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- pisi -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- poldek -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- smart -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- urpmi -->
+<td><img src="img/status-good.png" alt="[yes]"/></td><!-- yum -->
+<td><img src="img/status-bad.png" alt="[no]"/></td><!-- zypp -->
+</tr>
+<tr>
 <td><b>Arch</b></td>
 <td><img src="img/status-bad.png" alt="[no]"/></td><!-- apt -->
 <td><img src="img/status-bad.png" alt="[no]"/></td><!-- alpm -->
commit 979e718535596ac20a08b0ba91914d53fbc7255f
Merge: 60f0d08... e598b51...
Author: Richard Hughes <hughsie at localhost.localdomain>
Date:   Fri Sep 19 16:28:54 2008 +0100

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit 60f0d087f17f6887f498ecf033595e5f33575613
Author: Richard Hughes <hughsie at localhost.localdomain>
Date:   Fri Sep 19 16:28:42 2008 +0100

    yum: fix a potential problem if the package_id could not be found

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 94919db..9880f27 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -446,6 +446,11 @@ class PackageKitYumBackend(PackageKitBaseBackend,PackagekitPackage):
         for package in package_ids:
             self.percentage(percentage)
             pkg,inst = self._findPackage(package)
+            # if we couldn't map package_id -> pkg
+            if not pkg:
+                self.message(MESSAGE_COULD_NOT_FIND_PACKAGE,"Could not find the package %s" % package)
+                continue
+
             n,a,e,v,r = pkg.pkgtup
             packs = self.yumbase.pkgSack.searchNevra(n,e,v,r,a)
 


More information about the PackageKit-commit mailing list