From 980bd2ffbbe36356db2fe07d8260e7e2bfd09e4b Mon Sep 17 00:00:00 2001 From: Bartok9 Date: Wed, 22 Jul 2026 19:04:31 -0400 Subject: [PATCH] test(utils): cover lists.first and as_list helpers Add offline unit coverage for the small list normalization helpers used across the server and runtime paths. Signed-off-by: Bartok9 --- tests/_utils/test_lists.py | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/_utils/test_lists.py diff --git a/tests/_utils/test_lists.py b/tests/_utils/test_lists.py new file mode 100644 index 00000000000..a3f9d9e6a59 --- /dev/null +++ b/tests/_utils/test_lists.py @@ -0,0 +1,44 @@ +# Copyright 2026 Marimo. All rights reserved. +from __future__ import annotations + +from marimo._utils.lists import as_list, first + + +def test_first_from_list() -> None: + assert first([10, 20, 30]) == 10 + + +def test_first_from_tuple() -> None: + assert first((7,)) == 7 + + +def test_first_non_iterable_returns_value() -> None: + assert first(42) == 42 + + +def test_first_empty_iterable_raises() -> None: + raised = False + try: + first([]) + except StopIteration: + raised = True + assert raised + + +def test_first_string_yields_first_character() -> None: + # str is Iterable[str]; first returns the first code unit. + assert first("abc") == "a" + + +def test_as_list_none() -> None: + assert as_list(None) == [] + + +def test_as_list_already_list() -> None: + value = [1, 2] + assert as_list(value) == [1, 2] + + +def test_as_list_scalar() -> None: + assert as_list("x") == ["x"] + assert as_list(0) == [0]