summaryrefslogtreecommitdiffstats
path: root/test/t/unit/test_unit_split.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/t/unit/test_unit_split.py')
-rw-r--r--test/t/unit/test_unit_split.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/test/t/unit/test_unit_split.py b/test/t/unit/test_unit_split.py
new file mode 100644
index 0000000..d1f228e
--- /dev/null
+++ b/test/t/unit/test_unit_split.py
@@ -0,0 +1,90 @@
+import pytest
+
+from conftest import assert_bash_exec, bash_env_saved
+
+
+@pytest.mark.bashcomp(
+ cmd=None, ignore_env=r"^\+declare -f (dump_array|__tester)$"
+)
+class TestUtilSplit:
+ @pytest.fixture
+ def functions(self, bash):
+ assert_bash_exec(
+ bash, "dump_array() { printf '<%s>' \"${arr[@]}\"; echo; }"
+ )
+ assert_bash_exec(
+ bash,
+ '__tester() { local -a arr=(00); _comp_split "${@:1:$#-1}" arr "${@:$#}"; dump_array; }',
+ )
+
+ def test_1(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester '12 34 56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"
+
+ def test_2(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester $'12\\n34\\n56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"
+
+ def test_3(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester '12:34:56'", want_output=True
+ )
+ assert output.strip() == "<12:34:56>"
+
+ def test_option_F_1(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester -F : '12:34:56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"
+
+ def test_option_F_2(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester -F : '12 34 56'", want_output=True
+ )
+ assert output.strip() == "<12 34 56>"
+
+ def test_option_l_1(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester -l $'12\\n34\\n56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"
+
+ def test_option_l_2(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester -l '12 34 56'", want_output=True
+ )
+ assert output.strip() == "<12 34 56>"
+
+ def test_option_a_1(self, bash, functions):
+ output = assert_bash_exec(
+ bash, "__tester -aF : '12:34:56'", want_output=True
+ )
+ assert output.strip() == "<00><12><34><56>"
+
+ def test_protect_from_failglob(self, bash, functions):
+ with bash_env_saved(bash) as bash_env:
+ bash_env.shopt("failglob", True)
+ output = assert_bash_exec(
+ bash, "__tester -F '*' '12*34*56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"
+
+ def test_protect_from_nullglob(self, bash, functions):
+ with bash_env_saved(bash) as bash_env:
+ bash_env.shopt("nullglob", True)
+ output = assert_bash_exec(
+ bash, "__tester -F '*' '12*34*56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"
+
+ def test_protect_from_IFS(self, bash, functions):
+ with bash_env_saved(bash) as bash_env:
+ bash_env.write_variable("IFS", "34")
+ output = assert_bash_exec(
+ bash, "__tester '12 34 56'", want_output=True
+ )
+ assert output.strip() == "<12><34><56>"