summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtests.sh2
-rwxr-xr-xtests/find-color.sh44
-rwxr-xr-xtests/ls-color.sh48
3 files changed, 93 insertions, 1 deletions
diff --git a/tests.sh b/tests.sh
index 3576f7a..2df3448 100755
--- a/tests.sh
+++ b/tests.sh
@@ -2,7 +2,7 @@
############################################################################
# bfs #
-# Copyright (C) 2015-2018 Tavian Barnes <tavianator@tavianator.com> #
+# Copyright (C) 2015-2019 Tavian Barnes <tavianator@tavianator.com> #
# #
# Permission to use, copy, modify, and/or distribute this software for any #
# purpose with or without fee is hereby granted. #
diff --git a/tests/find-color.sh b/tests/find-color.sh
new file mode 100755
index 0000000..6ae6eba
--- /dev/null
+++ b/tests/find-color.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+############################################################################
+# bfs #
+# Copyright (C) 2019 Tavian Barnes <tavianator@tavianator.com> #
+# #
+# Permission to use, copy, modify, and/or distribute this software for any #
+# purpose with or without fee is hereby granted. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES #
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF #
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR #
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES #
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN #
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF #
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #
+############################################################################
+
+set -e
+
+L=
+COLOR=
+ARGS=()
+for ARG; do
+ case "$ARG" in
+ -L)
+ L="$ARG"
+ ;;
+ -color)
+ COLOR=y
+ ;;
+ *)
+ ARGS+=("$ARG")
+ ;;
+ esac
+done
+
+LS_COLOR="${BASH_SOURCE%/*}/ls-color.sh"
+
+if [ "$COLOR" ]; then
+ find "${ARGS[@]}" -exec "$LS_COLOR" $L {} \;
+else
+ find "${ARGS[@]}"
+fi
diff --git a/tests/ls-color.sh b/tests/ls-color.sh
new file mode 100755
index 0000000..e8cf038
--- /dev/null
+++ b/tests/ls-color.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+############################################################################
+# bfs #
+# Copyright (C) 2019 Tavian Barnes <tavianator@tavianator.com> #
+# #
+# Permission to use, copy, modify, and/or distribute this software for any #
+# purpose with or without fee is hereby granted. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES #
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF #
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR #
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES #
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN #
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF #
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #
+############################################################################
+
+# Prints the "ground truth" coloring of a path using ls
+
+set -e
+
+L=
+if [ "$1" = "-L" ]; then
+ L="$1"
+ shift
+fi
+
+function ls_color() {
+ # Strip the leading reset sequence from the ls output
+ ls -1d --color "$@" | sed $'s/^\033\\[0m//'
+}
+
+DIR="${1%/*}"
+if [ "$DIR" = "$1" ]; then
+ ls_color "$1"
+ exit
+fi
+
+BASE="${1##*/}"
+
+ls_color $L "$DIR/" | tr -d '\n'
+
+if [ -e "$1" ]; then
+ (cd "$DIR" && ls_color $L "$BASE")
+else
+ (cd "$DIR" && ls_color "$BASE")
+fi