Compare commits
17 Commits
v0.1.0-rc2
...
v0.1.0-rc3
Author | SHA1 | Date | |
---|---|---|---|
|
db3dd1c662 | ||
|
a9e0f856fb | ||
|
72f0700598 | ||
|
a486a6f296 | ||
|
a9ba8e79d3 | ||
|
586f46600a | ||
|
940cd549ab | ||
|
cd7f773d58 | ||
|
0de2c3264a | ||
|
fc51c34019 | ||
|
c61d31fcea | ||
|
6275c28ebf | ||
|
b0a7a8b07a | ||
|
f7ffd82893 | ||
|
a5ffad0446 | ||
|
b402f466b5 | ||
|
7a34da0906 |
8
HISTORY
8
HISTORY
@@ -1,7 +1,7 @@
|
||||
HISTORY
|
||||
=======
|
||||
|
||||
Version 0.1.0-rc1
|
||||
Version 0.1.0
|
||||
---------------------
|
||||
This release includes breaking changes.
|
||||
|
||||
@@ -72,7 +72,7 @@ might look for the dependency and then skip if it does not see the dependency.
|
||||
It might look like this.
|
||||
|
||||
#!/bin/sh
|
||||
if which inkscape; then
|
||||
if ! which inkscape; then
|
||||
exit 3 # status code 3 for skip
|
||||
fi
|
||||
inkscape blah blah ...
|
||||
@@ -171,10 +171,6 @@ set as an environment variable, and the latter was set with the -s flag..
|
||||
Urchin now uses the -s flag for both of these settings, and it mostly ignores
|
||||
the exported TEST_SHELL variable.
|
||||
|
||||
Urchin also inspects the shebang line differently. Previously, Urchin would
|
||||
vary the shells with which a test is run if the shebang line either was absent
|
||||
or was #!/bin/sh. Now it varies the shell only if the shebang line is absent.
|
||||
|
||||
If you pass -n/--disable-cycling, Urchin will invoke tests ordinarily and will
|
||||
only set the TEST_SHELL variable if it does not exist. If the TEST_SHELL
|
||||
variable is absent, it will be set to /bin/sh.
|
||||
|
1
packages/.gitignore
vendored
Normal file
1
packages/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.tar.gz
|
11
packages/nongnu.sh
Executable file
11
packages/nongnu.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
name=urchin-$(../urchin --version)
|
||||
|
||||
tmp=$(mktemp -d)
|
||||
mkdir $tmp/$name
|
||||
cp ../urchin ../readme.md ../AUTHORS ../COPYING $tmp/$name
|
||||
cd $tmp
|
||||
tar czf $name.tar.gz $name
|
||||
cd - > /dev/null
|
||||
mv $tmp/$name.tar.gz .
|
||||
rm -R $tmp
|
@@ -51,7 +51,7 @@ Urchin is contained in a single file, so you can install it by copying it to a
|
||||
directory in your `PATH`. For example, you can run the following as root.
|
||||
|
||||
cd /usr/local/bin
|
||||
wget https://raw.githubusercontent.com/tlevine/urchin/v0.0.6/urchin
|
||||
wget https://raw.githubusercontent.com/tlevine/urchin/v0.1.0-rc3/urchin
|
||||
chmod +x urchin
|
||||
|
||||
Urchin can be installed with npm too.
|
||||
|
2
tests/Flags/--timeout error message
Executable file
2
tests/Flags/--timeout error message
Executable file
@@ -0,0 +1,2 @@
|
||||
../../urchin -T aoeu .testsuite 2>&1 | grep Bad
|
||||
../../urchin -T .testsuite 2>&1 | grep Bad
|
@@ -1,3 +1 @@
|
||||
set -e
|
||||
$TEST_SHELL ../../urchin --shell sh .slow-tests
|
||||
! $TEST_SHELL ../../urchin --shell sh --timeout 0.3 .slow-tests
|
4
tests/Flags/--timeout output
Executable file
4
tests/Flags/--timeout output
Executable file
@@ -0,0 +1,4 @@
|
||||
$TEST_SHELL ../../urchin --shell sh --timeout 0.3 .slow-tests 2>&1 |
|
||||
grep -v -- --timeout |
|
||||
grep timeout
|
||||
test $? = 1
|
1
tests/Flags/--timeout success
Executable file
1
tests/Flags/--timeout success
Executable file
@@ -0,0 +1 @@
|
||||
$TEST_SHELL ../../urchin --shell sh .slow-tests --timeout 1000
|
86
urchin
86
urchin
@@ -152,6 +152,10 @@ recurse() {
|
||||
cycle_shell="${3}"
|
||||
TEST_SHELL="${4}"
|
||||
|
||||
if $print_debug; then
|
||||
echo Entered directory "${PWD}"
|
||||
fi
|
||||
|
||||
for ignore in setup_dir teardown_dir setup teardown; do
|
||||
if test "$(basename "${potential_test}")" = "${ignore}"; then
|
||||
return
|
||||
@@ -181,7 +185,12 @@ recurse() {
|
||||
run_in_series_dir=false
|
||||
fi
|
||||
|
||||
if test -f setup_dir; then . ./setup_dir; fi
|
||||
if test -f setup_dir; then
|
||||
if $print_debug; then
|
||||
echo Sourcing "${PWD}/setup_dir"
|
||||
fi
|
||||
. ./setup_dir
|
||||
fi
|
||||
|
||||
for test in *; do
|
||||
if test "${test}" = '*' && ! test -e "${test}"; then
|
||||
@@ -195,22 +204,41 @@ recurse() {
|
||||
if "${run_in_series}" || "${run_in_series_dir}"; then
|
||||
if wait "${!}"; then exit_code=0; else exit_code="${?}"; fi
|
||||
if "${exit_on_not_ok}" && test "${exit_code}" -ne 0; then
|
||||
if test -f teardown_dir; then . ./teardown_dir; fi
|
||||
if test -f teardown_dir; then
|
||||
if $print_debug; then
|
||||
echo Sourcing "${PWD}/teardown_dir"
|
||||
fi
|
||||
. ./teardown_dir
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
wait
|
||||
if test -f teardown_dir; then . ./teardown_dir; fi
|
||||
if test -f teardown_dir; then
|
||||
if $print_debug; then
|
||||
echo Sourcing "${PWD}/teardown_dir"
|
||||
fi
|
||||
. ./teardown_dir
|
||||
fi
|
||||
)
|
||||
elif [ -f "${potential_test}" ]; then
|
||||
cd -- "$(dirname -- "${potential_test}")"
|
||||
|
||||
if $print_debug; then
|
||||
echo Running "${potential_test}"
|
||||
fi
|
||||
|
||||
# Determine the environment variable to define for test scripts
|
||||
# that reflects the specified or implied shell to use for shell-code tests.
|
||||
while read the_test_shell; do
|
||||
(
|
||||
if test -f setup; then . ./setup; fi
|
||||
if test -f setup; then
|
||||
if $print_debug; then
|
||||
echo Sourcing "${PWD}/setup"
|
||||
fi
|
||||
. ./setup
|
||||
fi
|
||||
|
||||
# Run the test
|
||||
start=$(date +%s)
|
||||
@@ -237,7 +265,12 @@ recurse() {
|
||||
set -e
|
||||
finish=$(date +%s)
|
||||
|
||||
if test -f teardown; then . ./teardown; fi
|
||||
if test -f teardown; then
|
||||
if $print_debug; then
|
||||
echo Sourcing "${PWD}/teardown"
|
||||
fi
|
||||
. ./teardown
|
||||
fi
|
||||
|
||||
if [ "${exit_code}" -eq 0 ]; then
|
||||
result=ok
|
||||
@@ -256,7 +289,12 @@ recurse() {
|
||||
if "${run_in_series}"; then
|
||||
if wait "${!}"; then exit_code=0; else exit_code="${?}"; fi
|
||||
if "${exit_on_not_ok}" && test "${exit_code}" -ne 0; then
|
||||
if test -f teardown_dir; then . ./teardown_dir; fi
|
||||
if test -f teardown_dir; then
|
||||
if $print_debug; then
|
||||
echo Sourcing "${PWD}/teardown_dir"
|
||||
fi
|
||||
. ./teardown_dir
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
@@ -450,8 +488,8 @@ The following flags affect how Urchin processes tests.
|
||||
-b, --run-in-series Run tests in series. The default is to run tests
|
||||
in parallel where possible.
|
||||
-e, --exit-on-fail Stop running if any single test fails.
|
||||
This is useful if you are running something
|
||||
configuration files with Urchin.
|
||||
This can be useful if you are running something
|
||||
other than test files with Urchin.
|
||||
-T, --timeout <seconds> Kill a test if it runs for longer than the
|
||||
specified duration. The default is no timeout.
|
||||
-f, --force Force running even if the test directory's name
|
||||
@@ -464,6 +502,8 @@ effect when combined with --tap.
|
||||
-p, --pretty Print results in color and with fancy symbols.
|
||||
-t, --tap Format output in Test Anything Protocol (TAP)
|
||||
|
||||
And these options affect how much is printed.
|
||||
|
||||
-q, --quiet Print nothing to stdout;
|
||||
the only output is the exit code.
|
||||
(default verbosity) Print names of failed tests and counts
|
||||
@@ -471,14 +511,14 @@ effect when combined with --tap.
|
||||
-v Print stdout from failing tests.
|
||||
-vv Print names of passed tests.
|
||||
-vvv, --verbose Print stdout from all tests.
|
||||
-vvvv, --debug Print debugging messages (XXX not implemented)
|
||||
-vvvv, --debug Print debugging messages.
|
||||
|
||||
The remaining flags provide information about urchin.
|
||||
|
||||
-h, --help Display this help.
|
||||
--version Display the version number.
|
||||
|
||||
Go to https://github.com/tlevine/urchin for documentation on writing tests.
|
||||
Go to https://thomaslevine.com/!/urchin/ for documentation on writing tests.
|
||||
|
||||
EOF
|
||||
}
|
||||
@@ -518,6 +558,7 @@ main() {
|
||||
print_not_ok=true
|
||||
print_ok_stdout=false
|
||||
print_not_ok_stdout=false
|
||||
print_debug=false
|
||||
while [ "${#}" -gt 0 ]
|
||||
do
|
||||
case "${1}" in
|
||||
@@ -544,7 +585,16 @@ main() {
|
||||
;;
|
||||
-n|--disable-cycling) cycle_shell=false;;
|
||||
-t|--tap) tap_format=true;;
|
||||
-T|--timeout) shift; urchin_timeout="${1}" ;;
|
||||
-T|--timeout)
|
||||
shift
|
||||
urchin_timeout="${1}"
|
||||
if ! {
|
||||
echo "${urchin_timeout}" |
|
||||
grep '[0-9][0-9.]*\(s\|m\|h\|d\|\)'
|
||||
}; then
|
||||
echo Bad timeout argument: "${urchin_timeout}" >&2
|
||||
urchin_exit 1
|
||||
fi ;;
|
||||
-p|--pretty) print_in_color=true;;
|
||||
|
||||
-q|--quiet) print_not_ok=false
|
||||
@@ -555,7 +605,10 @@ main() {
|
||||
-vvv|--verbose)print_not_ok_stdout=true
|
||||
print_ok=true;
|
||||
print_ok_stdout=true;;
|
||||
-vvvv|--debug) echo 'Not implemented' > /dev/stderr && exit 1;;
|
||||
-vvvv|--debug) print_not_ok_stdout=true
|
||||
print_ok=true;
|
||||
print_ok_stdout=true
|
||||
print_debug=true;;
|
||||
|
||||
-h|--help) urchin_help
|
||||
urchin_exit 0;;
|
||||
@@ -597,11 +650,16 @@ main() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if $print_debug; then
|
||||
echo Cycling with the following shells:
|
||||
cat "${shell_list}"
|
||||
fi
|
||||
|
||||
if test -n "${urchin_timeout}"; then
|
||||
# Choose the timeout command
|
||||
if timeout -t 0 true; then
|
||||
if timeout -t 0 true 2> /dev/null; then
|
||||
TIMEOUT="timeout -t ${urchin_timeout}"
|
||||
elif timeout 0 true; then
|
||||
elif timeout 0 true 2> /dev/null; then
|
||||
TIMEOUT="timeout ${urchin_timeout}"
|
||||
else
|
||||
echo I couldn\'t figure out how to use your version of timeout >&2
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 99 KiB |
Binary file not shown.
Before Width: | Height: | Size: 115 KiB |
Reference in New Issue
Block a user