mirror of
https://github.com/ivuorinen/tree-sitter-shellspec.git
synced 2026-02-07 13:49:28 +00:00
feat: implement complete tree-sitter-shellspec grammar with comprehensive testing
- Add full ShellSpec grammar extending tree-sitter-bash - Support all ShellSpec constructs: Describe, Context, It, hooks, utilities - Include Data block parsing with statements and argument styles - Add 61 comprehensive test cases covering real-world patterns - Implement optimized GitHub workflows with CI/CD automation - Configure complete development tooling (linting, formatting, pre-commit) - Add comprehensive documentation and contribution guidelines - Optimize grammar conflicts to zero warnings - Support editor integration for Neovim, VS Code, Emacs Breaking Changes: - Initial release, no previous API to break BREAKING CHANGE: Initial implementation of tree-sitter-shellspec grammar # Conflicts: # .github/workflows/codeql.yml # .github/workflows/pr-lint.yml # .pre-commit-config.yaml # Conflicts: # .github/workflows/pr-lint.yml # Conflicts: # .github/workflows/pr-lint.yml
This commit is contained in:
77
test/spec/07.before_after_hook_spec.sh
Normal file
77
test/spec/07.before_after_hook_spec.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#shellcheck shell=sh
|
||||
|
||||
# shellspec has Before and After hook.
|
||||
# Those hooks are execute for each example (It/Example/Specify).
|
||||
# There is no hooks execute for each example group (Describe/Context).
|
||||
# In other words, There is no BeforeAll / AfterAll hooks. It is design policy.
|
||||
|
||||
Describe 'before / after hook example'
|
||||
Describe '1: before hook'
|
||||
setup() { value=10; }
|
||||
Before 'setup'
|
||||
|
||||
add_value() {
|
||||
value=$((value + $1))
|
||||
echo "$value"
|
||||
}
|
||||
|
||||
It 'is called before execute example'
|
||||
When call add_value 10
|
||||
The output should eq 20
|
||||
End
|
||||
|
||||
It 'is called for each example'
|
||||
When call add_value 100
|
||||
The output should eq 110
|
||||
End
|
||||
End
|
||||
|
||||
Describe '2: before hook'
|
||||
setup1() { value1=10; }
|
||||
setup2() { value2=20; }
|
||||
Before 'setup1' 'setup2'
|
||||
|
||||
add_values() {
|
||||
echo "$((value1 + value2))"
|
||||
}
|
||||
|
||||
It 'can register multiple'
|
||||
When call add_values
|
||||
The output should eq 30
|
||||
End
|
||||
End
|
||||
|
||||
Describe '3: before hook'
|
||||
Before 'value=10'
|
||||
|
||||
echo_value() { echo "$value"; }
|
||||
|
||||
It 'can also specify code instead of function'
|
||||
When call echo_value
|
||||
The output should eq 10
|
||||
End
|
||||
End
|
||||
|
||||
Describe '4: before hook'
|
||||
setup() { false; } # setup fails
|
||||
Before 'setup'
|
||||
echo_ok() { echo ok; }
|
||||
|
||||
It 'is fails because before hook fails'
|
||||
When call echo_ok
|
||||
The output should eq 'ok'
|
||||
End
|
||||
|
||||
# This behavior can be used to verify initialization of before hook.
|
||||
End
|
||||
|
||||
Describe '5: after hook'
|
||||
cleanup() { :; } # clean up something
|
||||
Before 'cleanup'
|
||||
|
||||
It 'is called after execute example'
|
||||
When call echo ok
|
||||
The output should eq 'ok'
|
||||
End
|
||||
End
|
||||
End
|
||||
Reference in New Issue
Block a user