feat: implement 5-step validation pipeline #315
No reviewers
Labels
No labels
Blocked
Duplicate
MoSCoW/Could Have
MoSCoW/Must Have
MoSCoW/Should Have
Points/1
Points/13
Points/2
Points/21
Points/3
Points/5
Points/8
Priority/Backlog
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
State/Completed
State/In progress
State/In review
State/Paused
State/Unverified
State/Verified
State/Wont Do
Type/Bug
Type/Epic
Type/Feature
Type/Legendary
Type/Task
Type/Testing
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: aethyr/Aethyr#315
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/m1-validation-pipeline"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implement a 5-step validation pipeline for processing raw player input as specified in issue #293.
Changes
New Files
lib/aethyr/core/input_handlers/validation/validation_pipeline.rb- Main pipeline orchestratorlib/aethyr/core/input_handlers/validation/tokenizer.rb- Step 1: Split input respecting quoted stringslib/aethyr/core/input_handlers/validation/param_matcher.rb- Step 2: Map tokens to params by positionlib/aethyr/core/input_handlers/validation/type_checker.rb- Step 3: Validate types (primitives + mark refs)lib/aethyr/core/input_handlers/validation/reference_resolver.rb- Step 4: Resolve game object referenceslib/aethyr/core/input_handlers/validation/result_builder.rb- Step 5: Build ValidatedParams or ErrorListlib/aethyr/core/input_handlers/validation/validated_params.rb- Hash-like validated params resultlib/aethyr/core/input_handlers/validation/error_list.rb- Collection of validation errorsTesting
tests/unit/validation_pipeline.feature- 54 scenarios covering all pipeline componentstests/integration/validation_pipeline_integration.feature- 15 scenarios for end-to-end validationKey Features
ValidationPipeline.run(command_class, raw_input, context)returnsValidatedParamsorErrorListTesting Results
Dependencies
This PR builds on #292 (Parameter DSL) which provides
ParamDefinitionandParameterDSL.Closes #293
7036d7885btocc0d68e133cc0d68e133tob0a2c07905b0a2c07905to6d0877eecc