ifnet: allow testcase to remove backup files (fixes distcheck)
Can't leave the backup files lying around when doing 'make distcheck', so when backup up a file, return the backup file path so that the caller can (optionally) remove it.
This commit is contained in:
@@ -2808,6 +2808,7 @@ ifnet_update_parsers_by_connection (NMConnection *connection,
|
||||
const char *config_file,
|
||||
const char *wpa_file,
|
||||
gchar **out_new_name,
|
||||
gchar **out_backup,
|
||||
GError **error)
|
||||
{
|
||||
NMSettingConnection *s_con;
|
||||
@@ -2891,7 +2892,7 @@ ifnet_update_parsers_by_connection (NMConnection *connection,
|
||||
/* connection id will be displayed in nm-applet */
|
||||
update_connection_id (connection, conn_name);
|
||||
|
||||
success = ifnet_flush_to_file (config_file);
|
||||
success = ifnet_flush_to_file (config_file, out_backup);
|
||||
if (success)
|
||||
wpa_flush_to_file (wpa_file);
|
||||
|
||||
@@ -2905,12 +2906,13 @@ out:
|
||||
gboolean
|
||||
ifnet_delete_connection_in_parsers (const char *conn_name,
|
||||
const char *config_file,
|
||||
const char *wpa_file)
|
||||
const char *wpa_file,
|
||||
gchar **out_backup)
|
||||
{
|
||||
gboolean result = FALSE;
|
||||
|
||||
ifnet_delete_network (conn_name);
|
||||
result = ifnet_flush_to_file (config_file);
|
||||
result = ifnet_flush_to_file (config_file, out_backup);
|
||||
if (result) {
|
||||
/* connection may not have security information
|
||||
* so simply ignore the return value*/
|
||||
@@ -3005,6 +3007,7 @@ char *
|
||||
ifnet_add_new_connection (NMConnection *connection,
|
||||
const char *config_file,
|
||||
const char *wpa_file,
|
||||
gchar **out_backup,
|
||||
GError **error)
|
||||
{
|
||||
NMSettingConnection *s_con;
|
||||
@@ -3048,6 +3051,7 @@ ifnet_add_new_connection (NMConnection *connection,
|
||||
config_file,
|
||||
wpa_file,
|
||||
NULL,
|
||||
out_backup,
|
||||
error);
|
||||
}
|
||||
|
||||
|
@@ -34,14 +34,17 @@ gboolean ifnet_update_parsers_by_connection (NMConnection *connection,
|
||||
const char *config_file,
|
||||
const char *wpa_file,
|
||||
gchar **out_new_name,
|
||||
gchar **out_backup,
|
||||
GError **error);
|
||||
|
||||
gboolean ifnet_delete_connection_in_parsers (const char *conn_name,
|
||||
const char *config_file,
|
||||
const char *wpa_file);
|
||||
const char *wpa_file,
|
||||
gchar **out_backup);
|
||||
|
||||
char * ifnet_add_new_connection (NMConnection *connection,
|
||||
const char *config_file,
|
||||
const char *wpa_file,
|
||||
gchar **out_backup,
|
||||
GError ** error);
|
||||
#endif
|
||||
|
@@ -590,7 +590,7 @@ done:
|
||||
}
|
||||
|
||||
gboolean
|
||||
ifnet_flush_to_file (const char *config_file)
|
||||
ifnet_flush_to_file (const char *config_file, gchar **out_backup)
|
||||
{
|
||||
GIOChannel *channel;
|
||||
GError **error = NULL;
|
||||
@@ -600,18 +600,20 @@ ifnet_flush_to_file (const char *config_file)
|
||||
gchar *out_line = NULL;
|
||||
gsize bytes_written;
|
||||
gboolean result = FALSE;
|
||||
gchar *backup;
|
||||
|
||||
if (!net_parser_data_changed)
|
||||
return TRUE;
|
||||
if (!conn_table || !global_settings_table)
|
||||
return FALSE;
|
||||
|
||||
backup_file (config_file);
|
||||
backup = backup_file (config_file);
|
||||
|
||||
channel = g_io_channel_new_file (config_file, "w", NULL);
|
||||
if (!channel) {
|
||||
PLUGIN_WARN (IFNET_PLUGIN_NAME,
|
||||
"Can't open file %s for writing", config_file);
|
||||
g_free (backup);
|
||||
return FALSE;
|
||||
}
|
||||
g_hash_table_iter_init (&iter, global_settings_table);
|
||||
@@ -714,7 +716,13 @@ ifnet_flush_to_file (const char *config_file)
|
||||
}
|
||||
result = TRUE;
|
||||
net_parser_data_changed = FALSE;
|
||||
|
||||
done:
|
||||
if (result && out_backup)
|
||||
*out_backup = backup;
|
||||
else
|
||||
g_free (backup);
|
||||
|
||||
g_io_channel_shutdown (channel, FALSE, NULL);
|
||||
g_io_channel_unref (channel);
|
||||
return result;
|
||||
|
@@ -38,7 +38,7 @@ const char *ifnet_get_global_setting (const char *group, const char *key);
|
||||
gboolean ifnet_has_network (const char *conn_name);
|
||||
|
||||
/* Writer functions */
|
||||
gboolean ifnet_flush_to_file (const char *config_file);
|
||||
gboolean ifnet_flush_to_file (const char *config_file, gchar **out_backup);
|
||||
void ifnet_set_data (const char *conn_name, const char *key, const char *value);
|
||||
gboolean ifnet_add_network (const char *name, const char *type);
|
||||
gboolean ifnet_delete_network (const char *conn_name);
|
||||
|
@@ -950,7 +950,7 @@ get_dhcp_hostname_and_client_id (char **hostname, char **client_id)
|
||||
g_free (contents);
|
||||
}
|
||||
|
||||
void backup_file (const gchar* target)
|
||||
gchar *backup_file (const gchar* target)
|
||||
{
|
||||
GFile *source, *backup;
|
||||
gchar* backup_path;
|
||||
@@ -961,8 +961,11 @@ void backup_file (const gchar* target)
|
||||
backup = g_file_new_for_path (backup_path);
|
||||
|
||||
g_file_copy (source, backup, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, error);
|
||||
if (error && *error)
|
||||
if (error && *error) {
|
||||
PLUGIN_WARN (IFNET_PLUGIN_NAME, "Backup failed: %s", (*error)->message);
|
||||
|
||||
g_free (backup_path);
|
||||
backup_path = NULL;
|
||||
}
|
||||
|
||||
return backup_path;
|
||||
}
|
||||
|
@@ -77,5 +77,5 @@ gboolean is_true (const char *str);
|
||||
|
||||
void get_dhcp_hostname_and_client_id (char **hostname, char **client_id);
|
||||
|
||||
void backup_file (const gchar* target);
|
||||
gchar *backup_file (const gchar* target);
|
||||
#endif
|
||||
|
@@ -108,6 +108,7 @@ commit_changes (NMSettingsConnection *connection,
|
||||
CONF_NET_FILE,
|
||||
WPA_SUPPLICANT_CONF,
|
||||
&new_name,
|
||||
NULL,
|
||||
&error)) {
|
||||
PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Failed to update %s", priv->conn_name);
|
||||
reload_parsers ();
|
||||
@@ -135,8 +136,7 @@ do_delete (NMSettingsConnection *connection,
|
||||
NMIfnetConnectionPrivate *priv = NM_IFNET_CONNECTION_GET_PRIVATE (connection);
|
||||
|
||||
g_signal_emit (connection, signals[IFNET_CANCEL_MONITORS], 0);
|
||||
if (!ifnet_delete_connection_in_parsers
|
||||
(priv->conn_name, CONF_NET_FILE, WPA_SUPPLICANT_CONF)) {
|
||||
if (!ifnet_delete_connection_in_parsers (priv->conn_name, CONF_NET_FILE, WPA_SUPPLICANT_CONF, NULL)) {
|
||||
PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Failed to delete %s",
|
||||
priv->conn_name);
|
||||
reload_parsers ();
|
||||
|
@@ -360,7 +360,7 @@ add_connection (NMSystemConfigInterface *config,
|
||||
nm_connection_for_each_setting_value (source, check_flagged_secrets, &has_flagged_secrets);
|
||||
|
||||
if (!has_flagged_secrets) {
|
||||
conn_name = ifnet_add_new_connection (source, CONF_NET_FILE, WPA_SUPPLICANT_CONF, error);
|
||||
conn_name = ifnet_add_new_connection (source, CONF_NET_FILE, WPA_SUPPLICANT_CONF, NULL, error);
|
||||
if (conn_name)
|
||||
connection = nm_ifnet_connection_new (conn_name, source);
|
||||
reload_connections (config);
|
||||
|
@@ -305,6 +305,16 @@ test_new_connection ()
|
||||
g_object_unref (connection);
|
||||
}
|
||||
|
||||
static void
|
||||
kill_backup (char **path)
|
||||
{
|
||||
if (path) {
|
||||
unlink (*path);
|
||||
g_free (*path);
|
||||
*path = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#define NET_GEN_NAME "net.generate"
|
||||
#define SUP_GEN_NAME "wpa_supplicant.conf.generate"
|
||||
|
||||
@@ -314,6 +324,7 @@ test_update_connection (const char *basepath)
|
||||
GError *error = NULL;
|
||||
NMConnection *connection;
|
||||
gboolean success;
|
||||
char *backup = NULL;
|
||||
|
||||
connection = ifnet_update_connection_from_config_block ("eth0", basepath, &error);
|
||||
ASSERT (connection != NULL, "get connection",
|
||||
@@ -324,7 +335,9 @@ test_update_connection (const char *basepath)
|
||||
NET_GEN_NAME,
|
||||
SUP_GEN_NAME,
|
||||
NULL,
|
||||
&backup,
|
||||
&error);
|
||||
kill_backup (&backup);
|
||||
ASSERT (success, "update connection", "update connection failed %s", "eth0");
|
||||
g_object_unref (connection);
|
||||
|
||||
@@ -336,7 +349,9 @@ test_update_connection (const char *basepath)
|
||||
NET_GEN_NAME,
|
||||
SUP_GEN_NAME,
|
||||
NULL,
|
||||
&backup,
|
||||
&error);
|
||||
kill_backup (&backup);
|
||||
ASSERT (success, "update connection", "update connection failed %s", "0xab3ace");
|
||||
g_object_unref (connection);
|
||||
|
||||
@@ -345,17 +360,21 @@ test_update_connection (const char *basepath)
|
||||
}
|
||||
|
||||
static void
|
||||
test_add_connection ()
|
||||
test_add_connection (const char *basepath)
|
||||
{
|
||||
NMConnection *connection;
|
||||
char *backup = NULL;
|
||||
|
||||
connection = ifnet_update_connection_from_config_block ("eth0", NULL, NULL);
|
||||
ASSERT (ifnet_add_new_connection (connection, NET_GEN_NAME, SUP_GEN_NAME, NULL),
|
||||
connection = ifnet_update_connection_from_config_block ("eth0", basepath, NULL);
|
||||
ASSERT (ifnet_add_new_connection (connection, NET_GEN_NAME, SUP_GEN_NAME, &backup, NULL),
|
||||
"add connection", "add connection failed: %s", "eth0");
|
||||
kill_backup (&backup);
|
||||
g_object_unref (connection);
|
||||
connection = ifnet_update_connection_from_config_block ("myxjtu2", NULL, NULL);
|
||||
ASSERT (ifnet_add_new_connection (connection, NET_GEN_NAME, SUP_GEN_NAME, NULL),
|
||||
|
||||
connection = ifnet_update_connection_from_config_block ("myxjtu2", basepath, NULL);
|
||||
ASSERT (ifnet_add_new_connection (connection, NET_GEN_NAME, SUP_GEN_NAME, &backup, NULL),
|
||||
"add connection", "add connection failed: %s", "myxjtu2");
|
||||
kill_backup (&backup);
|
||||
g_object_unref (connection);
|
||||
|
||||
unlink (NET_GEN_NAME);
|
||||
@@ -367,20 +386,24 @@ test_delete_connection ()
|
||||
{
|
||||
GError *error = NULL;
|
||||
NMConnection *connection;
|
||||
char *backup = NULL;
|
||||
|
||||
connection = ifnet_update_connection_from_config_block ("eth7", NULL, &error);
|
||||
ASSERT (connection != NULL, "get connection",
|
||||
"get connection failed: %s",
|
||||
error ? error->message : "None");
|
||||
ASSERT (ifnet_delete_connection_in_parsers ("eth7", NET_GEN_NAME, SUP_GEN_NAME),
|
||||
ASSERT (ifnet_delete_connection_in_parsers ("eth7", NET_GEN_NAME, SUP_GEN_NAME, &backup),
|
||||
"delete connection", "delete connection failed: %s", "eth7");
|
||||
kill_backup (&backup);
|
||||
g_object_unref (connection);
|
||||
|
||||
connection = ifnet_update_connection_from_config_block ("qiaomuf", NULL, &error);
|
||||
ASSERT (connection != NULL, "get connection",
|
||||
"get connection failed: %s",
|
||||
error ? error->message : "None");
|
||||
ASSERT (ifnet_delete_connection_in_parsers ("qiaomuf", NET_GEN_NAME, SUP_GEN_NAME),
|
||||
ASSERT (ifnet_delete_connection_in_parsers ("qiaomuf", NET_GEN_NAME, SUP_GEN_NAME, &backup),
|
||||
"delete connection", "delete connection failed: %s", "qiaomuf");
|
||||
kill_backup (&backup);
|
||||
g_object_unref (connection);
|
||||
|
||||
unlink (NET_GEN_NAME);
|
||||
@@ -429,7 +452,7 @@ main (int argc, char **argv)
|
||||
test_convert_ipv4_routes_block ();
|
||||
test_new_connection ();
|
||||
test_update_connection (argv[1]);
|
||||
test_add_connection ();
|
||||
test_add_connection (argv[1]);
|
||||
test_delete_connection ();
|
||||
test_missing_config ();
|
||||
|
||||
|
Reference in New Issue
Block a user