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
|
HISTORY
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Version 0.1.0-rc1
|
Version 0.1.0
|
||||||
---------------------
|
---------------------
|
||||||
This release includes breaking changes.
|
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.
|
It might look like this.
|
||||||
|
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
if which inkscape; then
|
if ! which inkscape; then
|
||||||
exit 3 # status code 3 for skip
|
exit 3 # status code 3 for skip
|
||||||
fi
|
fi
|
||||||
inkscape blah blah ...
|
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
|
Urchin now uses the -s flag for both of these settings, and it mostly ignores
|
||||||
the exported TEST_SHELL variable.
|
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
|
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
|
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.
|
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.
|
directory in your `PATH`. For example, you can run the following as root.
|
||||||
|
|
||||||
cd /usr/local/bin
|
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
|
chmod +x urchin
|
||||||
|
|
||||||
Urchin can be installed with npm too.
|
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
|
! $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}"
|
cycle_shell="${3}"
|
||||||
TEST_SHELL="${4}"
|
TEST_SHELL="${4}"
|
||||||
|
|
||||||
|
if $print_debug; then
|
||||||
|
echo Entered directory "${PWD}"
|
||||||
|
fi
|
||||||
|
|
||||||
for ignore in setup_dir teardown_dir setup teardown; do
|
for ignore in setup_dir teardown_dir setup teardown; do
|
||||||
if test "$(basename "${potential_test}")" = "${ignore}"; then
|
if test "$(basename "${potential_test}")" = "${ignore}"; then
|
||||||
return
|
return
|
||||||
@@ -181,7 +185,12 @@ recurse() {
|
|||||||
run_in_series_dir=false
|
run_in_series_dir=false
|
||||||
fi
|
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
|
for test in *; do
|
||||||
if test "${test}" = '*' && ! test -e "${test}"; then
|
if test "${test}" = '*' && ! test -e "${test}"; then
|
||||||
@@ -195,22 +204,41 @@ recurse() {
|
|||||||
if "${run_in_series}" || "${run_in_series_dir}"; then
|
if "${run_in_series}" || "${run_in_series_dir}"; then
|
||||||
if wait "${!}"; then exit_code=0; else exit_code="${?}"; fi
|
if wait "${!}"; then exit_code=0; else exit_code="${?}"; fi
|
||||||
if "${exit_on_not_ok}" && test "${exit_code}" -ne 0; then
|
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
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
wait
|
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
|
elif [ -f "${potential_test}" ]; then
|
||||||
cd -- "$(dirname -- "${potential_test}")"
|
cd -- "$(dirname -- "${potential_test}")"
|
||||||
|
|
||||||
|
if $print_debug; then
|
||||||
|
echo Running "${potential_test}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Determine the environment variable to define for test scripts
|
# Determine the environment variable to define for test scripts
|
||||||
# that reflects the specified or implied shell to use for shell-code tests.
|
# that reflects the specified or implied shell to use for shell-code tests.
|
||||||
while read the_test_shell; do
|
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
|
# Run the test
|
||||||
start=$(date +%s)
|
start=$(date +%s)
|
||||||
@@ -237,7 +265,12 @@ recurse() {
|
|||||||
set -e
|
set -e
|
||||||
finish=$(date +%s)
|
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
|
if [ "${exit_code}" -eq 0 ]; then
|
||||||
result=ok
|
result=ok
|
||||||
@@ -256,7 +289,12 @@ recurse() {
|
|||||||
if "${run_in_series}"; then
|
if "${run_in_series}"; then
|
||||||
if wait "${!}"; then exit_code=0; else exit_code="${?}"; fi
|
if wait "${!}"; then exit_code=0; else exit_code="${?}"; fi
|
||||||
if "${exit_on_not_ok}" && test "${exit_code}" -ne 0; then
|
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
|
return 1
|
||||||
fi
|
fi
|
||||||
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
|
-b, --run-in-series Run tests in series. The default is to run tests
|
||||||
in parallel where possible.
|
in parallel where possible.
|
||||||
-e, --exit-on-fail Stop running if any single test fails.
|
-e, --exit-on-fail Stop running if any single test fails.
|
||||||
This is useful if you are running something
|
This can be useful if you are running something
|
||||||
configuration files with Urchin.
|
other than test files with Urchin.
|
||||||
-T, --timeout <seconds> Kill a test if it runs for longer than the
|
-T, --timeout <seconds> Kill a test if it runs for longer than the
|
||||||
specified duration. The default is no timeout.
|
specified duration. The default is no timeout.
|
||||||
-f, --force Force running even if the test directory's name
|
-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.
|
-p, --pretty Print results in color and with fancy symbols.
|
||||||
-t, --tap Format output in Test Anything Protocol (TAP)
|
-t, --tap Format output in Test Anything Protocol (TAP)
|
||||||
|
|
||||||
|
And these options affect how much is printed.
|
||||||
|
|
||||||
-q, --quiet Print nothing to stdout;
|
-q, --quiet Print nothing to stdout;
|
||||||
the only output is the exit code.
|
the only output is the exit code.
|
||||||
(default verbosity) Print names of failed tests and counts
|
(default verbosity) Print names of failed tests and counts
|
||||||
@@ -471,14 +511,14 @@ effect when combined with --tap.
|
|||||||
-v Print stdout from failing tests.
|
-v Print stdout from failing tests.
|
||||||
-vv Print names of passed tests.
|
-vv Print names of passed tests.
|
||||||
-vvv, --verbose Print stdout from all 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.
|
The remaining flags provide information about urchin.
|
||||||
|
|
||||||
-h, --help Display this help.
|
-h, --help Display this help.
|
||||||
--version Display the version number.
|
--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
|
EOF
|
||||||
}
|
}
|
||||||
@@ -518,6 +558,7 @@ main() {
|
|||||||
print_not_ok=true
|
print_not_ok=true
|
||||||
print_ok_stdout=false
|
print_ok_stdout=false
|
||||||
print_not_ok_stdout=false
|
print_not_ok_stdout=false
|
||||||
|
print_debug=false
|
||||||
while [ "${#}" -gt 0 ]
|
while [ "${#}" -gt 0 ]
|
||||||
do
|
do
|
||||||
case "${1}" in
|
case "${1}" in
|
||||||
@@ -544,7 +585,16 @@ main() {
|
|||||||
;;
|
;;
|
||||||
-n|--disable-cycling) cycle_shell=false;;
|
-n|--disable-cycling) cycle_shell=false;;
|
||||||
-t|--tap) tap_format=true;;
|
-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;;
|
-p|--pretty) print_in_color=true;;
|
||||||
|
|
||||||
-q|--quiet) print_not_ok=false
|
-q|--quiet) print_not_ok=false
|
||||||
@@ -555,7 +605,10 @@ main() {
|
|||||||
-vvv|--verbose)print_not_ok_stdout=true
|
-vvv|--verbose)print_not_ok_stdout=true
|
||||||
print_ok=true;
|
print_ok=true;
|
||||||
print_ok_stdout=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
|
-h|--help) urchin_help
|
||||||
urchin_exit 0;;
|
urchin_exit 0;;
|
||||||
@@ -597,11 +650,16 @@ main() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if $print_debug; then
|
||||||
|
echo Cycling with the following shells:
|
||||||
|
cat "${shell_list}"
|
||||||
|
fi
|
||||||
|
|
||||||
if test -n "${urchin_timeout}"; then
|
if test -n "${urchin_timeout}"; then
|
||||||
# Choose the timeout command
|
# Choose the timeout command
|
||||||
if timeout -t 0 true; then
|
if timeout -t 0 true 2> /dev/null; then
|
||||||
TIMEOUT="timeout -t ${urchin_timeout}"
|
TIMEOUT="timeout -t ${urchin_timeout}"
|
||||||
elif timeout 0 true; then
|
elif timeout 0 true 2> /dev/null; then
|
||||||
TIMEOUT="timeout ${urchin_timeout}"
|
TIMEOUT="timeout ${urchin_timeout}"
|
||||||
else
|
else
|
||||||
echo I couldn\'t figure out how to use your version of timeout >&2
|
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