diff options
Diffstat (limited to 'test/t/unit/test_unit_split.py')
-rw-r--r-- | test/t/unit/test_unit_split.py | 90 |
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>" |