mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
leds: led-test: Provide tests for the lookup and get infrastructure
This API allows providers to offer an specific LED to be looked-up by a consumer. Consumers are then able to describe the aforementioned LED and take a reference on it. For convenience, we're testing both sides of the API in just one test function here. In reality, both the provider and the consumer would be logistically orthogonal. CMD: tools/testing/kunit/kunit.py run --kunitconfig drivers/leds RESULTS: [16:38:57] Configuring KUnit Kernel ... [16:38:57] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=20 [16:39:02] Starting KUnit Kernel (1/1)... [16:39:02] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [16:39:03] ===================== led (2 subtests) ===================== [16:39:03] [PASSED] led_test_class_register [16:39:03] [PASSED] led_test_class_add_lookup_and_get [16:39:03] ======================= [PASSED] led ======================= [16:39:03] ============================================================ [16:39:03] Testing complete. Ran 2 tests: passed: 2 [16:39:03] Elapsed time: 6.255s total, 0.001s configuring, 5.131s building, 1.106s running Link: https://lore.kernel.org/r/20250501081918.3621432-3-lee@kernel.org Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
eb58933b78
commit
cfa40f29df
1 changed files with 29 additions and 0 deletions
|
@ -57,8 +57,37 @@ static void led_test_class_register(struct kunit *test)
|
||||||
KUNIT_EXPECT_EQ(test, ret, -EEXIST);
|
KUNIT_EXPECT_EQ(test, ret, -EEXIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void led_test_class_add_lookup_and_get(struct kunit *test)
|
||||||
|
{
|
||||||
|
struct led_test_ddata *ddata = test->priv;
|
||||||
|
struct led_classdev *cdev = &ddata->cdev, *cdev_get;
|
||||||
|
struct device *dev = ddata->dev;
|
||||||
|
struct led_lookup_data lookup;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* First, register a LED class device */
|
||||||
|
cdev->name = "led-test";
|
||||||
|
ret = devm_led_classdev_register(dev, cdev);
|
||||||
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
/* Then make the LED available for lookup */
|
||||||
|
lookup.provider = cdev->name;
|
||||||
|
lookup.dev_id = dev_name(dev);
|
||||||
|
lookup.con_id = "led-test-1";
|
||||||
|
led_add_lookup(&lookup);
|
||||||
|
|
||||||
|
/* Finally, attempt to look it up via the API - imagine this was an orthogonal driver */
|
||||||
|
cdev_get = devm_led_get(dev, "led-test-1");
|
||||||
|
KUNIT_ASSERT_FALSE(test, IS_ERR(cdev_get));
|
||||||
|
|
||||||
|
KUNIT_EXPECT_STREQ(test, cdev_get->name, cdev->name);
|
||||||
|
|
||||||
|
led_remove_lookup(&lookup);
|
||||||
|
}
|
||||||
|
|
||||||
static struct kunit_case led_test_cases[] = {
|
static struct kunit_case led_test_cases[] = {
|
||||||
KUNIT_CASE(led_test_class_register),
|
KUNIT_CASE(led_test_class_register),
|
||||||
|
KUNIT_CASE(led_test_class_add_lookup_and_get),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue