7 Commits
mksh ... v0.0.6

Author SHA1 Message Date
Thomas Levine
87bb9f4660 link to COPYING file on web 2016-02-08 16:09:00 +00:00
Thomas Levine
caabcd25ff update HISTORY 2016-02-08 16:06:22 +00:00
Thomas Levine
8f82cf5aeb make long lines shorter 2016-02-08 16:05:56 +00:00
Thomas Levine
385ec3fe81 add a copying notice to the urchin excutable 2016-02-08 16:02:03 +00:00
Thomas Levine
d4eb99ffb0 rename LICENSE -> COPYING 2016-02-08 15:59:56 +00:00
Thomas Levine
ed939ff39a update history 2016-02-08 15:59:47 +00:00
Thomas Levine
d24a71d0d7 copyright notice
add Thomas Levine and Michael Klement
2016-02-08 15:59:16 +00:00
3 changed files with 36 additions and 8 deletions

View File

@@ -1,3 +1,5 @@
Copyright (c) 2013, 2014, 2015, 2016 Thomas Levine
Copyright (c) 2014, Michael Klement
Copyright (c) 2012, ScraperWiki Limited Copyright (c) 2012, ScraperWiki Limited
All rights reserved. All rights reserved.

View File

@@ -14,6 +14,9 @@ Version 0.0.6
* Remove the undocumented, experimental -x flag now that shall exists. * Remove the undocumented, experimental -x flag now that shall exists.
* Display version number with the -v flag. * Display version number with the -v flag.
* Document why Urchin is called "Urchin" * 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", These changes are made somewhat separately in the branches "exit-on-fail",
"remove-urchin-x", "tap", and "update-readme". They are rebased into one "remove-urchin-x", "tap", and "update-readme". They are rebased into one

39
urchin
View File

@@ -1,7 +1,16 @@
#!/bin/sh #!/bin/sh
# Make sure that CDPATH isn't set, as it causes `cd` to behave unpredictably - notably, it can produce output, # This file is part of urchin. It is subject to the license terms in the
# which breaks fullpath(). # 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 unset CDPATH
# Urchin version number # Urchin version number
@@ -133,7 +142,10 @@ recurse() {
# On fail, print a red '✗' # On fail, print a red '✗'
printf '\033[31m✗ \033[0m' printf '\033[31m✗ \033[0m'
printf '%s\n' "${potential_test}" 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" cat "$stdout_file"
printf '\033[0m' printf '\033[0m'
;; ;;
@@ -151,8 +163,13 @@ recurse() {
} }
has_sh_or_no_shebang_line() { has_sh_or_no_shebang_line() {
head -n 1 "$1" | grep -vqE '^#!' && return 0 # no shebang line at all # 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 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 return 1
} }
@@ -227,7 +244,10 @@ urchin_go() {
echo "Done, took $elapsed $(plural second $elapsed)." echo "Done, took $elapsed $(plural second $elapsed)."
printf '%s\n' "$passed $(plural test "$passed") passed." printf '%s\n' "$passed $(plural test "$passed") passed."
printf '%s\n' "$skipped $(plural test "$skipped") skipped." 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 '%s\n' "$failed $(plural test "$failed") failed."
printf '\033[m' printf '\033[m'
fi fi
@@ -259,8 +279,11 @@ do
-s) -s)
shift shift
shell_for_sh_tests=$1 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;; -t) tap_format=true;;
-h|--help) urchin_help -h|--help) urchin_help
exit 0;; exit 0;;