aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/quectel/mm-modem-helpers-quectel.c16
-rw-r--r--src/plugins/quectel/tests/test-modem-helpers-quectel.c31
2 files changed, 32 insertions, 15 deletions
diff --git a/src/plugins/quectel/mm-modem-helpers-quectel.c b/src/plugins/quectel/mm-modem-helpers-quectel.c
index 7b0fe96d..126642ee 100644
--- a/src/plugins/quectel/mm-modem-helpers-quectel.c
+++ b/src/plugins/quectel/mm-modem-helpers-quectel.c
@@ -31,9 +31,10 @@ mm_quectel_parse_ctzu_test_response (const gchar *response,
gboolean *supports_enable_update_rtc,
GError **error)
{
- g_auto(GStrv) split = NULL;
- g_autoptr(GArray) modes = NULL;
- guint i;
+ g_auto(GStrv) split = NULL;
+ g_autoptr(GArray) modes = NULL;
+ GError *inner_error = NULL;
+ guint i;
/*
* Response may be:
@@ -57,9 +58,14 @@ mm_quectel_parse_ctzu_test_response (const gchar *response,
return FALSE;
}
- modes = mm_parse_uint_list (split[0], error);
+ modes = mm_parse_uint_list (split[0], &inner_error);
+ if (inner_error) {
+ g_propagate_prefixed_error (error, inner_error, "Failed to parse integer list in +CTZU test response: ");
+ return FALSE;
+ }
if (!modes) {
- g_prefix_error (error, "Failed to parse integer list in +CTZU test response: ");
+ g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Unexpected empty integer list in +CTZU test response: ");
return FALSE;
}
diff --git a/src/plugins/quectel/tests/test-modem-helpers-quectel.c b/src/plugins/quectel/tests/test-modem-helpers-quectel.c
index 6c695f00..43990e01 100644
--- a/src/plugins/quectel/tests/test-modem-helpers-quectel.c
+++ b/src/plugins/quectel/tests/test-modem-helpers-quectel.c
@@ -34,18 +34,23 @@ typedef struct {
gboolean expect_supports_disable;
gboolean expect_supports_enable;
gboolean expect_supports_enable_update_rtc;
+ gboolean expect_error;
} TestCtzuResponse;
static const TestCtzuResponse test_ctzu_response[] = {
- { "+CTZU: (0,1)", TRUE, TRUE, FALSE },
- { "+CTZU: (0,1,3)", TRUE, TRUE, TRUE },
+ { "+CTZU: ", FALSE, FALSE, FALSE, TRUE },
+ { "+CTZU: ()", FALSE, FALSE, FALSE, TRUE },
+ { "+CTZU: (,)", FALSE, FALSE, FALSE, TRUE },
+ { "+CTZU: (0,1)", TRUE, TRUE, FALSE, FALSE },
+ { "+CTZU: (0,1,3)", TRUE, TRUE, TRUE, FALSE },
};
static void
common_test_ctzu (const gchar *response,
gboolean expect_supports_disable,
gboolean expect_supports_enable,
- gboolean expect_supports_enable_update_rtc)
+ gboolean expect_supports_enable_update_rtc,
+ gboolean expect_error)
{
g_autoptr(GError) error = NULL;
gboolean res;
@@ -59,12 +64,17 @@ common_test_ctzu (const gchar *response,
&supports_enable,
&supports_enable_update_rtc,
&error);
- g_assert_no_error (error);
- g_assert (res);
-
- g_assert_cmpuint (expect_supports_disable, ==, supports_disable);
- g_assert_cmpuint (expect_supports_enable, ==, supports_enable);
- g_assert_cmpuint (expect_supports_enable_update_rtc, ==, supports_enable_update_rtc);
+ if (expect_error) {
+ g_assert (error);
+ g_assert (!res);
+ } else {
+ g_assert_no_error (error);
+ g_assert (res);
+
+ g_assert_cmpuint (expect_supports_disable, ==, supports_disable);
+ g_assert_cmpuint (expect_supports_enable, ==, supports_enable);
+ g_assert_cmpuint (expect_supports_enable_update_rtc, ==, supports_enable_update_rtc);
+ }
}
static void
@@ -76,7 +86,8 @@ test_ctzu (void)
common_test_ctzu (test_ctzu_response[i].response,
test_ctzu_response[i].expect_supports_disable,
test_ctzu_response[i].expect_supports_enable,
- test_ctzu_response[i].expect_supports_enable_update_rtc);
+ test_ctzu_response[i].expect_supports_enable_update_rtc,
+ test_ctzu_response[i].expect_error);
}
/*****************************************************************************/