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

@@ -1,38 +1,44 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
about: Report a parsing issue or bug in tree-sitter-shellspec
title: "[BUG] "
labels: bug
assignees: ivuorinen
---
**Describe the bug**
A clear and concise description of what the bug is.
A clear and concise description of the parsing issue or bug.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**ShellSpec code that doesn't parse correctly**
Please provide the ShellSpec code that causes the issue:
**Expected behavior**
A clear and concise description of what you expected to happen.
```shellspec
# Paste your ShellSpec code here
```
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Expected parsing behavior**
A clear description of how the code should be parsed or what syntax highlighting you expected.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Actual behavior**
What actually happens when the parser encounters this code? Include any error messages.
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Environment:**
**Additional context**
Add any other context about the problem here.
- OS: [e.g. Linux, macOS, Windows]
- Editor: [e.g. Neovim, VS Code, Emacs]
- tree-sitter-shellspec version: [e.g. 0.1.0]
- tree-sitter version: [e.g. 0.20.0]
- ShellSpec version: [e.g. 0.28.1]
**Tree-sitter parse output (if applicable)**
If you can run `tree-sitter parse`, please include the output:
```text
# tree-sitter parse output here
```
## Additional context
- Is this code from a real ShellSpec test file?
- Does the code work correctly with the ShellSpec test runner?
- Any other context that might help debug the issue.

View File

@@ -1,20 +1,32 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
about: Suggest a grammar enhancement or new feature for tree-sitter-shellspec
title: "[FEATURE] "
labels: enhancement
assignees: ivuorinen
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Is your feature request related to a ShellSpec parsing issue?**
A clear description of what ShellSpec syntax is not currently supported. Ex. "Data blocks with :expand modifier are not parsed correctly"
**ShellSpec syntax example**
Please provide an example of the ShellSpec syntax you'd like to see supported:
```shellspec
# Example ShellSpec code that should be supported
```
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
A clear description of how this syntax should be parsed or highlighted.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Current behavior**
How does the parser currently handle this syntax? (if at all)
**Additional context**
Add any other context or screenshots about the feature request here.
**Use case**
Why is this syntax important? How commonly is it used in ShellSpec tests?
## Additional context
- Link to ShellSpec documentation for this feature (if available)
- Examples from real-world ShellSpec test suites
- Any other context or screenshots about the feature request

63
.github/ISSUE_TEMPLATE/grammar_issue.md vendored Normal file
View File

@@ -0,0 +1,63 @@
---
name: Grammar Issue
about: Report a specific grammar parsing problem or conflict
title: "[GRAMMAR] "
labels: grammar, bug
assignees: ivuorinen
---
## Grammar Issue Type
- [ ] Parsing error (code doesn't parse at all)
- [ ] Incorrect parse tree structure
- [ ] Grammar conflicts during generation
- [ ] Performance issue with large files
- [ ] Integration issue with tree-sitter-bash
## ShellSpec code causing the issue
```shellspec
# Paste the problematic ShellSpec code here
```
### Current parse tree output
If you can run `tree-sitter parse`, please include the current output:
```text
# Current parse tree here
```
### Expected parse tree structure
Describe or show what the parse tree should look like:
```text
# Expected parse tree structure here
```
### Grammar generation output
If this causes issues during `npm run generate`, include any conflict warnings or errors:
```text
# Grammar generation output here
```
## Environment
- tree-sitter-shellspec version: [e.g. 0.1.0]
- tree-sitter CLI version: [e.g. 0.20.8]
- Node.js version: [e.g. 18.17.0]
- OS: [e.g. macOS 13.5]
## Impact
- How does this affect syntax highlighting?
- Does it break editor functionality?
- Is this blocking real-world usage?
## Additional context
- Related to specific ShellSpec features?
- Reproducible with minimal example?
- Any workarounds discovered?