diff --git a/.assets/unit-tests.sh b/.assets/unit-tests.sh index 18880b3b..83015d10 100644 --- a/.assets/unit-tests.sh +++ b/.assets/unit-tests.sh @@ -103,6 +103,11 @@ _run_get_filename_extension() { output=$(_get_filename_extension "$input") _test_equal "$input" "$output" "$expected_output" + input=".File.txt" + expected_output=".txt" + output=$(_get_filename_extension "$input") + _test_equal "$input" "$output" "$expected_output" + input="File.tar.gz" expected_output=".tar.gz" output=$(_get_filename_extension "$input") @@ -128,6 +133,16 @@ _run_get_filename_extension() { output=$(_get_filename_extension "$input") _test_equal "$input" "$output" "$expected_output" + input="/tmp/.File.txt" + expected_output=".txt" + output=$(_get_filename_extension "$input") + _test_equal "$input" "$output" "$expected_output" + + input="/tmp/.File" + expected_output="" + output=$(_get_filename_extension "$input") + _test_equal "$input" "$output" "$expected_output" + input="/tmp/File.thisisnotanextension" expected_output="" output=$(_get_filename_extension "$input") @@ -230,6 +245,11 @@ _run_strip_filename_extension() { output=$(_strip_filename_extension "$input") _test_equal "$input" "$output" "$expected_output" + input=".File.txt" + expected_output=".File" + output=$(_strip_filename_extension "$input") + _test_equal "$input" "$output" "$expected_output" + input="File.tar.gz" expected_output="File" output=$(_strip_filename_extension "$input") @@ -255,6 +275,16 @@ _run_strip_filename_extension() { output=$(_strip_filename_extension "$input") _test_equal "$input" "$output" "$expected_output" + input="/tmp/.File.txt" + expected_output="/tmp/.File" + output=$(_strip_filename_extension "$input") + _test_equal "$input" "$output" "$expected_output" + + input="/tmp/.File" + expected_output="/tmp/.File" + output=$(_strip_filename_extension "$input") + _test_equal "$input" "$output" "$expected_output" + input="/tmp/File.thisisnotanextension" expected_output="/tmp/File.thisisnotanextension" output=$(_strip_filename_extension "$input") diff --git a/common-functions.sh b/common-functions.sh index fdb1f62e..4fcbfe26 100644 --- a/common-functions.sh +++ b/common-functions.sh @@ -543,6 +543,8 @@ _get_filename_dir() { _get_filename_extension() { local filename=$1 + filename=$(sed -E "s|.*/(\.)*||g" <<<"$filename") + filename=$(sed -E "s|^(\.)*||g" <<<"$filename") grep --ignore-case --only-matching --perl-regexp "(\.tar)?\.[a-z0-9_~-]{0,15}$" <<<"$filename" || true } @@ -1326,8 +1328,16 @@ _str_remove_empty_tokens() { _strip_filename_extension() { local filename=$1 + local extension="" + extension=$(_get_filename_extension "$filename") - sed -r "s|(\.tar)?\.[a-z0-9_~-]{0,15}$||i" <<<"$filename" + if [[ -z "$extension" ]]; then + printf "%s" "$filename" + return 0 + fi + + local len_extension=${#extension} + printf "%s" "${filename::-len_extension}" } _text_remove_empty_lines() {