mirror of
https://github.com/oh-my-fish/oh-my-fish.git
synced 2024-12-02 14:03:51 +08:00
94 lines
2.3 KiB
Fish
94 lines
2.3 KiB
Fish
# NAME
|
|
# spec.run - run a suite of tests
|
|
#
|
|
# SYNOPSIS
|
|
# spec.run [OPTIONS]
|
|
#
|
|
# OPTIONS
|
|
# -v --verbose
|
|
# Print full test output.
|
|
#
|
|
# DESCRIPTION
|
|
# In order to run tests create the test file, import plugins/spec at
|
|
# before adding any of the functions described above and call spec.run.
|
|
#
|
|
# FUNCTIONS
|
|
# function before_all Run before any tests are run.
|
|
# function before_each Run before each test.
|
|
# function describe_* Use to organize different specs.
|
|
# function it_* Use to test your library/plugin.
|
|
# function after_each Run after each test.
|
|
# function after_all Run after all tests are finished.
|
|
#
|
|
# NOTES
|
|
# After each test is evaluated, the function is erased from the scope by
|
|
# spec.eval to guarantee that subsequent describe blocks will not end up
|
|
# calling the previous describe's batch of tests.
|
|
#
|
|
# The fish-spec library is no different from other Oh-My-Fish plugins.
|
|
# Use `import plugins/fish-spec` at the top of your spec file and call
|
|
#
|
|
# spec.run $argv
|
|
#
|
|
# After your suite of tests.
|
|
#
|
|
# EXAMPLES
|
|
# import plugins/fish-spec
|
|
# function describe_erase
|
|
# function before_each
|
|
# set -g nums 1 2 3
|
|
# end
|
|
# function it_erases_one_item -d "It should erase an item from a list."
|
|
# erase 1 --from nums
|
|
# expect $nums --to-not-contain 1
|
|
# end
|
|
# end
|
|
# spec.run --verbose
|
|
#
|
|
# AUTHORS
|
|
# Bruno Pinto <@pfbruno>
|
|
# Jorge Bucaran <@bucaran>
|
|
#/
|
|
function spec.run
|
|
set -l result 0
|
|
set -l tests ""
|
|
set -l describes (spec.functions describe_)
|
|
|
|
# Load this suite unique set of tests.
|
|
for describe in $describes
|
|
spec.eval $describe --header $argv
|
|
spec.eval before_all $argv
|
|
|
|
set tests (spec.functions it_)
|
|
set -l failed 0
|
|
|
|
for test in $tests
|
|
spec.eval before_each $argv
|
|
|
|
if not spec.eval $test --tab 1 $argv
|
|
set result 1 # Flunk!
|
|
set failed (math 1+$failed)
|
|
end
|
|
|
|
spec.eval after_each $argv
|
|
end
|
|
spec.eval after_all $argv
|
|
|
|
if contains -- $argv[1] -v --verbose
|
|
spec.view --report (count $tests) $failed
|
|
end
|
|
|
|
# Clean up methods after all tests are finished.
|
|
spec.functions -e it_ before_ after_
|
|
end
|
|
|
|
if [ -z "$describes" -o -z "$tests" ]
|
|
echo "No tests found."
|
|
return 1
|
|
end
|
|
|
|
spec.functions -e describe_
|
|
|
|
return $result
|
|
end
|