From 1baf1f216d5a93c1d80b1c44aee5bbdc890f0e91 Mon Sep 17 00:00:00 2001 From: Ramesh Padmanabhaiah <22363102+codeforester@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:39:28 +0530 Subject: [PATCH] test: cover leading empty fields in string split --- lib/bash/str/README.md | 2 ++ lib/bash/str/tests/lib_str.bats | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/bash/str/README.md b/lib/bash/str/README.md index d268069..6894980 100644 --- a/lib/bash/str/README.md +++ b/lib/bash/str/README.md @@ -71,6 +71,8 @@ base_str_join joined "|" parts - Predicate helpers require exactly two arguments, return shell status, and do not print output. - `base_str_split` preserves empty fields between repeated delimiters. +- `base_str_split` preserves an empty first field when the input begins with the + separator. - `base_str_split` preserves a trailing empty field when the input ends with the separator. - `base_str_join` preserves empty array elements, including trailing empty elements. diff --git a/lib/bash/str/tests/lib_str.bats b/lib/bash/str/tests/lib_str.bats index 145f316..76720f7 100644 --- a/lib/bash/str/tests/lib_str.bats +++ b/lib/bash/str/tests/lib_str.bats @@ -248,6 +248,17 @@ EOF [ "${parts[2]}" = "" ] } +@test "base_str_split preserves a leading empty field before the first separator" { + local -a parts=() + + base_str_split parts ",alpha,beta" "," + + [ "${#parts[@]}" -eq 3 ] + [ "${parts[0]}" = "" ] + [ "${parts[1]}" = "alpha" ] + [ "${parts[2]}" = "beta" ] +} + @test "base_str_split can store results in an array named fields" { local -a fields=()