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:
2025-09-12 18:18:08 +03:00
parent 12d20a17b4
commit c8ba576b4e
77 changed files with 433271 additions and 242 deletions

View File

@@ -0,0 +1,35 @@
#shellcheck shell=sh
# Sometime, functions are defined in a single shell script.
# You will want to test it. but you do not want to run the script.
# You want to test only the function, right?
Describe 'sourced return example'
Include ./count_lines.sh
Example 'test cpunum.sh with stubbed cat /cpu/info'
Data
#|1
#|2
#|3
#|4
#|5
End
When call count_lines
The stdout should eq 5
End
Example 'test cpunum.sh with stubbed cat /cpu/info'
Data data
data() {
%putsn "line1"
%putsn "line2"
%putsn "line3"
%putsn "line4"
%puts "line5 (without newline)"
}
When call count_lines
The stdout should eq 5
End
End