platform/chrome: cros_ec_proto: add Kunit test for empty payload
authorTzung-Bi Shih <tzungbi@kernel.org>
Mon, 18 Jul 2022 05:09:13 +0000 (05:09 +0000)
committerTzung-Bi Shih <tzungbi@kernel.org>
Wed, 20 Jul 2022 01:22:58 +0000 (01:22 +0000)
cros_ec_wait_until_complete() sends EC_CMD_GET_COMMS_STATUS which expects
to receive sizeof(struct ec_response_get_comms_status) from
cros_ec_xfer_command().

Add Kunit test and expect to receive an error code when
cros_ec_xfer_command() returns 0.

Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Reviewed-by: Guenter Roeck <groeck@chromium.org>
Link: https://lore.kernel.org/r/20220718050914.2267370-10-tzungbi@kernel.org
drivers/platform/chrome/cros_ec_proto_test.c

index fbb872040711b2c85888087a62a1d7085d6e59df..d76e09b8a36a49ae2770eefd22695005ea7b3940 100644 (file)
@@ -1934,6 +1934,36 @@ static void cros_ec_proto_test_cmd_xfer_in_progress_return_error(struct kunit *t
        KUNIT_EXPECT_EQ(test, cros_kunit_ec_pkt_xfer_mock_called, 2);
 }
 
+static void cros_ec_proto_test_cmd_xfer_in_progress_return0(struct kunit *test)
+{
+       struct cros_ec_proto_test_priv *priv = test->priv;
+       struct cros_ec_device *ec_dev = &priv->ec_dev;
+       struct ec_xfer_mock *mock;
+       int ret;
+       struct cros_ec_command msg;
+
+       memset(&msg, 0, sizeof(msg));
+
+       ec_dev->pkt_xfer = cros_kunit_ec_pkt_xfer_mock;
+
+       /* For the first host command to return EC_RES_IN_PROGRESS. */
+       {
+               mock = cros_kunit_ec_xfer_mock_addx(test, 0, EC_RES_IN_PROGRESS, 0);
+               KUNIT_ASSERT_PTR_NE(test, mock, NULL);
+       }
+
+       /* For EC_CMD_GET_COMMS_STATUS. */
+       {
+               mock = cros_kunit_ec_xfer_mock_add(test, 0);
+               KUNIT_ASSERT_PTR_NE(test, mock, NULL);
+       }
+
+       ret = cros_ec_cmd_xfer(ec_dev, &msg);
+       KUNIT_EXPECT_EQ(test, ret, -EPROTO);
+
+       KUNIT_EXPECT_EQ(test, cros_kunit_ec_pkt_xfer_mock_called, 2);
+}
+
 static void cros_ec_proto_test_release(struct device *dev)
 {
 }
@@ -2013,6 +2043,7 @@ static struct kunit_case cros_ec_proto_test_cases[] = {
        KUNIT_CASE(cros_ec_proto_test_cmd_xfer_in_progress_retries_status_processing),
        KUNIT_CASE(cros_ec_proto_test_cmd_xfer_in_progress_xfer_error),
        KUNIT_CASE(cros_ec_proto_test_cmd_xfer_in_progress_return_error),
+       KUNIT_CASE(cros_ec_proto_test_cmd_xfer_in_progress_return0),
        {}
 };