mirror of
https://github.com/oh-my-fish/oh-my-fish.git
synced 2024-11-22 15:15:27 +08:00
Merge pull request #203 from oh-my-fish/better-test-output
Better test output
This commit is contained in:
commit
74d4e90f5d
59
pkg/fish-spec/basic_formatter.fish
Normal file
59
pkg/fish-spec/basic_formatter.fish
Normal file
|
@ -0,0 +1,59 @@
|
|||
function __fish-spec.all_specs_init -e all_specs_init -a spec
|
||||
set -g __fish_spec_start_time (__fish-spec.current_time)
|
||||
end
|
||||
|
||||
function __fish-spec.all_specs_finished -e all_specs_finished -a spec
|
||||
set -l __fish_spec_end_time (__fish-spec.current_time)
|
||||
set -l diff (math "scale=3;($__fish_spec_end_time - $__fish_spec_start_time) / 1000")
|
||||
|
||||
echo -en '\n\nFinished in '
|
||||
printf '%g' $diff
|
||||
echo ' seconds'
|
||||
end
|
||||
|
||||
function __fish-spec.spec_init -e spec_init -a spec
|
||||
set -g __current_spec_name (echo $spec | sed 's/^[0-9]*_//;s/_/ /g;s/^it/It/')
|
||||
set -e __current_spec_output
|
||||
set -e __current_spec_status
|
||||
end
|
||||
|
||||
function __fish-spec.spec_finished -e spec_finished -a spec
|
||||
functions -e $spec
|
||||
|
||||
switch "$__current_spec_status"
|
||||
case success
|
||||
emit spec_success
|
||||
case error
|
||||
emit spec_error
|
||||
case '*'
|
||||
emit spec_no_assertions
|
||||
end
|
||||
end
|
||||
|
||||
function __fish-spec.spec_success -e spec_success
|
||||
echo -n '.'
|
||||
end
|
||||
|
||||
function __fish-spec.spec_error -e spec_error
|
||||
echo -e "\n\nFailure: $__current_spec_name"
|
||||
|
||||
if not set -q __current_spec_quiet
|
||||
echo (omf::em) $__current_spec_output(omf::off)
|
||||
end
|
||||
|
||||
set -g __any_spec_failed true
|
||||
end
|
||||
|
||||
function __fish-spec.spec_no_assertions -e spec_no_assertions
|
||||
echo -n 'N/A'
|
||||
end
|
||||
|
||||
function __fish-spec_assertion_success -e assertion_success
|
||||
set -q __current_spec_status; or set -g __current_spec_status success
|
||||
end
|
||||
|
||||
function __fish-spec_assertion_error -e assertion_error -a error_message
|
||||
# Mimics output redirect inside an event handler
|
||||
set -g __current_spec_output $error_message
|
||||
set -g __current_spec_status error
|
||||
end
|
|
@ -6,26 +6,26 @@ function assert.error_message
|
|||
switch $number_of_arguments
|
||||
case 3
|
||||
set operator (assert.expand_operator $argv[2])
|
||||
set expected $argv[3]
|
||||
echo "Expected $expected to not be $operator"
|
||||
set actual $argv[3]
|
||||
echo "Expected result to not be $operator but it was $actual"
|
||||
case 4
|
||||
set expected $argv[2]
|
||||
set operator "not" (assert.expand_operator $argv[3])
|
||||
set actual $argv[4]
|
||||
echo "Expected $expected to $operator $actual"
|
||||
echo "Expected result to $operator $expected but it was $actual"
|
||||
case \*
|
||||
return 1
|
||||
end
|
||||
case \-\*
|
||||
test $number_of_arguments != 2; and return 1
|
||||
set operator (assert.expand_operator $argv[1])
|
||||
set expected $argv[2]
|
||||
echo "Expected $expected to be $operator"
|
||||
set actual $argv[2]
|
||||
echo "Expected result to be $operator but it was $actual"
|
||||
case \*
|
||||
test $number_of_arguments != 3; and return 1
|
||||
set expected $argv[1]
|
||||
set operator (assert.expand_operator $argv[2])
|
||||
set actual $argv[3]
|
||||
echo "Expected $expected to $operator $actual"
|
||||
echo "Expected result to $operator $expected but it was $actual"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
function fish-spec
|
||||
set -g __fish_spec_dir (dirname (dirname (status -f)))
|
||||
|
||||
# Source formatter
|
||||
source $__fish_spec_dir/basic_formatter.fish
|
||||
|
||||
# Reset internal variables
|
||||
set -e __any_spec_failed
|
||||
|
||||
|
@ -10,9 +15,13 @@ function fish-spec
|
|||
# Load helper file
|
||||
source spec/helper.fish ^/dev/null
|
||||
|
||||
emit all_specs_init
|
||||
|
||||
# Run all specs
|
||||
__fish-spec.run_all_specs
|
||||
|
||||
emit all_specs_finished
|
||||
|
||||
not set -q __any_spec_failed
|
||||
end
|
||||
|
||||
|
@ -47,47 +56,12 @@ function __fish-spec.run_suite -a suite_name
|
|||
functions -e before_all before_each after_each after_all
|
||||
end
|
||||
|
||||
function __fish-spec.spec_init -e spec_init -a spec
|
||||
set -e __current_spec_status
|
||||
end
|
||||
|
||||
function __fish-spec.spec_finished -e spec_finished -a spec
|
||||
functions -e $spec
|
||||
|
||||
switch "$__current_spec_status"
|
||||
case success
|
||||
emit spec_success
|
||||
case error
|
||||
emit spec_error
|
||||
case '*'
|
||||
emit spec_no_assertions
|
||||
end
|
||||
end
|
||||
|
||||
function __fish-spec.spec_success -e spec_success
|
||||
echo -n '.'
|
||||
end
|
||||
|
||||
function __fish-spec.spec_error -e spec_error
|
||||
echo -n 'F'
|
||||
set -g __any_spec_failed true
|
||||
end
|
||||
|
||||
function __fish-spec.spec_no_assertions -e spec_no_assertions
|
||||
echo -n 'N/A'
|
||||
end
|
||||
|
||||
function __fish-spec_assertion_success -e assertion_success
|
||||
set -q __current_spec_status; or set -g __current_spec_status success
|
||||
end
|
||||
|
||||
function __fish-spec_assertion_error -e assertion_error -a error_message
|
||||
# Mimics output redirect inside an event handler
|
||||
if set -q __fish_spec_output
|
||||
set __fish_spec_output $error_message
|
||||
function __fish-spec.current_time
|
||||
if test (uname) = 'Darwin'
|
||||
set filename 'epoch.osx'
|
||||
else
|
||||
echo $error_message
|
||||
set filename 'epoch.linux'
|
||||
end
|
||||
|
||||
set -g __current_spec_status error
|
||||
eval $__fish_spec_dir/utils/$filename
|
||||
end
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
function describe_assert_error_message
|
||||
function before_each
|
||||
set -g __fish_spec_output "initial test value"
|
||||
set -g __current_spec_quiet
|
||||
end
|
||||
|
||||
function after_each
|
||||
set -e __fish_spec_output
|
||||
set -e __current_spec_quiet
|
||||
end
|
||||
|
||||
function it_has_no_output_when_the_test_succeeds
|
||||
|
@ -13,16 +13,16 @@ function describe_assert_error_message
|
|||
# Reset test status
|
||||
set -e __current_spec_status
|
||||
|
||||
assert 'initial test value' = "$__fish_spec_output"; or echo $__fish_spec_output
|
||||
assert -z "$__current_spec_output"
|
||||
end
|
||||
|
||||
function it_supports_unary_operators
|
||||
assert -z "string"
|
||||
assert -z "abc"
|
||||
|
||||
# Reset test status
|
||||
set -e __current_spec_status
|
||||
|
||||
assert 'Expected string to be empty' = "$__fish_spec_output"; or echo $__fish_spec_output
|
||||
assert 'Expected result to be empty but it was abc' = "$__current_spec_output"
|
||||
end
|
||||
|
||||
function it_supports_binary_operators
|
||||
|
@ -31,7 +31,7 @@ function describe_assert_error_message
|
|||
# Reset test status
|
||||
set -e __current_spec_status
|
||||
|
||||
assert 'Expected 1 to equals 2' = "$__fish_spec_output"; or echo $__fish_spec_output
|
||||
assert 'Expected result to equals 1 but it was 2' = "$__current_spec_output"
|
||||
end
|
||||
|
||||
function it_supports_inversion_on_unary_operators
|
||||
|
@ -40,7 +40,7 @@ function describe_assert_error_message
|
|||
# Reset test status
|
||||
set -e __current_spec_status
|
||||
|
||||
assert 'Expected to not be empty' = "$__fish_spec_output"; or echo $__fish_spec_output
|
||||
assert 'Expected result to not be empty but it was ' = "$__current_spec_output"
|
||||
end
|
||||
|
||||
function it_supports_inversion_on_binary_operators
|
||||
|
@ -49,6 +49,6 @@ function describe_assert_error_message
|
|||
# Reset test status
|
||||
set -e __current_spec_status
|
||||
|
||||
assert 'Expected 1 to not equals 1' = "$__fish_spec_output"; or echo $__fish_spec_output
|
||||
assert 'Expected result to not equals 1 but it was 1' = "$__current_spec_output"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
function describe_results
|
||||
function after_each
|
||||
set -e __fish_spec_quiet
|
||||
end
|
||||
|
||||
function it_succeeds_when_single_assertion_succeeds
|
||||
assert 1 = 1
|
||||
|
||||
|
|
10
pkg/fish-spec/utils/epoch.c
Normal file
10
pkg/fish-spec/utils/epoch.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
#include <stdio.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
struct timeval time_struct;
|
||||
gettimeofday(&time_struct, 0);
|
||||
printf("%lld", (time_struct.tv_sec * 1000ll) + (time_struct.tv_usec / 1000ll));
|
||||
|
||||
return 0;
|
||||
}
|
BIN
pkg/fish-spec/utils/epoch.linux
Executable file
BIN
pkg/fish-spec/utils/epoch.linux
Executable file
Binary file not shown.
BIN
pkg/fish-spec/utils/epoch.osx
Executable file
BIN
pkg/fish-spec/utils/epoch.osx
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user