Skip to content

fix: prevent silent failures on invalid placeholder syntax#237

Merged
sushant-suse merged 3 commits intoopenSUSE:mainfrom
sushant-suse:issue#233
Apr 29, 2026
Merged

fix: prevent silent failures on invalid placeholder syntax#237
sushant-suse merged 3 commits intoopenSUSE:mainfrom
sushant-suse:issue#233

Conversation

@sushant-suse
Copy link
Copy Markdown
Collaborator

Fixes #233

What changed:
Added strict syntax validation for configuration placeholders. The application will now explicitly raise an error when it encounters malformed or orphaned curly braces (like {server.name or }} hello {{), instead of silently leaving them unresolved.

How it works:

  • Introduced PlaceholderSyntaxError.
  • Added _validate_brace_syntax to the PlaceholderResolver to track brace pairs mathematically.
  • Updated AppConfig and EnvConfig Pydantic models to catch and format the new exception for the CLI.
  • Added unit tests to ensure missing start/end braces and inverted escapes are properly caught.

…ders

Signed-off-by: sushant-suse <sushant.gaurav@suse.com>
Signed-off-by: sushant-suse <sushant.gaurav@suse.com>
@sushant-suse sushant-suse requested a review from tomschr April 29, 2026 10:34
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 29, 2026

Coverage Report

For commit cb0f13c

Click to expand Coverage Report
  Name                                           Stmts   Miss Branch BrPart  Cover
  --------------------------------------------------------------------------------
+ src/docbuild/models/deliverable.py               180      1     22      0  99.5%
+ src/docbuild/cli/cmd_check/process.py             58      0     22      1  98.8%
+ src/docbuild/models/manifest.py                  111      1     12      1  98.4%
+ src/docbuild/utils/pidlock.py                     79      1     14      1  97.8%
+ src/docbuild/cli/cmd_config/list.py               26      0      8      1  97.1%
+ src/docbuild/cli/cmd_validate/process.py         178      5     52      4  96.1%
+ src/docbuild/cli/callback.py                      35      0     10      2  95.6%
+ src/docbuild/utils/concurrency.py                 69      3     18      1  95.4%
+ src/docbuild/cli/cmd_cli.py                      110      3     16      3  95.2%
- src/docbuild/config/xml/stitch.py                 47      5     12      0  88.1%
- src/docbuild/cli/cmd_metadata/metaprocess.py     215     26     66     13  82.6%
- src/docbuild/cli/cmd_config/validate.py           21      2     12      3  78.8%
- src/docbuild/cli/cmd_check/__init__.py            18      5      2      0  65.0%
- src/docbuild/cli/cmd_build/__init__.py            13      5      0      0  61.5%
- src/docbuild/cli/cmd_metadata/__init__.py         27     10      2      0  58.6%
  --------------------------------------------------------------------------------
+ TOTAL                                           3068     67    746     30  97.0%
  
  47 files skipped due to complete coverage.

Copy link
Copy Markdown
Contributor

@tomschr tomschr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work! 👍 I have only two questions. Maybe you've added two files by accident. I guess you want to remove them. 🙂

Thank you!

Comment thread src/docbuild/src.txt Outdated
Comment thread tests/data.txt Outdated
Signed-off-by: sushant-suse <sushant.gaurav@suse.com>
@sushant-suse sushant-suse requested a review from tomschr April 29, 2026 12:43
@sushant-suse sushant-suse merged commit dd5af05 into openSUSE:main Apr 29, 2026
9 checks passed
@sushant-suse sushant-suse deleted the issue#233 branch April 29, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incomplete placeholders does NOT lead to an error

2 participants