From e993dd1a84b37977154074d059c044bfc71be0dc Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Sun, 25 Oct 2020 20:10:11 -0400
Subject: [PATCH] Implement tests for directory functions

---
 tests/test_directory_functions.sh | 165 ++++++++++++++++++++++++++++++
 1 file changed, 165 insertions(+)
 create mode 100755 tests/test_directory_functions.sh

diff --git a/tests/test_directory_functions.sh b/tests/test_directory_functions.sh
new file mode 100755
index 0000000..f6c49bf
--- /dev/null
+++ b/tests/test_directory_functions.sh
@@ -0,0 +1,165 @@
+#!/usr/bin/env bash
+###
+ # Tests for the "Directory Functions" section of the utils script.
+ ##
+
+
+setup () {
+    current_dir="$(cd "$(dirname "$(pwd)")"; pwd -P)/$(basename "$(pwd)")"
+    absolute_path=/etc/systemd/system
+    absolute_parent=/etc/systemd
+    symlink_path=/etc/httpd/modules
+    abs_symlink_path=/usr/lib/httpd/modules
+}
+
+
+@test "Directory Function - get_absolute_path - Relative Current Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    # Check current dir.
+    [[ "${current_dir}" == *"/bash_utils/tests" ]]
+
+    # Run test.
+    get_absolute_path ./tests
+    [[ "${return_value}" == "${current_dir}" ]]
+}
+
+
+@test "Directory Function - get_absolute_path - Relative Current File" {
+    # Import utils script.
+    source ../utils.sh
+
+    # Check current dir.
+    [[ "${current_dir}" == *"/bash_utils/tests" ]]
+
+    # Run test.
+    get_absolute_path ./tests/test_directory_functions.sh
+    [[ "${return_value}" == "${current_dir}/test_directory_functions.sh" ]]
+}
+
+
+@test "Directory Function - get_absolute_path - Absolute Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    get_absolute_path ${absolute_path}
+    [[ "${return_value}" == "${absolute_path}" ]]
+}
+
+
+@test "Directory Function - get_absolute_path - Relative Parent Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    cd ${absolute_path}
+    get_absolute_path ../
+    [[ "${return_value}" == "${absolute_parent}" ]]
+}
+
+
+@test "Directory Function - get_absolute_path - Relative Self Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    cd ${absolute_path}
+    get_absolute_path ./
+    [[ "${return_value}" == "${absolute_path}" ]]
+}
+
+
+@test "Directory Function - get_absolute_path - Relative Child Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    cd ${absolute_parent}
+    get_absolute_path ./system
+    [[ "${return_value}" == "${absolute_path}" ]]
+}
+
+
+@test "Directory Function - get_absolute_path - Symlink" {
+    # Import utils script.
+    source ../utils.sh
+
+    # I'm not sure if this symlink path exists in most linux distros, but I'm hoping it does.
+    get_absolute_path ${symlink_path}
+    echo "symlink_path: ${symlink_path}"
+    echo "abs_symlink_path: ${abs_symlink_path}"
+    echo "return_value: ${return_value}"
+    [[ "${return_value}" == "${abs_symlink_path}" ]]
+}
+
+
+@test "Directory Function - get_directory_name - Absolute Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    # Check current dir.
+    [[ "${current_dir}" == *"/bash_utils/tests" ]]
+
+    # Run test.
+    get_directory_name ${current_dir}
+    [[ "${return_value}" == "tests" ]]
+}
+
+
+@test "Directory Function - get_directory_name - Relative Dir" {
+    # Import utils script.
+    source ../utils.sh
+
+    # Check current dir.
+    [[ "${current_dir}" == *"/bash_utils/tests" ]]
+
+    # Run test.
+    cd ${current_dir}
+    get_directory_name ./
+    [[ "${return_value}" == "tests" ]]
+}
+
+
+@test "Directory Function - parse_file_name - Self" {
+    # Import utils script.
+    source ../utils.sh
+
+    # Run test.
+    parse_file_name ./tests/test_directory_functions.sh
+    [[ "${file_name}" == "test_directory_functions" ]]
+    [[ "${file_extension}" == ".sh" ]]
+}
+
+
+@test "Directory Function - parse_file_name - Multi-Part Extension" {
+    # Import utils script.
+    source ../utils.sh
+
+    # Run test with basic extension.
+    touch ./tests/aaa.b
+    parse_file_name ./tests/aaa.b
+    [[ "${file_name}" == "aaa" ]]
+    [[ "${file_extension}" == ".b" ]]
+    rm ./tests/aaa.b
+
+    # Run test with double extension.
+    touch ./tests/aaa.b.c
+    parse_file_name ./tests/aaa.b.c
+    [[ "${file_name}" == "aaa" ]]
+    [[ "${file_extension}" == ".b.c" ]]
+    rm ./tests/aaa.b.c
+
+    # Run test with triple extension.
+    touch ./tests/aaa.b.c.d
+    parse_file_name ./tests/aaa.b.c.d
+    [[ "${file_name}" == "aaa" ]]
+    [[ "${file_extension}" == ".b.c.d" ]]
+    rm ./tests/aaa.b.c.d
+
+    # Run test with quadruple extension.
+    touch ./tests/aaa.b.c.d.e
+    parse_file_name ./tests/aaa.b.c.d.e
+    [[ "${file_name}" == "aaa" ]]
+    [[ "${file_extension}" == ".b.c.d.e" ]]
+    rm ./tests/aaa.b.c.d.e
+
+    # Probably safe to assume it works for all further n extension lengths.
+}
-- 
GitLab