oh-my-fish/plugins/fish-spec/spec.run.fish

63 lines
1.7 KiB
Fish
Raw Normal View History

# NAME
# spec.run - run suite of tests
#
# SYNOPSIS
# spec.run [-v --verbose]
#
# 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
# import plugins/spec
#
# 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.
#
# 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 # Optimism
set -l output "--silent"
if contains -- $argv[1] -v --verbose
set output ""
end
# Run 1 or more topmost describe blocks causing fish to load inmediately
# scoped functions, i.e, those inside any invoked describe_ blocks.
spec.eval describe_ --depth 0 $output
spec.eval before_all $output
for test in (spec.functions "it_")
spec.eval before_each $output
# Flunk test if any single test fails, but do not stop the suite.
if not spec.eval $test --unit --depth 1 $output
set result 1
end
# Make sure to run after_each even if a test fails.
spec.eval after_each $output
end
spec.eval after_all $output
return $result
end