mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-08 01:14:43 +00:00
Allow overriding the location of the provider offline files for test suite
This commit is contained in:
parent
5c1999b4ec
commit
661cd75b41
@ -36,6 +36,13 @@
|
|||||||
|
|
||||||
static void fu_provider_finalize (GObject *object);
|
static void fu_provider_finalize (GObject *object);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FuProviderPrivate:
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
gchar *offline_dir;
|
||||||
|
} FuProviderPrivate;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SIGNAL_DEVICE_ADDED,
|
SIGNAL_DEVICE_ADDED,
|
||||||
SIGNAL_DEVICE_REMOVED,
|
SIGNAL_DEVICE_REMOVED,
|
||||||
@ -45,7 +52,8 @@ enum {
|
|||||||
|
|
||||||
static guint signals[SIGNAL_LAST] = { 0 };
|
static guint signals[SIGNAL_LAST] = { 0 };
|
||||||
|
|
||||||
G_DEFINE_TYPE (FuProvider, fu_provider, G_TYPE_OBJECT)
|
G_DEFINE_TYPE_WITH_PRIVATE (FuProvider, fu_provider, G_TYPE_OBJECT)
|
||||||
|
#define GET_PRIVATE(o) (fu_provider_get_instance_private (o))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fu_provider_offline_invalidate:
|
* fu_provider_offline_invalidate:
|
||||||
@ -118,9 +126,10 @@ fu_provider_schedule_update (FuProvider *provider,
|
|||||||
GBytes *blob_cab,
|
GBytes *blob_cab,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
FuProviderPrivate *priv = GET_PRIVATE (provider);
|
||||||
|
|
||||||
gchar tmpname[] = {"XXXXXX.cap"};
|
gchar tmpname[] = {"XXXXXX.cap"};
|
||||||
guint i;
|
guint i;
|
||||||
g_autofree gchar *dirname = NULL;
|
|
||||||
g_autofree gchar *filename = NULL;
|
g_autofree gchar *filename = NULL;
|
||||||
g_autoptr(FwupdResult) res_tmp = NULL;
|
g_autoptr(FwupdResult) res_tmp = NULL;
|
||||||
g_autoptr(FuPending) pending = NULL;
|
g_autoptr(FuPending) pending = NULL;
|
||||||
@ -139,8 +148,7 @@ fu_provider_schedule_update (FuProvider *provider,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* create directory */
|
/* create directory */
|
||||||
dirname = g_build_filename (LOCALSTATEDIR, "lib", "fwupd", NULL);
|
file = g_file_new_for_path (priv->offline_dir);
|
||||||
file = g_file_new_for_path (dirname);
|
|
||||||
if (!g_file_query_exists (file, NULL)) {
|
if (!g_file_query_exists (file, NULL)) {
|
||||||
if (!g_file_make_directory_with_parents (file, NULL, error))
|
if (!g_file_make_directory_with_parents (file, NULL, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -149,7 +157,7 @@ fu_provider_schedule_update (FuProvider *provider,
|
|||||||
/* get a random filename */
|
/* get a random filename */
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
tmpname[i] = g_random_int_range ('A', 'Z');
|
tmpname[i] = g_random_int_range ('A', 'Z');
|
||||||
filename = g_build_filename (dirname, tmpname, NULL);
|
filename = g_build_filename (priv->offline_dir, tmpname, NULL);
|
||||||
|
|
||||||
/* just copy to the temp file */
|
/* just copy to the temp file */
|
||||||
fu_provider_set_status (provider, FWUPD_STATUS_SCHEDULING);
|
fu_provider_set_status (provider, FWUPD_STATUS_SCHEDULING);
|
||||||
@ -493,6 +501,26 @@ fu_provider_class_init (FuProviderClass *klass)
|
|||||||
static void
|
static void
|
||||||
fu_provider_init (FuProvider *provider)
|
fu_provider_init (FuProvider *provider)
|
||||||
{
|
{
|
||||||
|
FuProviderPrivate *priv = GET_PRIVATE (provider);
|
||||||
|
const gchar *tmp;
|
||||||
|
|
||||||
|
/* allow this to be overidden for testing */
|
||||||
|
priv->offline_dir = g_build_filename (LOCALSTATEDIR, "lib", "fwupd", NULL);
|
||||||
|
tmp = g_getenv ("FWUPD_OFFLINE_DIR");
|
||||||
|
if (tmp != NULL)
|
||||||
|
fu_provider_set_dir (provider, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fu_provider_set_dir:
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
fu_provider_set_dir (FuProvider *provider, const gchar *offline_dir)
|
||||||
|
{
|
||||||
|
FuProviderPrivate *priv = GET_PRIVATE (provider);
|
||||||
|
g_free (priv->offline_dir);
|
||||||
|
priv->offline_dir = g_strdup (offline_dir);
|
||||||
|
g_mkdir_with_parents (offline_dir, 0700);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -113,6 +113,9 @@ gboolean fu_provider_get_results (FuProvider *provider,
|
|||||||
GError **error);
|
GError **error);
|
||||||
GChecksumType fu_provider_get_checksum_type (FuProviderVerifyFlags flags);
|
GChecksumType fu_provider_get_checksum_type (FuProviderVerifyFlags flags);
|
||||||
|
|
||||||
|
void fu_provider_set_dir (FuProvider *provider,
|
||||||
|
const gchar *offline_dir);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __FU_PROVIDER_H */
|
#endif /* __FU_PROVIDER_H */
|
||||||
|
@ -192,6 +192,7 @@ fu_provider_func (void)
|
|||||||
g_autoptr(GMappedFile) mapped_file = NULL;
|
g_autoptr(GMappedFile) mapped_file = NULL;
|
||||||
|
|
||||||
/* create a fake device */
|
/* create a fake device */
|
||||||
|
g_setenv("FWUPD_OFFLINE_DIR", "/tmp/fwupd-self-test/var/lib/fwupd", FALSE);
|
||||||
provider = fu_provider_fake_new ();
|
provider = fu_provider_fake_new ();
|
||||||
g_signal_connect (provider, "device-added",
|
g_signal_connect (provider, "device-added",
|
||||||
G_CALLBACK (_provider_device_added_cb),
|
G_CALLBACK (_provider_device_added_cb),
|
||||||
|
Loading…
Reference in New Issue
Block a user