Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
87bb9f4660 | ||
|
caabcd25ff | ||
|
8f82cf5aeb | ||
|
385ec3fe81 | ||
|
d4eb99ffb0 | ||
|
ed939ff39a | ||
|
d24a71d0d7 |
@@ -1,3 +1,5 @@
|
||||
Copyright (c) 2013, 2014, 2015, 2016 Thomas Levine
|
||||
Copyright (c) 2014, Michael Klement
|
||||
Copyright (c) 2012, ScraperWiki Limited
|
||||
All rights reserved.
|
||||
|
3
HISTORY
3
HISTORY
@@ -14,6 +14,9 @@ Version 0.0.6
|
||||
* Remove the undocumented, experimental -x flag now that shall exists.
|
||||
* Display version number with the -v flag.
|
||||
* Document why Urchin is called "Urchin"
|
||||
* Update TODO
|
||||
* Support mksh (Change a printf command.)
|
||||
* Make long lines shorter.
|
||||
|
||||
These changes are made somewhat separately in the branches "exit-on-fail",
|
||||
"remove-urchin-x", "tap", and "update-readme". They are rebased into one
|
||||
|
39
urchin
39
urchin
@@ -1,7 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Make sure that CDPATH isn't set, as it causes `cd` to behave unpredictably - notably, it can produce output,
|
||||
# which breaks fullpath().
|
||||
# This file is part of urchin. It is subject to the license terms in the
|
||||
# COPYING file found in the top-level directory of this distribution or at
|
||||
# https://raw.githubusercontent.com/tlevine/urchin/master/COPYING
|
||||
|
||||
# No part of urchin, including this file, may be copied, modified, propagated,
|
||||
# or distributed except according to the terms contained in the COPYING file.
|
||||
|
||||
|
||||
|
||||
# Make sure that CDPATH isn't set, as it causes `cd` to behave unpredictably -
|
||||
# notably, it can produce output, which breaks fullpath().
|
||||
unset CDPATH
|
||||
|
||||
# Urchin version number
|
||||
@@ -133,7 +142,10 @@ recurse() {
|
||||
# On fail, print a red '✗'
|
||||
printf '\033[31m✗ \033[0m'
|
||||
printf '%s\n' "${potential_test}"
|
||||
printf '\033[31m' # Print output captured from failed test in red.
|
||||
|
||||
# Print output captured from failed test in red.
|
||||
printf '\033[31m'
|
||||
|
||||
cat "$stdout_file"
|
||||
printf '\033[0m'
|
||||
;;
|
||||
@@ -151,8 +163,13 @@ recurse() {
|
||||
}
|
||||
|
||||
has_sh_or_no_shebang_line() {
|
||||
head -n 1 "$1" | grep -vqE '^#!' && return 0 # no shebang line at all
|
||||
head -n 1 "$1" | grep -qE '^#![[:blank:]]*/bin/sh($|[[:blank:]])' && return 0 # shebang line is '#!/bin/sh' or legal variations thereof
|
||||
# no shebang line at all
|
||||
head -n 1 "$1" | grep -vqE '^#!' && return 0
|
||||
|
||||
# shebang line is '#!/bin/sh' or legal variations thereof
|
||||
head -n 1 "$1" | grep -qE '^#![[:blank:]]*/bin/sh($|[[:blank:]])' &&
|
||||
return 0
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
@@ -227,7 +244,10 @@ urchin_go() {
|
||||
echo "Done, took $elapsed $(plural second $elapsed)."
|
||||
printf '%s\n' "$passed $(plural test "$passed") passed."
|
||||
printf '%s\n' "$skipped $(plural test "$skipped") skipped."
|
||||
[ $failed -gt 0 ] && printf '\033[31m' || printf '\033[32m' # If tests failed, print the message in red, otherwise in green.
|
||||
|
||||
# If tests failed, print the message in red, otherwise in green.
|
||||
[ $failed -gt 0 ] && printf '\033[31m' || printf '\033[32m'
|
||||
|
||||
printf '%s\n' "$failed $(plural test "$failed") failed."
|
||||
printf '\033[m'
|
||||
fi
|
||||
@@ -259,8 +279,11 @@ do
|
||||
-s)
|
||||
shift
|
||||
shell_for_sh_tests=$1
|
||||
which "$shell_for_sh_tests" >/dev/null || { echo "Cannot find specified shell: '$shell_for_sh_tests'" >&2; urchin_help >&2; exit 2; }
|
||||
;;
|
||||
which "$shell_for_sh_tests" > /dev/null || {
|
||||
echo "Cannot find specified shell: '$shell_for_sh_tests'" >&2
|
||||
urchin_help >&2
|
||||
exit 2
|
||||
} ;;
|
||||
-t) tap_format=true;;
|
||||
-h|--help) urchin_help
|
||||
exit 0;;
|
||||
|
Reference in New Issue
Block a user