mirror of
https://github.com/ivuorinen/tree-sitter-shellspec.git
synced 2026-02-04 06:47:32 +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:
49
test/spec/06.scope_spec.sh
Normal file
49
test/spec/06.scope_spec.sh
Normal file
@@ -0,0 +1,49 @@
|
||||
#shellcheck shell=sh
|
||||
|
||||
# Each block (example group / example) runs within subshell.
|
||||
# It mean that it works like lexical scope.
|
||||
|
||||
Describe 'scope example'
|
||||
foo() { echo "foo"; } # It can call from anywhere within this example group
|
||||
|
||||
# By the way, you can only use shellspec DSL or define function here.
|
||||
# Of course it is possible to write freely within the defined function
|
||||
# but other code may breaks isolation of tests.
|
||||
|
||||
It 'calls "foo"'
|
||||
When call foo
|
||||
The output should eq 'foo'
|
||||
End
|
||||
|
||||
It 'defines "bar" function'
|
||||
bar() { echo "bar"; }
|
||||
When call bar
|
||||
The output should eq 'bar'
|
||||
End
|
||||
|
||||
It 'can not call "bar" function, because different scope'
|
||||
When call bar
|
||||
The status should be failure # probably status is 127
|
||||
The stderr should be present # probably stderr is "bar: not found"
|
||||
End
|
||||
|
||||
It 'redefines "foo" function'
|
||||
foo() { echo "FOO"; }
|
||||
When call foo
|
||||
The output should eq 'FOO'
|
||||
End
|
||||
|
||||
It 'calls "foo" function of outer scope (not previous example)'
|
||||
When call foo
|
||||
The output should eq 'foo'
|
||||
End
|
||||
|
||||
Describe 'sub block'
|
||||
foo() { echo "Foo"; }
|
||||
|
||||
It 'calls "foo" function of upper scope'
|
||||
When call foo
|
||||
The output should eq 'Foo'
|
||||
End
|
||||
End
|
||||
End
|
||||
Reference in New Issue
Block a user