mirror of
https://github.com/ivuorinen/tree-sitter-shellspec.git
synced 2026-01-26 11:43:59 +00:00
- 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
78 lines
1.6 KiB
Bash
78 lines
1.6 KiB
Bash
#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
|