diff options
author | Thomas Haller <thaller@redhat.com> | 2019-08-25 14:29:13 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-08-26 13:05:50 +0200 |
commit | b0fc485e42061232945106db7d091fd9ff81454b (patch) | |
tree | 6c09b6736c06ba8b9c2c7e6379cf2dfff61f50d1 | |
parent | 3a0a79ab2d7d1f9bcadaceb81af6a3567369ce3b (diff) | |
download | NetworkManager-b0fc485e42061232945106db7d091fd9ff81454b.tar.gz |
keyfile/tests: add unit test showing bug where keyfile writer looses settings that are all-default
-rw-r--r-- | libnm-core/tests/test-setting.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libnm-core/tests/test-setting.c b/libnm-core/tests/test-setting.c index 3438aea99d..0a314562c3 100644 --- a/libnm-core/tests/test-setting.c +++ b/libnm-core/tests/test-setting.c @@ -3281,6 +3281,53 @@ test_parse_tc_handle (void) /*****************************************************************************/ +static void +test_empty_setting (void) +{ + gs_unref_object NMConnection *con = NULL; + gs_unref_object NMConnection *con2 = NULL; + NMSettingBluetooth *s_bt; + NMSettingGsm *s_gsm; + gs_unref_keyfile GKeyFile *kf = NULL; + gs_free_error GError *error = NULL; + + con = nmtst_create_minimal_connection ("bt-empty-gsm", "dca3192a-f2dc-48eb-b806-d0ff788f122c", NM_SETTING_BLUETOOTH_SETTING_NAME, NULL); + + s_bt = _nm_connection_get_setting (con, NM_TYPE_SETTING_BLUETOOTH); + g_object_set (s_bt, + NM_SETTING_BLUETOOTH_TYPE, "dun", + NM_SETTING_BLUETOOTH_BDADDR, "aa:bb:cc:dd:ee:ff", + NULL); + + s_gsm = NM_SETTING_GSM (nm_setting_gsm_new ()); + nm_connection_add_setting (con, NM_SETTING (s_gsm)); + + nmtst_connection_normalize (con); + + nmtst_assert_connection_verifies_without_normalization (con); + + kf = nm_keyfile_write (con, NULL, NULL, &error); + nmtst_assert_success (kf, error); + + /* the [gsm] setting was lost because it only has default values. + * As a result, the connection also became invalid. */ + + g_assert (!g_key_file_has_group (kf, "gsm")); + + con2 = nm_keyfile_read (kf, + "/ignored/current/working/directory/for/loading/relative/paths", + NULL, + NULL, + &error); + nmtst_assert_success (con2, error); + + g_assert (!nm_connection_get_setting (con2, NM_TYPE_SETTING_GSM)); + + nmtst_assert_connection_unnormalizable (con2, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_SETTING); +} + +/*****************************************************************************/ + NMTST_DEFINE (); int @@ -3368,5 +3415,7 @@ main (int argc, char **argv) g_test_add_func ("/libnm/test_team_setting", test_team_setting); + g_test_add_func ("/libnm/test_empty_setting", test_empty_setting); + return g_test_run (); } |